From dc4df7d853da3e1d16023e89868a0fdf2b10f8ef Mon Sep 17 00:00:00 2001 From: shi_jq Date: Thu, 20 Mar 2025 17:30:43 +0800 Subject: [PATCH] =?UTF-8?q?[ref]=E5=90=8C=E6=AD=A5711?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../en/apc_if_srv/translate/apc_if_srv_en.mo | Bin 0 -> 2002 bytes .../en/apc_if_srv/translate/apc_if_srv_en.po | 78 + .../translate/app_bio_identify_srv_en.mo | Bin 0 -> 1192 bytes .../translate/app_bio_identify_srv_en.po | 51 + resource/en/app_fbd/translate/app_fbd_en.mo | Bin 0 -> 1003 bytes resource/en/app_fbd/translate/app_fbd_en.po | 40 + resource/en/db_his_mng_api/en.qm | Bin 0 -> 12694 bytes resource/en/db_his_mng_api/en.ts | 483 + resource/en/db_manager/en.qm | Bin 0 -> 50161 bytes resource/en/db_manager/en.ts | 2925 +++ resource/en/db_manager_api/en.qm | Bin 0 -> 28021 bytes resource/en/debug_tool/image/check.png | Bin 0 -> 651 bytes resource/en/debug_tool/image/check1.png | Bin 0 -> 692 bytes resource/en/debug_tool/image/down.png | Bin 0 -> 218 bytes resource/en/debug_tool/image/search.png | Bin 0 -> 768 bytes resource/en/debug_tool/image/uncheck.png | Bin 0 -> 114 bytes resource/en/debug_tool/image/uncheck1.png | Bin 0 -> 432 bytes resource/en/debug_tool/translate/en.qm | Bin 0 -> 69578 bytes resource/en/debug_tool/translate/en.ts | 5344 +++++ .../en/fbd_editor/translate/fbd_editor_en.qm | Bin 0 -> 115053 bytes .../en/fbd_editor/translate/fbd_editor_en.ts | 6128 +++++ .../en/fbd_editor/translate/platform_en.qm | Bin 0 -> 44549 bytes .../en/fbd_editor/translate/platform_en.ts | 5941 +++++ .../en/fbd_editor/translate/product_en.qm | Bin 0 -> 53155 bytes .../en/fbd_editor/translate/product_en.ts | 5955 +++++ resource/en/fes/translate/fes_en.mo | Bin 0 -> 23485 bytes resource/en/fes/translate/fes_en.po | 1916 ++ resource/en/gui/icon/hmi/DataOpt.png | Bin 0 -> 805 bytes resource/en/gui/icon/hmi/DevRealData.png | Bin 0 -> 795 bytes resource/en/gui/icon/hmi/HangPanel.png | Bin 0 -> 716 bytes resource/en/gui/icon/hmi/Media.png | Bin 0 -> 616 bytes resource/en/gui/icon/hmi/PixelMap.png | Bin 0 -> 350 bytes resource/en/gui/icon/hmi/PolymorphicText.png | Bin 0 -> 314 bytes .../en/gui/icon/hmi/accidentRecollect.png | Bin 0 -> 854 bytes resource/en/gui/icon/hmi/alarm.png | Bin 0 -> 438 bytes resource/en/gui/icon/hmi/alarmAnalysis.png | Bin 0 -> 1298 bytes resource/en/gui/icon/hmi/alarmManagement.png | Bin 0 -> 1281 bytes resource/en/gui/icon/hmi/alarmShielding.png | Bin 0 -> 1100 bytes resource/en/gui/icon/hmi/alarmStatistics.png | Bin 0 -> 1111 bytes resource/en/gui/icon/hmi/alignBottom.png | Bin 0 -> 321 bytes resource/en/gui/icon/hmi/alignHorizontal.png | Bin 0 -> 361 bytes resource/en/gui/icon/hmi/alignLeft.png | Bin 0 -> 333 bytes resource/en/gui/icon/hmi/alignRight.png | Bin 0 -> 334 bytes resource/en/gui/icon/hmi/alignTop.png | Bin 0 -> 326 bytes resource/en/gui/icon/hmi/alignVertical.png | Bin 0 -> 395 bytes resource/en/gui/icon/hmi/align_bottom.png | Bin 0 -> 321 bytes resource/en/gui/icon/hmi/batchCreate.png | Bin 0 -> 430 bytes resource/en/gui/icon/hmi/besselCurve.png | Bin 0 -> 454 bytes resource/en/gui/icon/hmi/blockInformation.png | Bin 0 -> 814 bytes resource/en/gui/icon/hmi/blq.png | Bin 0 -> 284 bytes resource/en/gui/icon/hmi/bottom.png | Bin 0 -> 305 bytes resource/en/gui/icon/hmi/brokenLine.png | Bin 0 -> 192 bytes resource/en/gui/icon/hmi/browse.png | Bin 0 -> 471 bytes resource/en/gui/icon/hmi/button.png | Bin 0 -> 294 bytes resource/en/gui/icon/hmi/byq2.png | Bin 0 -> 499 bytes resource/en/gui/icon/hmi/byq3.png | Bin 0 -> 796 bytes resource/en/gui/icon/hmi/byq4.png | Bin 0 -> 849 bytes resource/en/gui/icon/hmi/cam.png | Bin 0 -> 300 bytes resource/en/gui/icon/hmi/cam2.png | Bin 0 -> 766 bytes resource/en/gui/icon/hmi/cfd.png | Bin 0 -> 322 bytes resource/en/gui/icon/hmi/checkAll.png | Bin 0 -> 328 bytes resource/en/gui/icon/hmi/checkbox.png | Bin 0 -> 457 bytes resource/en/gui/icon/hmi/circle.png | Bin 0 -> 447 bytes resource/en/gui/icon/hmi/circularArc.png | Bin 0 -> 356 bytes resource/en/gui/icon/hmi/combine.png | Bin 0 -> 322 bytes resource/en/gui/icon/hmi/combobox.png | Bin 0 -> 181 bytes .../en/gui/icon/hmi/coordinationCurve.png | Bin 0 -> 776 bytes resource/en/gui/icon/hmi/copy.png | Bin 0 -> 337 bytes resource/en/gui/icon/hmi/curve.png | Bin 0 -> 346 bytes resource/en/gui/icon/hmi/cut.png | Bin 0 -> 548 bytes resource/en/gui/icon/hmi/date.png | Bin 0 -> 269 bytes resource/en/gui/icon/hmi/db.png | Bin 0 -> 304 bytes resource/en/gui/icon/hmi/ddzsq.png | Bin 0 -> 426 bytes resource/en/gui/icon/hmi/delete.png | Bin 0 -> 301 bytes resource/en/gui/icon/hmi/devInfo.png | Bin 0 -> 347 bytes resource/en/gui/icon/hmi/discombine.png | Bin 0 -> 307 bytes resource/en/gui/icon/hmi/dj.png | Bin 0 -> 418 bytes resource/en/gui/icon/hmi/dkq.png | Bin 0 -> 345 bytes resource/en/gui/icon/hmi/dl.png | Bin 0 -> 2902 bytes resource/en/gui/icon/hmi/dlq.png | Bin 0 -> 161 bytes resource/en/gui/icon/hmi/dongzuo.png | Bin 0 -> 256 bytes resource/en/gui/icon/hmi/dr.png | Bin 0 -> 468 bytes resource/en/gui/icon/hmi/dr1.png | Bin 0 -> 176 bytes resource/en/gui/icon/hmi/drdqdz.png | Bin 0 -> 390 bytes resource/en/gui/icon/hmi/dydlq.png | Bin 0 -> 331 bytes resource/en/gui/icon/hmi/dykg.png | Bin 0 -> 278 bytes resource/en/gui/icon/hmi/dz.png | Bin 0 -> 302 bytes resource/en/gui/icon/hmi/dzz.png | Bin 0 -> 288 bytes resource/en/gui/icon/hmi/ellipse.png | Bin 0 -> 369 bytes resource/en/gui/icon/hmi/equHorizontal.png | Bin 0 -> 247 bytes resource/en/gui/icon/hmi/equVertical.png | Bin 0 -> 271 bytes resource/en/gui/icon/hmi/equalLarge.png | Bin 0 -> 428 bytes resource/en/gui/icon/hmi/equalSmall.png | Bin 0 -> 389 bytes resource/en/gui/icon/hmi/event.png | Bin 0 -> 418 bytes resource/en/gui/icon/hmi/faultRecording.png | Bin 0 -> 555 bytes resource/en/gui/icon/hmi/fbdEditor.png | Bin 0 -> 602 bytes resource/en/gui/icon/hmi/fdj.png | Bin 0 -> 366 bytes resource/en/gui/icon/hmi/fhkg.png | Bin 0 -> 295 bytes resource/en/gui/icon/hmi/fileSync.png | Bin 0 -> 396 bytes resource/en/gui/icon/hmi/fldkq.png | Bin 0 -> 710 bytes resource/en/gui/icon/hmi/gaojing.png | Bin 0 -> 371 bytes resource/en/gui/icon/hmi/glkg.png | Bin 0 -> 279 bytes resource/en/gui/icon/hmi/gp.png | Bin 0 -> 366 bytes resource/en/gui/icon/hmi/grid.png | Bin 0 -> 163 bytes resource/en/gui/icon/hmi/gzp.png | Bin 0 -> 272 bytes resource/en/gui/icon/hmi/hgq.png | Bin 0 -> 327 bytes resource/en/gui/icon/hmi/historicalData.png | Bin 0 -> 760 bytes resource/en/gui/icon/hmi/horizontalMirror.png | Bin 0 -> 347 bytes resource/en/gui/icon/hmi/hotkey.png | Bin 0 -> 221 bytes resource/en/gui/icon/hmi/jcq.png | Bin 0 -> 338 bytes resource/en/gui/icon/hmi/jd.png | Bin 0 -> 244 bytes resource/en/gui/icon/hmi/jddz.png | Bin 0 -> 371 bytes resource/en/gui/icon/hmi/jdyf.png | Bin 0 -> 395 bytes resource/en/gui/icon/hmi/jfc.png | Bin 0 -> 274 bytes resource/en/gui/icon/hmi/jx.png | Bin 0 -> 366 bytes resource/en/gui/icon/hmi/kgj.png | Bin 0 -> 378 bytes resource/en/gui/icon/hmi/kx.png | Bin 0 -> 480 bytes resource/en/gui/icon/hmi/label.png | Bin 0 -> 280 bytes resource/en/gui/icon/hmi/levelDown.png | Bin 0 -> 310 bytes resource/en/gui/icon/hmi/levelUp.png | Bin 0 -> 312 bytes resource/en/gui/icon/hmi/link.png | Bin 0 -> 1141 bytes resource/en/gui/icon/hmi/linkageControl.png | Bin 0 -> 917 bytes resource/en/gui/icon/hmi/list.png | Bin 0 -> 264 bytes resource/en/gui/icon/hmi/ljbyq.png | Bin 0 -> 467 bytes resource/en/gui/icon/hmi/ljbyq1.png | Bin 0 -> 533 bytes resource/en/gui/icon/hmi/ljbyq2.png | Bin 0 -> 512 bytes resource/en/gui/icon/hmi/lock.png | Bin 0 -> 323 bytes resource/en/gui/icon/hmi/menu.png | Bin 0 -> 369 bytes resource/en/gui/icon/hmi/ml.png | Bin 0 -> 468 bytes resource/en/gui/icon/hmi/mlbzt.png | Bin 0 -> 208 bytes resource/en/gui/icon/hmi/mx.png | Bin 0 -> 141 bytes resource/en/gui/icon/hmi/new.png | Bin 0 -> 336 bytes resource/en/gui/icon/hmi/open.png | Bin 0 -> 369 bytes resource/en/gui/icon/hmi/operationTicket.png | Bin 0 -> 770 bytes resource/en/gui/icon/hmi/paste.png | Bin 0 -> 364 bytes resource/en/gui/icon/hmi/pie.png | Bin 0 -> 464 bytes resource/en/gui/icon/hmi/plugin.png | Bin 0 -> 419 bytes resource/en/gui/icon/hmi/pollingManage.png | Bin 0 -> 879 bytes resource/en/gui/icon/hmi/polygon.png | Bin 0 -> 319 bytes resource/en/gui/icon/hmi/protectConsValue.png | Bin 0 -> 1205 bytes resource/en/gui/icon/hmi/publish.png | Bin 0 -> 442 bytes resource/en/gui/icon/hmi/qybyq.png | Bin 0 -> 548 bytes resource/en/gui/icon/hmi/qybyq1.png | Bin 0 -> 3428 bytes resource/en/gui/icon/hmi/radiobutton.png | Bin 0 -> 431 bytes resource/en/gui/icon/hmi/rectangular.png | Bin 0 -> 158 bytes resource/en/gui/icon/hmi/redo.png | Bin 0 -> 538 bytes resource/en/gui/icon/hmi/report.png | Bin 0 -> 270 bytes resource/en/gui/icon/hmi/run.png | Bin 0 -> 405 bytes resource/en/gui/icon/hmi/save.png | Bin 0 -> 253 bytes resource/en/gui/icon/hmi/saveAs.png | Bin 0 -> 356 bytes resource/en/gui/icon/hmi/sc.png | Bin 0 -> 291 bytes resource/en/gui/icon/hmi/sc_down.png | Bin 0 -> 15147 bytes resource/en/gui/icon/hmi/sc_up.png | Bin 0 -> 15133 bytes resource/en/gui/icon/hmi/scriptEditor.png | Bin 0 -> 429 bytes resource/en/gui/icon/hmi/seqControlManage.png | Bin 0 -> 266 bytes resource/en/gui/icon/hmi/sjbyq.png | Bin 0 -> 522 bytes resource/en/gui/icon/hmi/sjx.png | Bin 0 -> 328 bytes resource/en/gui/icon/hmi/spinbox.png | Bin 0 -> 326 bytes resource/en/gui/icon/hmi/stick.png | Bin 0 -> 243 bytes resource/en/gui/icon/hmi/straightLine.png | Bin 0 -> 227 bytes resource/en/gui/icon/hmi/tablewidget.png | Bin 0 -> 163 bytes resource/en/gui/icon/hmi/terminal.png | Bin 0 -> 420 bytes resource/en/gui/icon/hmi/text.png | Bin 0 -> 172 bytes resource/en/gui/icon/hmi/textInput.png | Bin 0 -> 277 bytes resource/en/gui/icon/hmi/textbox.png | Bin 0 -> 244 bytes resource/en/gui/icon/hmi/tiaozha.png | Bin 0 -> 433 bytes resource/en/gui/icon/hmi/time.png | Bin 0 -> 420 bytes resource/en/gui/icon/hmi/top.png | Bin 0 -> 288 bytes resource/en/gui/icon/hmi/topo.png | Bin 0 -> 300 bytes resource/en/gui/icon/hmi/travelBriefing.png | Bin 0 -> 665 bytes resource/en/gui/icon/hmi/treewidget.png | Bin 0 -> 230 bytes resource/en/gui/icon/hmi/trend.png | Bin 0 -> 393 bytes resource/en/gui/icon/hmi/trtczhkg.png | Bin 0 -> 341 bytes resource/en/gui/icon/hmi/txzc.png | Bin 0 -> 189 bytes resource/en/gui/icon/hmi/tyztxs.png | Bin 0 -> 407 bytes resource/en/gui/icon/hmi/undo.png | Bin 0 -> 415 bytes resource/en/gui/icon/hmi/userGroupManage.png | Bin 0 -> 1184 bytes resource/en/gui/icon/hmi/verticalMirror.png | Bin 0 -> 381 bytes resource/en/gui/icon/hmi/viewOff.png | Bin 0 -> 502 bytes resource/en/gui/icon/hmi/viewOn.png | Bin 0 -> 471 bytes resource/en/gui/icon/hmi/wgbc.png | Bin 0 -> 531 bytes resource/en/gui/icon/hmi/workTicket.png | Bin 0 -> 530 bytes resource/en/gui/icon/hmi/workforceManage.png | Bin 0 -> 835 bytes resource/en/gui/icon/hmi/xd.png | Bin 0 -> 301 bytes resource/en/gui/icon/hmi/xdc.png | Bin 0 -> 247 bytes resource/en/gui/icon/hmi/xl.png | Bin 0 -> 288 bytes resource/en/gui/icon/hmi/ybp.png | Bin 0 -> 450 bytes resource/en/gui/icon/hmi/yc.png | Bin 0 -> 359 bytes resource/en/gui/icon/hmi/yfjdzhkg.png | Bin 0 -> 336 bytes resource/en/gui/icon/hmi/yichang.png | Bin 0 -> 341 bytes resource/en/gui/icon/hmi/zlq.png | Bin 0 -> 438 bytes resource/en/gui/icon/hmi/zlq2.png | Bin 0 -> 354 bytes resource/en/gui/translate/icon_en.ts | 0 resource/en/gui/translate/platform_en.qm | Bin 0 -> 69772 bytes resource/en/gui/translate/platform_en.ts | 16878 ++++++++++++++ resource/en/gui/translate/product_en.qm | Bin 0 -> 181791 bytes resource/en/gui/translate/product_en.ts | 18766 ++++++++++++++++ .../translate/linkage_server_en.mo | Bin 0 -> 6946 bytes .../translate/linkage_server_en.po | 375 + resource/en/model_studio/icons/RTU.png | Bin 0 -> 394 bytes resource/en/model_studio/icons/alarm.png | Bin 0 -> 377 bytes resource/en/model_studio/icons/anquan.png | Bin 0 -> 316 bytes resource/en/model_studio/icons/app.png | Bin 0 -> 211 bytes resource/en/model_studio/icons/ats.png | Bin 0 -> 415 bytes resource/en/model_studio/icons/bas.png | Bin 0 -> 427 bytes resource/en/model_studio/icons/base.png | Bin 0 -> 285 bytes resource/en/model_studio/icons/baseinfo.png | Bin 0 -> 583 bytes resource/en/model_studio/icons/channel.png | Bin 0 -> 356 bytes resource/en/model_studio/icons/collection.png | Bin 0 -> 433 bytes resource/en/model_studio/icons/db.png | Bin 0 -> 304 bytes resource/en/model_studio/icons/define.png | Bin 0 -> 310 bytes resource/en/model_studio/icons/dept.png | Bin 0 -> 254 bytes resource/en/model_studio/icons/devSame.png | Bin 0 -> 368 bytes resource/en/model_studio/icons/devType.png | Bin 0 -> 376 bytes resource/en/model_studio/icons/device.png | Bin 0 -> 1766 bytes .../en/model_studio/icons/device_child.png | Bin 0 -> 259 bytes resource/en/model_studio/icons/dict.png | Bin 0 -> 546 bytes resource/en/model_studio/icons/fesCfg.png | Bin 0 -> 368 bytes resource/en/model_studio/icons/forward.png | Bin 0 -> 344 bytes resource/en/model_studio/icons/func.png | Bin 0 -> 310 bytes resource/en/model_studio/icons/generate.png | Bin 0 -> 444 bytes resource/en/model_studio/icons/icon2.gif | Bin 0 -> 1689 bytes resource/en/model_studio/icons/init.png | Bin 0 -> 378 bytes resource/en/model_studio/icons/msg.png | Bin 0 -> 306 bytes resource/en/model_studio/icons/network.png | Bin 0 -> 484 bytes resource/en/model_studio/icons/pa.png | Bin 0 -> 388 bytes resource/en/model_studio/icons/pic.png | Bin 0 -> 275 bytes resource/en/model_studio/icons/pis.png | Bin 0 -> 392 bytes resource/en/model_studio/icons/power.png | Bin 0 -> 692 bytes resource/en/model_studio/icons/report.png | Bin 0 -> 198 bytes resource/en/model_studio/icons/role.png | Bin 0 -> 406 bytes resource/en/model_studio/icons/temp.png | Bin 0 -> 373 bytes resource/en/model_studio/icons/tempType.png | Bin 0 -> 364 bytes resource/en/model_studio/icons/tv_icon.png | Bin 0 -> 349 bytes resource/en/model_studio/icons/user.png | Bin 0 -> 445 bytes resource/en/model_studio/icons/userGroup.png | Bin 0 -> 393 bytes .../setting/fileLogic/configcheck.xml | 430 + .../model_studio/setting/style/fesTemp.xlsx | Bin 0 -> 18311 bytes .../model_studio/setting/style/kbdTable.qss | 3 + .../setting/style/psc3000Temp.xlsx | Bin 0 -> 12913 bytes .../model_studio/setting/style/scrollBar.qss | 71 + .../en/model_studio/setting/style/toolBar.qss | 3 + .../en/model_studio/setting/table/ACCUML.xml | 39 + .../setting/table/ACCUML_LIMIT_INFO.xml | 27 + .../setting/table/ACCUML_MAP_TO_FES.xml | 19 + .../setting/table/ACCUML_TEMP_DEFINE.xml | 44 + .../setting/table/ACS_DEVICE_INFO.xml | 12 + .../setting/table/ADD_POINT_FROM_FES_TEMP.xml | 8 + .../setting/table/ALARM_ACTION_DEFINE.xml | 8 + .../setting/table/ALARM_KEYWORD_DEFINE.xml | 8 + .../setting/table/ALARM_LEVEL_DEFINE.xml | 11 + .../setting/table/ALARM_LEVEL_SOUND_DEF.xml | 8 + .../setting/table/ALARM_MANNER_DEFINE.xml | 12 + .../setting/table/ALARM_SMS_CONFIG.xml | 13 + .../setting/table/ALARM_SMS_DEVICE.xml | 14 + .../setting/table/ALARM_SMS_RULE.xml | 11 + .../setting/table/ALARM_STATUS_DEFINE.xml | 11 + .../setting/table/ALARM_STATUS_DIG_SET.xml | 9 + .../setting/table/ALARM_TYPE_DEFINE.xml | 9 + .../en/model_studio/setting/table/ANALOG.xml | 39 + .../setting/table/ANALOG_CONTROL.xml | 21 + .../setting/table/ANALOG_LIMIT_INFO.xml | 28 + .../setting/table/ANALOG_MAP_TO_FES.xml | 22 + .../setting/table/ANALOG_OVER_STATISTICS.xml | 26 + .../setting/table/ANALOG_TEMP_DEFINE.xml | 54 + .../model_studio/setting/table/APC_ANALOG.xml | 12 + .../setting/table/APC_DIGITAL.xml | 10 + .../setting/table/ATS_FES_LOCATION_INFO.xml | 7 + .../setting/table/ATS_FES_PLATFORM_INFO.xml | 8 + .../setting/table/BACKGROUND_X_FES_ACCUML.xml | 18 + .../setting/table/BACKGROUND_X_FES_ANALOG.xml | 18 + .../setting/table/BACKGROUND_X_FES_DIGTAL.xml | 18 + .../setting/table/BAS_CRAFT_DEF.xml | 8 + .../setting/table/BAS_MODE_DEF.xml | 11 + .../setting/table/BAS_MODE_TYPE.xml | 7 + .../table/BAS_TIMETABLE_CTRL_PARAM.xml | 15 + .../setting/table/BAS_TIMETABLE_DEF.xml | 9 + .../setting/table/BAS_TIMETABLE_INFO.xml | 10 + .../setting/table/BAS_TIMETABLE_SCHEDULE.xml | 18 + .../setting/table/CALC_FUNC_DEF.xml | 10 + .../setting/table/CALC_GROUP_DEF.xml | 8 + .../setting/table/CALC_IN_PARA.xml | 12 + .../setting/table/CALC_OUT_PARA.xml | 11 + .../setting/table/CALC_PARA_DEF.xml | 8 + .../setting/table/CCTV_CAMERA_INFO.xml | 17 + .../setting/table/CCTV_MONITOR_INFO.xml | 15 + .../setting/table/CCTV_ORIENTATION.xml | 11 + .../setting/table/CCTV_SEPARATOR_INFO.xml | 45 + .../model_studio/setting/table/DEV_GROUP.xml | 17 + .../model_studio/setting/table/DEV_INFO.xml | 34 + .../setting/table/DEV_INFO_FOR_EMPTY_ADD.xml | 34 + .../setting/table/DEV_TEMP_DEF.xml | 13 + .../setting/table/DEV_TEMP_GROUP.xml | 7 + .../setting/table/DEV_TRIGGER_FLAG.xml | 11 + .../setting/table/DEV_TYPE_DEF.xml | 9 + .../setting/table/DEV_TYPE_DEF_61850.xml | 11 + .../table/DICT_MENU_INFO_PNT_CLASS.xml | 9 + .../table/DICT_MENU_INFO_PNT_CLASS.xml.bak | 9 + .../setting/table/DICT_POINT_TYPE.xml | 32 + .../table/DICT_POINT_TYPE_FOR_POINT_ADD.xml | 32 + .../setting/table/DICT_STATE_TEXT_INFO.xml | 11 + .../setting/table/DICT_TEXT_DEFINE.xml | 9 + .../setting/table/DICT_UNIT_INFO.xml | 8 + .../setting/table/DICT_VOL_LEVEL.xml | 11 + .../en/model_studio/setting/table/DIGITAL.xml | 73 + .../setting/table/DIGITAL_CONTROL.xml | 24 + .../setting/table/DIGITAL_MAP_TO_FES.xml | 22 + .../setting/table/DIGITAL_TEMP_DEFINE.xml | 59 + .../setting/table/FAULT_RECALL_COND_DEF.xml | 11 + .../setting/table/FBD_GROUP_INFO.xml | 16 + .../model_studio/setting/table/FES_ACCUML.xml | 31 + .../model_studio/setting/table/FES_ANALOG.xml | 41 + .../setting/table/FES_ANALOG_CTRL.xml | 29 + .../setting/table/FES_CHANNEL_PARA.xml | 50 + .../model_studio/setting/table/FES_CONST.xml | 38 + .../setting/table/FES_CONST_TEMP.xml | 32 + .../setting/table/FES_DATA_BLOCK.xml | 31 + .../setting/table/FES_DATA_BLOCK_TEMP.xml | 26 + .../setting/table/FES_DEV_ACCUNL_TEMP_DEF.xml | 49 + .../table/FES_DEV_ANALOG_CTRL_TEMP_DEF.xml | 49 + .../setting/table/FES_DEV_ANALOG_TEMP_DEF.xml | 49 + .../table/FES_DEV_DIGITAL_CTRL_TEMP_DEF.xml | 49 + .../table/FES_DEV_DIGITAL_TEMP_DEF.xml | 49 + .../setting/table/FES_DEV_INFO.xml | 16 + .../setting/table/FES_DEV_INFO_FOR_ADD.xml | 16 + .../table/FES_DEV_INFO_FOR_EMPTY_TEMP.xml | 16 + .../table/FES_DEV_MIX_CTRL_TEMP_DEF.xml | 49 + .../setting/table/FES_DEV_MIX_TEMP_DEF.xml | 49 + .../setting/table/FES_DEV_PT_TEMP_DEF.xml | 49 + .../setting/table/FES_DEV_TEMP_DEF.xml | 12 + .../table/FES_DEV_TEMP_DEF_FOR_ADD.xml | 12 + .../table/FES_DEV_TEMP_DEF_FOR_IMPORT.xml | 7 + .../setting/table/FES_DEV_TYPE_DEF.xml | 11 + .../setting/table/FES_DIGITAL.xml | 34 + .../setting/table/FES_DIGITAL_CTRL.xml | 35 + .../setting/table/FES_FORWARDING_ACCUML.xml | 21 + .../setting/table/FES_FORWARDING_ANAOLG.xml | 23 + .../table/FES_FORWARDING_ANAOLG_CTRL.xml | 19 + .../setting/table/FES_FORWARDING_DIGITAL.xml | 20 + .../table/FES_FORWARDING_DIGITAL_CTRL.xml | 19 + .../en/model_studio/setting/table/FES_MIX.xml | 32 + .../setting/table/FES_MIX_CTRL.xml | 29 + .../setting/table/FES_PROTOCOL.xml | 10 + .../setting/table/FES_RTU_PARA.xml | 31 + .../setting/table/FORWARD_ACCUML.xml | 31 + .../setting/table/FORWARD_ANALOG.xml | 33 + .../setting/table/FORWARD_ANALOG_CTRL.xml | 31 + .../setting/table/FORWARD_DIGITAL_CTRL.xml | 39 + .../setting/table/FORWARD_DIGITAL_DOUBLE.xml | 31 + .../setting/table/FORWARD_DIGITAL_SINGLE.xml | 31 + .../setting/table/FORWARD_MIX.xml | 31 + .../setting/table/FORWARD_MIX_CTRL.xml | 30 + .../setting/table/HIS_WORK_TICKET.xml | 8 + .../setting/table/HMI_TYPE_INFO.xml | 10 + .../setting/table/IA_DISPOSAL_PLAN.xml | 8 + .../setting/table/INVALID_SYS_TABLE_INFO.xml | 17 + .../setting/table/LINKAGE_ACTION.xml | 13 + .../setting/table/LINKAGE_ACTION_FOR_BAS.xml | 12 + .../setting/table/LINKAGE_ACTION_FOR_MSG.xml | 12 + .../setting/table/LINKAGE_ACTION_FOR_PA.xml | 19 + .../setting/table/LINKAGE_ACTION_FOR_PIS.xml | 19 + .../table/LINKAGE_ACTION_FOR_PSCADA.xml | 12 + .../table/LINKAGE_ACTION_FOR_PUSH_PIC.xml | 12 + .../setting/table/LINKAGE_DEFINE.xml | 10 + .../setting/table/LINKAGE_FUNCTION.xml | 17 + .../setting/table/LINKAGE_FUNCTION_LIST.xml | 7 + .../setting/table/LINKAGE_SETTING.xml | 14 + .../LINKAGE_SETTING_FOR_ADD_AND_MODIFY.xml | 14 + .../setting/table/LOAD_STAT_DEFINE.xml | 17 + .../en/model_studio/setting/table/MIX.xml | 50 + .../setting/table/MIX_CONTROL.xml | 22 + .../setting/table/MIX_MAP_TO_FES.xml | 20 + .../model_studio/setting/table/MIX_METHOD.xml | 9 + .../setting/table/MIX_TEMP_DEFINE.xml | 41 + .../setting/table/OPT_CTRL_ACT_DEFINE.xml | 14 + .../setting/table/OPT_HANDOVER_GRP.xml | 17 + .../setting/table/OPT_INTERLOCK_DEFINE.xml | 9 + .../setting/table/OPT_INTERLOCK_PARA.xml | 31 + .../table/OPT_INTERLOCK_PARA_FOR_SELECT.xml | 28 + .../setting/table/OPT_SHIELD_DEFINE.xml | 14 + .../setting/table/OPT_TOKEN_DEFINE.xml | 18 + .../setting/table/PA_AREA_INFO.xml | 7 + .../setting/table/PA_AUDIO_INFO.xml | 9 + .../setting/table/PA_BROADCAST_GROUP.xml | 9 + .../setting/table/PA_CTRL_PARAM.xml | 7 + .../setting/table/PA_LOCATION_AREA_DEF.xml | 7 + .../setting/table/PA_LOCATION_SEQ_DEF.xml | 7 + .../setting/table/PA_OPERATOR_DEF.xml | 7 + .../setting/table/PA_OPERATOR_MAP.xml | 7 + .../setting/table/PA_TIMED_AUDIO.xml | 20 + .../setting/table/PIS_AREA_INFO.xml | 7 + .../setting/table/PIS_CTRL_PARAM.xml | 7 + .../setting/table/PIS_DISPLAY_INFO.xml | 17 + .../setting/table/PIS_FES_LOCATION_INFO.xml | 7 + .../setting/table/PIS_LOCATION_AREA_DEF.xml | 7 + .../setting/table/PIS_MESSAGE_INFO.xml | 9 + .../setting/table/PSC3000_FES_TEMP.xml | 7 + .../setting/table/REGION_INFO.xml | 10 + .../setting/table/REPORT_TYPE_INFO.xml | 9 + .../setting/table/RM_DEPT_DEF.xml | 9 + .../setting/table/RM_NORM_FUNC_DEF.xml | 9 + .../setting/table/RM_ROLE_DB_INFO.xml | 8 + .../setting/table/RM_ROLE_DEF.xml | 24 + .../setting/table/RM_ROLE_HMI_INFO.xml | 23 + .../setting/table/RM_ROLE_SPEF_REG.xml | 11 + .../setting/table/RM_SECURITY_DEF.xml | 11 + .../setting/table/RM_SPCL_FUNC_DEF.xml | 9 + .../setting/table/RM_USERG_DB_INFO.xml | 8 + .../setting/table/RM_USERG_DEF.xml | 31 + .../setting/table/RM_USERG_HMI_INFO.xml | 24 + .../setting/table/RM_USERG_RSP_INFO.xml | 20 + .../setting/table/RM_USER_DEF.xml | 55 + .../setting/table/RT_COLUMN_MODE.xml | 17 + .../setting/table/RT_TABLE_MODE.xml | 14 + .../model_studio/setting/table/SAFETY_DAY.xml | 8 + .../setting/table/SAMPLE_DEFINE.xml | 16 + .../setting/table/SEQUENCE_ACTION.xml | 13 + .../setting/table/SEQUENCE_DEFINE.xml | 10 + .../setting/table/SEQUENCE_FUNCTION.xml | 14 + .../setting/table/SEQUENCE_SETTING.xml | 10 + .../setting/table/STAT_INST_DEF.xml | 20 + .../setting/table/STAT_INST_PARA_GRP.xml | 11 + .../setting/table/STAT_INST_PARA_POINT.xml | 14 + .../table/STAT_INST_PARA_POINT_FOR_ADD.xml | 14 + .../setting/table/STAT_INST_PARA_TIME.xml | 22 + .../table/STAT_INST_PARA_TIME_FOR_ADD.xml | 22 + .../setting/table/STAT_INST_RET_GRP.xml | 11 + .../setting/table/STAT_INST_RET_PARA.xml | 17 + .../table/STAT_INST_RET_PARA_FOR_ADD.xml | 16 + .../setting/table/STAT_LINK_DEF.xml | 8 + .../setting/table/STAT_LINK_PARA.xml | 12 + .../setting/table/STAT_LINK_RET.xml | 12 + .../setting/table/STAT_TEMPLATE_DEF.xml | 11 + .../setting/table/STAT_TEMPLATE_PARA.xml | 12 + .../setting/table/STAT_TEMPLATE_RET.xml | 11 + .../setting/table/SWITCH_CFG_INFO.xml | 11 + .../setting/table/SYS_MODEL_MSG_RELAY.xml | 9 + .../table/TBL_FES_DEV_INFO_FOR_FES_ADD.xml | 15 + .../setting/table/TEMP_PLUGIN.xml | 7 + .../setting/table/TEMP_PLUGIN_DEV_MAP.xml | 7 + .../setting/table/TEMP_PLUGIN_FES_DEV_MAP.xml | 8 + .../table/TEMP_PLUGIN_POINT_MAP_ACC.xml | 10 + .../table/TEMP_PLUGIN_POINT_MAP_ANA.xml | 11 + .../table/TEMP_PLUGIN_POINT_MAP_DIG.xml | 19 + .../table/TEMP_PLUGIN_POINT_MAP_MIX.xml | 11 + .../table/TRIGGER_CONDITION_DEFINE.xml | 33 + .../setting/table/TRIGGER_FUNCTION_DEFINE.xml | 9 + .../setting/table/TRIGGER_PERIOD_DEFINE.xml | 11 + .../setting/table/TRIGGER_TIMER_DEFINE.xml | 8 + .../en/model_studio/setting/table/sample.xml | 20 + .../setting/table/sys_model_app_info.xml | 10 + .../table/sys_model_dbconfig_domain.xml | 17 + .../setting/table/sys_model_dbconfig_node.xml | 16 + .../setting/table/sys_model_deploy_info.xml | 17 + .../setting/table/sys_model_domain_info.xml | 9 + .../setting/table/sys_model_location_info.xml | 20 + .../setting/table/sys_model_node_info.xml | 19 + .../setting/table/sys_model_process_info.xml | 25 + .../table/sys_model_sub_system_info.xml | 8 + .../setting/tree/TriggerFuncTree.xml | 14 + .../setting/tree/TriggerParaTree.xml | 14 + .../model_studio/setting/tree/alarmTree.xml | 30 + .../en/model_studio/setting/tree/app.json | 6 + resource/en/model_studio/setting/tree/app.xml | 13 + .../setting/tree/autoRelation.json | 27 + .../en/model_studio/setting/tree/calcFunc.xml | 14 + .../en/model_studio/setting/tree/chan.xml | 12 + .../model_studio/setting/tree/commonTree.xml | 79 + .../setting/tree/ctrlActDefine.xml | 14 + .../en/model_studio/setting/tree/deploy.json | 6 + .../en/model_studio/setting/tree/deploy.xml | 13 + .../setting/tree/devInstListTree.xml | 18 + .../model_studio/setting/tree/devInstTree.xml | 14 + .../setting/tree/devInstTreeAll.xml | 16 + .../setting/tree/devInstTreeDev.xml | 12 + .../setting/tree/devInstTreeDevAndGrp.xml | 14 + .../tree/devInstTreeDevAndLocation.xml | 14 + .../setting/tree/devInstTreeGrp.xml | 12 + .../tree/devInstTreeGrpAndLocation.xml | 14 + .../setting/tree/devInstTreeLocation.xml | 12 + .../setting/tree/devModelTree.xml | 61 + .../model_studio/setting/tree/devTempTree.xml | 14 + .../setting/tree/expressionTree.xml | 15 + .../setting/tree/fesDevInstListTree.xml | 18 + .../setting/tree/fesDevTreeAll.xml | 16 + .../setting/tree/fesDevTreeDev.xml | 12 + .../setting/tree/fesDevTreeDevLocation.xml | 14 + .../setting/tree/fesDevTreeDevRTU.xml | 14 + .../setting/tree/fesDevTreeLocation.xml | 12 + .../setting/tree/fesDevTreeLocationRTU.xml | 14 + .../setting/tree/fesDevTreeRTU.xml | 12 + .../en/model_studio/setting/tree/fesTree.xml | 18 + .../model_studio/setting/tree/location.json | 6 + .../en/model_studio/setting/tree/location.xml | 12 + .../setting/tree/lockDefineTree.xml | 14 + .../model_studio/setting/tree/mainWindow.xml | 20 + .../model_studio/setting/tree/optLockPara.xml | 14 + .../setting/tree/pcs3000ImportData.json | 52 + .../setting/tree/pcs3000ToFes.json | 72 + .../en/model_studio/setting/tree/projec.xml | 151 + resource/en/model_studio/setting/tree/rt.json | 6 + .../en/model_studio/setting/tree/rtTree.xml | 13 + .../en/model_studio/setting/tree/rtuList.xml | 12 + .../model_studio/setting/tree/sampleTree.xml | 39 + .../setting/tree/statInstInput.xml | 14 + .../setting/tree/statInstOutput.xml | 14 + .../setting/tree/stateTextTree.xml | 14 + .../model_studio/setting/tree/staticsTree.xml | 14 + .../setting/tree/sysConfigTree.xml | 29 + .../setting/tree/textDefine.outline | 6 + .../model_studio/setting/tree/textDefine.xml | 13 + .../en/model_studio/setting/tree/userTree.xml | 20 + .../translate/Common_config_plugin_EN.qm | Bin 0 -> 15233 bytes .../translate/Common_config_plugin_EN.ts | 732 + .../translate/expression_plugin_EN.qm | Bin 0 -> 3869 bytes .../translate/expression_plugin_EN.ts | 184 + .../model_studio/translate/model_common_EN.qm | Bin 0 -> 801 bytes .../model_studio/translate/model_common_EN.ts | 48 + .../translate/model_linkage_EN.qm | Bin 0 -> 9980 bytes .../translate/model_linkage_EN.ts | 612 + .../translate/model_plan_curve_EN.qm | Bin 0 -> 8186 bytes .../translate/model_plan_curve_EN.ts | 535 + .../model_studio/translate/model_plugin_EN.qm | Bin 0 -> 164456 bytes .../model_studio/translate/model_plugin_EN.ts | 7624 +++++++ .../translate/model_sequence_EN.qm | Bin 0 -> 4194 bytes .../translate/model_sequence_EN.ts | 228 + .../model_studio/translate/model_studio_EN.qm | Bin 0 -> 17239 bytes .../model_studio/translate/model_studio_EN.ts | 997 + .../translate/model_system_config_EN.qm | Bin 0 -> 8384 bytes .../translate/model_system_config_EN.ts | 532 + .../model_studio/translate/model_table_EN.qm | Bin 0 -> 33836 bytes .../model_studio/translate/model_table_EN.ts | 1934 ++ .../model_studio/translate/model_user_EN.qm | Bin 0 -> 17435 bytes .../model_studio/translate/model_user_EN.ts | 987 + .../translate/model_waiting_dlg_EN.qm | Bin 0 -> 518 bytes .../translate/model_waiting_dlg_EN.ts | 30 + .../model_studio/translate/plan_curve_EN.qm | Bin 0 -> 7796 bytes .../model_studio/translate/plan_curve_EN.ts | 496 + .../translate/statics_analysis_EN.qm | Bin 0 -> 10915 bytes .../translate/statics_analysis_EN.ts | 676 + .../en/model_studio/translate/tableName.json | 42 + .../translate/operate_server_en.mo | Bin 0 -> 11768 bytes .../translate/operate_server_en.po | 617 + .../en/pub_widget/translate/pub_widget_en.qm | Bin 0 -> 1165 bytes .../en/pub_widget/translate/pub_widget_en.ts | 112 + resource/en/report/translate/report.qm | Bin 0 -> 319 bytes resource/en/report/translate/report.ts | 30 + .../translate/sequence_server_en.mo | Bin 0 -> 5627 bytes .../translate/sequence_server_en.po | 301 + resource/en/setup/en.qm | Bin 0 -> 13348 bytes resource/en/style/dark/AlarmStatWidget.qss | 449 + resource/en/style/dark/AlarmStatisWidget.qss | 98 + resource/en/style/dark/BriefReport.qss | 212 + resource/en/style/dark/DeviceNavWidget.qss | 25 + .../en/style/dark/SecondButtonGroupWidget.qss | 19 + resource/en/style/dark/StationNavWidget.qss | 19 + resource/en/style/dark/SysParamWidget.qss | 15 + resource/en/style/dark/WebBrowserWidget.qss | 4 + resource/en/style/dark/alarm.qss | 134 + resource/en/style/dark/alarmForm.qss | 44 + resource/en/style/dark/alarmShield.qss | 19 + resource/en/style/dark/alarm_statistics.qss | 155 + resource/en/style/dark/alarmmng.qss | 46 + resource/en/style/dark/asset.qss | 14 + resource/en/style/dark/breadcrumbNav.qss | 60 + resource/en/style/dark/cButtonGroupWidget.qss | 15 + resource/en/style/dark/constCurves.qss | 7 + resource/en/style/dark/curveColor.cfg | 16 + resource/en/style/dark/debug_tool.qss | 130 + resource/en/style/dark/deviceRealData.qss | 9 + resource/en/style/dark/duty_setting.qss | 69 + resource/en/style/dark/event.qss | 157 + resource/en/style/dark/explorerWnd.qss | 22 + resource/en/style/dark/faultRecord.qss | 8 + resource/en/style/dark/fbd_designer.qss | 160 + resource/en/style/dark/hmiRoll.qss | 3 + resource/en/style/dark/ipcPlus.qss | 97 + resource/en/style/dark/ipcViewer.qss | 125 + resource/en/style/dark/linkCtrl.qss | 40 + resource/en/style/dark/media.qss | 34 + resource/en/style/dark/modelStudio.qss | 303 + resource/en/style/dark/orderManage.qss | 178 + .../en/style/dark/planCurvesConfigure.qss | 14 + resource/en/style/dark/public.qss | 1708 ++ resource/en/style/dark/relaySetting.qss | 24 + resource/en/style/dark/robot.qss | 83 + resource/en/style/dark/secondNavigation.qss | 15 + resource/en/style/dark/sequence.qss | 71 + resource/en/style/dark/shift.qss | 34 + resource/en/style/dark/sys_startup.qss | 66 + resource/en/style/dark/trendCurves.qss | 193 + resource/en/style/dark/usermng.qss | 146 + resource/en/style/dark/workBench.qss | 487 + resource/en/style/dark/workTicket.qss | 22 + resource/en/style/light/AlarmStatisWidget.qss | 289 + resource/en/style/light/BriefReport.qss | 41 + resource/en/style/light/WebBrowserWidget.qss | 4 + resource/en/style/light/alarm.qss | 58 + resource/en/style/light/alarmShield.qss | 18 + resource/en/style/light/alarm_statistics.qss | 27 + resource/en/style/light/alarmmng.qss | 85 + resource/en/style/light/asset.qss | 6 + resource/en/style/light/breadcrumbNav.qss | 59 + resource/en/style/light/constCurves.qss | 7 + resource/en/style/light/curveColor.cfg | 16 + resource/en/style/light/customDialog2.qss | 28 + resource/en/style/light/debug_tool.qss | 130 + resource/en/style/light/deviceRealData.qss | 12 + resource/en/style/light/duty_setting.qss | 47 + resource/en/style/light/event.qss | 84 + resource/en/style/light/faultRecord.qss | 6 + resource/en/style/light/fbd_designer.qss | 67 + resource/en/style/light/hmiRoll.qss | 3 + resource/en/style/light/ipcPlus.qss | 83 + resource/en/style/light/ipcViewer.qss | 161 + resource/en/style/light/linkCtrl.qss | 25 + resource/en/style/light/media.qss | 34 + resource/en/style/light/modelStudio.qss | 311 + .../en/style/light/planCurvesConfigure.qss | 14 + resource/en/style/light/public.qss | 1364 ++ resource/en/style/light/relaySetting.qss | 4 + resource/en/style/light/robot.qss | 252 + resource/en/style/light/sequence.qss | 12 + resource/en/style/light/shift.qss | 36 + resource/en/style/light/sys_startup.qss | 66 + resource/en/style/light/trendCurves.qss | 168 + resource/en/style/light/usermng.qss | 75 + resource/en/style/light/workBench.qss | 368 + resource/en/style/public.qsst | 1267 ++ resource/en/style/样式模板.qsst | 1163 + resource/en/sys_ctrl/translate/sys_ctrl_en.mo | Bin 0 -> 4073 bytes resource/en/sys_ctrl/translate/sys_ctrl_en.po | 273 + resource/en/sys_login_api/translate/en.qm | Bin 0 -> 1460 bytes resource/en/sys_login_api/translate/en.ts | 103 + resource/en/sys_startup/translate/en.qm | Bin 0 -> 19968 bytes resource/en/sys_startup/translate/en.ts | 1066 + resource/en/workBench/translate/en.qm | Bin 0 -> 22767 bytes resource/en/workBench/translate/en.ts | 1562 ++ resource/en/workBench/workBench.json | 176 + .../fr/apc_if_srv/translate/apc_if_srv_en.mo | Bin 0 -> 2176 bytes .../fr/apc_if_srv/translate/apc_if_srv_en.po | 76 + .../translate/app_bio_identify_srv_en.mo | Bin 0 -> 1192 bytes .../translate/app_bio_identify_srv_en.po | 51 + resource/fr/app_fbd/translate/app_fbd_en.mo | Bin 0 -> 1003 bytes resource/fr/app_fbd/translate/app_fbd_en.po | 40 + resource/fr/db_his_mng_api/en.qm | Bin 0 -> 12693 bytes resource/fr/db_his_mng_api/en.ts | 483 + resource/fr/db_manager/en.qm | Bin 0 -> 56950 bytes resource/fr/db_manager/en.ts | 2853 +++ resource/fr/db_manager_api/en.qm | Bin 0 -> 38303 bytes resource/fr/db_manager_api/en.ts | 1581 ++ resource/fr/debug_tool/image/check.png | Bin 0 -> 651 bytes resource/fr/debug_tool/image/check1.png | Bin 0 -> 692 bytes resource/fr/debug_tool/image/down.png | Bin 0 -> 218 bytes resource/fr/debug_tool/image/search.png | Bin 0 -> 768 bytes resource/fr/debug_tool/image/uncheck.png | Bin 0 -> 114 bytes resource/fr/debug_tool/image/uncheck1.png | Bin 0 -> 432 bytes resource/fr/debug_tool/translate/en.qm | Bin 0 -> 67719 bytes resource/fr/debug_tool/translate/en.ts | 5191 +++++ resource/fr/fbd_editor/product_en.qm | Bin 0 -> 47909 bytes resource/fr/fbd_editor/product_en.ts | 5736 +++++ .../fr/fbd_editor/translate/platform_fr.qm | Bin 0 -> 48837 bytes .../fr/fbd_editor/translate/platform_fr.ts | 2583 +++ resource/fr/fes/translate/fes_en.mo | Bin 0 -> 23353 bytes resource/fr/fes/translate/fes_en.po | 2430 ++ resource/fr/gui/icon/hmi/DataOpt.png | Bin 0 -> 805 bytes resource/fr/gui/icon/hmi/DevRealData.png | Bin 0 -> 795 bytes resource/fr/gui/icon/hmi/HangPanel.png | Bin 0 -> 716 bytes resource/fr/gui/icon/hmi/Media.png | Bin 0 -> 616 bytes resource/fr/gui/icon/hmi/PixelMap.png | Bin 0 -> 350 bytes resource/fr/gui/icon/hmi/PolymorphicText.png | Bin 0 -> 314 bytes .../fr/gui/icon/hmi/accidentRecollect.png | Bin 0 -> 854 bytes resource/fr/gui/icon/hmi/alarm.png | Bin 0 -> 438 bytes resource/fr/gui/icon/hmi/alarmAnalysis.png | Bin 0 -> 1298 bytes resource/fr/gui/icon/hmi/alarmManagement.png | Bin 0 -> 1281 bytes resource/fr/gui/icon/hmi/alarmShielding.png | Bin 0 -> 1100 bytes resource/fr/gui/icon/hmi/alarmStatistics.png | Bin 0 -> 1111 bytes resource/fr/gui/icon/hmi/alignBottom.png | Bin 0 -> 321 bytes resource/fr/gui/icon/hmi/alignHorizontal.png | Bin 0 -> 361 bytes resource/fr/gui/icon/hmi/alignLeft.png | Bin 0 -> 333 bytes resource/fr/gui/icon/hmi/alignRight.png | Bin 0 -> 334 bytes resource/fr/gui/icon/hmi/alignTop.png | Bin 0 -> 326 bytes resource/fr/gui/icon/hmi/alignVertical.png | Bin 0 -> 395 bytes resource/fr/gui/icon/hmi/align_bottom.png | Bin 0 -> 321 bytes resource/fr/gui/icon/hmi/batchCreate.png | Bin 0 -> 430 bytes resource/fr/gui/icon/hmi/besselCurve.png | Bin 0 -> 454 bytes resource/fr/gui/icon/hmi/blockInformation.png | Bin 0 -> 814 bytes resource/fr/gui/icon/hmi/blq.png | Bin 0 -> 284 bytes resource/fr/gui/icon/hmi/bottom.png | Bin 0 -> 305 bytes resource/fr/gui/icon/hmi/brokenLine.png | Bin 0 -> 192 bytes resource/fr/gui/icon/hmi/browse.png | Bin 0 -> 471 bytes resource/fr/gui/icon/hmi/button.png | Bin 0 -> 294 bytes resource/fr/gui/icon/hmi/byq2.png | Bin 0 -> 499 bytes resource/fr/gui/icon/hmi/byq3.png | Bin 0 -> 796 bytes resource/fr/gui/icon/hmi/byq4.png | Bin 0 -> 849 bytes resource/fr/gui/icon/hmi/cam.png | Bin 0 -> 300 bytes resource/fr/gui/icon/hmi/cam2.png | Bin 0 -> 766 bytes resource/fr/gui/icon/hmi/cfd.png | Bin 0 -> 322 bytes resource/fr/gui/icon/hmi/checkAll.png | Bin 0 -> 328 bytes resource/fr/gui/icon/hmi/checkbox.png | Bin 0 -> 457 bytes resource/fr/gui/icon/hmi/circle.png | Bin 0 -> 447 bytes resource/fr/gui/icon/hmi/circularArc.png | Bin 0 -> 356 bytes resource/fr/gui/icon/hmi/combine.png | Bin 0 -> 322 bytes resource/fr/gui/icon/hmi/combobox.png | Bin 0 -> 181 bytes .../fr/gui/icon/hmi/coordinationCurve.png | Bin 0 -> 776 bytes resource/fr/gui/icon/hmi/copy.png | Bin 0 -> 337 bytes resource/fr/gui/icon/hmi/curve.png | Bin 0 -> 346 bytes resource/fr/gui/icon/hmi/cut.png | Bin 0 -> 548 bytes resource/fr/gui/icon/hmi/date.png | Bin 0 -> 269 bytes resource/fr/gui/icon/hmi/db.png | Bin 0 -> 304 bytes resource/fr/gui/icon/hmi/ddzsq.png | Bin 0 -> 426 bytes resource/fr/gui/icon/hmi/delete.png | Bin 0 -> 301 bytes resource/fr/gui/icon/hmi/devInfo.png | Bin 0 -> 347 bytes resource/fr/gui/icon/hmi/discombine.png | Bin 0 -> 307 bytes resource/fr/gui/icon/hmi/dj.png | Bin 0 -> 418 bytes resource/fr/gui/icon/hmi/dkq.png | Bin 0 -> 345 bytes resource/fr/gui/icon/hmi/dl.png | Bin 0 -> 2902 bytes resource/fr/gui/icon/hmi/dlq.png | Bin 0 -> 161 bytes resource/fr/gui/icon/hmi/dongzuo.png | Bin 0 -> 256 bytes resource/fr/gui/icon/hmi/dr.png | Bin 0 -> 468 bytes resource/fr/gui/icon/hmi/dr1.png | Bin 0 -> 176 bytes resource/fr/gui/icon/hmi/drdqdz.png | Bin 0 -> 390 bytes resource/fr/gui/icon/hmi/dydlq.png | Bin 0 -> 331 bytes resource/fr/gui/icon/hmi/dykg.png | Bin 0 -> 278 bytes resource/fr/gui/icon/hmi/dz.png | Bin 0 -> 302 bytes resource/fr/gui/icon/hmi/dzz.png | Bin 0 -> 288 bytes resource/fr/gui/icon/hmi/ellipse.png | Bin 0 -> 369 bytes resource/fr/gui/icon/hmi/equHorizontal.png | Bin 0 -> 247 bytes resource/fr/gui/icon/hmi/equVertical.png | Bin 0 -> 271 bytes resource/fr/gui/icon/hmi/equalLarge.png | Bin 0 -> 428 bytes resource/fr/gui/icon/hmi/equalSmall.png | Bin 0 -> 389 bytes resource/fr/gui/icon/hmi/event.png | Bin 0 -> 418 bytes resource/fr/gui/icon/hmi/faultRecording.png | Bin 0 -> 555 bytes resource/fr/gui/icon/hmi/fbdEditor.png | Bin 0 -> 602 bytes resource/fr/gui/icon/hmi/fdj.png | Bin 0 -> 366 bytes resource/fr/gui/icon/hmi/fhkg.png | Bin 0 -> 295 bytes resource/fr/gui/icon/hmi/fileSync.png | Bin 0 -> 396 bytes resource/fr/gui/icon/hmi/fldkq.png | Bin 0 -> 710 bytes resource/fr/gui/icon/hmi/gaojing.png | Bin 0 -> 371 bytes resource/fr/gui/icon/hmi/glkg.png | Bin 0 -> 279 bytes resource/fr/gui/icon/hmi/gp.png | Bin 0 -> 366 bytes resource/fr/gui/icon/hmi/grid.png | Bin 0 -> 163 bytes resource/fr/gui/icon/hmi/gzp.png | Bin 0 -> 272 bytes resource/fr/gui/icon/hmi/hgq.png | Bin 0 -> 327 bytes resource/fr/gui/icon/hmi/historicalData.png | Bin 0 -> 760 bytes resource/fr/gui/icon/hmi/horizontalMirror.png | Bin 0 -> 347 bytes resource/fr/gui/icon/hmi/hotkey.png | Bin 0 -> 221 bytes resource/fr/gui/icon/hmi/jcq.png | Bin 0 -> 338 bytes resource/fr/gui/icon/hmi/jd.png | Bin 0 -> 244 bytes resource/fr/gui/icon/hmi/jddz.png | Bin 0 -> 371 bytes resource/fr/gui/icon/hmi/jdyf.png | Bin 0 -> 395 bytes resource/fr/gui/icon/hmi/jfc.png | Bin 0 -> 274 bytes resource/fr/gui/icon/hmi/jx.png | Bin 0 -> 366 bytes resource/fr/gui/icon/hmi/kgj.png | Bin 0 -> 378 bytes resource/fr/gui/icon/hmi/kx.png | Bin 0 -> 480 bytes resource/fr/gui/icon/hmi/label.png | Bin 0 -> 280 bytes resource/fr/gui/icon/hmi/levelDown.png | Bin 0 -> 310 bytes resource/fr/gui/icon/hmi/levelUp.png | Bin 0 -> 312 bytes resource/fr/gui/icon/hmi/link.png | Bin 0 -> 1141 bytes resource/fr/gui/icon/hmi/linkageControl.png | Bin 0 -> 917 bytes resource/fr/gui/icon/hmi/list.png | Bin 0 -> 264 bytes resource/fr/gui/icon/hmi/ljbyq.png | Bin 0 -> 467 bytes resource/fr/gui/icon/hmi/ljbyq1.png | Bin 0 -> 533 bytes resource/fr/gui/icon/hmi/ljbyq2.png | Bin 0 -> 512 bytes resource/fr/gui/icon/hmi/lock.png | Bin 0 -> 323 bytes resource/fr/gui/icon/hmi/menu.png | Bin 0 -> 369 bytes resource/fr/gui/icon/hmi/ml.png | Bin 0 -> 468 bytes resource/fr/gui/icon/hmi/mlbzt.png | Bin 0 -> 208 bytes resource/fr/gui/icon/hmi/mx.png | Bin 0 -> 141 bytes resource/fr/gui/icon/hmi/new.png | Bin 0 -> 336 bytes resource/fr/gui/icon/hmi/open.png | Bin 0 -> 369 bytes resource/fr/gui/icon/hmi/operationTicket.png | Bin 0 -> 770 bytes resource/fr/gui/icon/hmi/paste.png | Bin 0 -> 364 bytes resource/fr/gui/icon/hmi/pie.png | Bin 0 -> 464 bytes resource/fr/gui/icon/hmi/plugin.png | Bin 0 -> 419 bytes resource/fr/gui/icon/hmi/pollingManage.png | Bin 0 -> 879 bytes resource/fr/gui/icon/hmi/polygon.png | Bin 0 -> 319 bytes resource/fr/gui/icon/hmi/protectConsValue.png | Bin 0 -> 1205 bytes resource/fr/gui/icon/hmi/publish.png | Bin 0 -> 442 bytes resource/fr/gui/icon/hmi/qybyq.png | Bin 0 -> 548 bytes resource/fr/gui/icon/hmi/qybyq1.png | Bin 0 -> 3428 bytes resource/fr/gui/icon/hmi/radiobutton.png | Bin 0 -> 431 bytes resource/fr/gui/icon/hmi/rectangular.png | Bin 0 -> 158 bytes resource/fr/gui/icon/hmi/redo.png | Bin 0 -> 538 bytes resource/fr/gui/icon/hmi/report.png | Bin 0 -> 270 bytes resource/fr/gui/icon/hmi/run.png | Bin 0 -> 405 bytes resource/fr/gui/icon/hmi/save.png | Bin 0 -> 253 bytes resource/fr/gui/icon/hmi/saveAs.png | Bin 0 -> 356 bytes resource/fr/gui/icon/hmi/sc.png | Bin 0 -> 291 bytes resource/fr/gui/icon/hmi/sc_down.png | Bin 0 -> 15147 bytes resource/fr/gui/icon/hmi/sc_up.png | Bin 0 -> 15133 bytes resource/fr/gui/icon/hmi/scriptEditor.png | Bin 0 -> 429 bytes resource/fr/gui/icon/hmi/seqControlManage.png | Bin 0 -> 266 bytes resource/fr/gui/icon/hmi/sjbyq.png | Bin 0 -> 522 bytes resource/fr/gui/icon/hmi/sjx.png | Bin 0 -> 328 bytes resource/fr/gui/icon/hmi/spinbox.png | Bin 0 -> 326 bytes resource/fr/gui/icon/hmi/stick.png | Bin 0 -> 243 bytes resource/fr/gui/icon/hmi/straightLine.png | Bin 0 -> 227 bytes resource/fr/gui/icon/hmi/tablewidget.png | Bin 0 -> 163 bytes resource/fr/gui/icon/hmi/terminal.png | Bin 0 -> 420 bytes resource/fr/gui/icon/hmi/text.png | Bin 0 -> 172 bytes resource/fr/gui/icon/hmi/textInput.png | Bin 0 -> 277 bytes resource/fr/gui/icon/hmi/textbox.png | Bin 0 -> 244 bytes resource/fr/gui/icon/hmi/tiaozha.png | Bin 0 -> 433 bytes resource/fr/gui/icon/hmi/time.png | Bin 0 -> 420 bytes resource/fr/gui/icon/hmi/top.png | Bin 0 -> 288 bytes resource/fr/gui/icon/hmi/topo.png | Bin 0 -> 300 bytes resource/fr/gui/icon/hmi/travelBriefing.png | Bin 0 -> 665 bytes resource/fr/gui/icon/hmi/treewidget.png | Bin 0 -> 230 bytes resource/fr/gui/icon/hmi/trend.png | Bin 0 -> 393 bytes resource/fr/gui/icon/hmi/trtczhkg.png | Bin 0 -> 341 bytes resource/fr/gui/icon/hmi/txzc.png | Bin 0 -> 189 bytes resource/fr/gui/icon/hmi/tyztxs.png | Bin 0 -> 407 bytes resource/fr/gui/icon/hmi/undo.png | Bin 0 -> 415 bytes resource/fr/gui/icon/hmi/userGroupManage.png | Bin 0 -> 1184 bytes resource/fr/gui/icon/hmi/verticalMirror.png | Bin 0 -> 381 bytes resource/fr/gui/icon/hmi/viewOff.png | Bin 0 -> 502 bytes resource/fr/gui/icon/hmi/viewOn.png | Bin 0 -> 471 bytes resource/fr/gui/icon/hmi/wgbc.png | Bin 0 -> 531 bytes resource/fr/gui/icon/hmi/workTicket.png | Bin 0 -> 530 bytes resource/fr/gui/icon/hmi/workforceManage.png | Bin 0 -> 835 bytes resource/fr/gui/icon/hmi/xd.png | Bin 0 -> 301 bytes resource/fr/gui/icon/hmi/xdc.png | Bin 0 -> 247 bytes resource/fr/gui/icon/hmi/xl.png | Bin 0 -> 288 bytes resource/fr/gui/icon/hmi/ybp.png | Bin 0 -> 450 bytes resource/fr/gui/icon/hmi/yc.png | Bin 0 -> 359 bytes resource/fr/gui/icon/hmi/yfjdzhkg.png | Bin 0 -> 336 bytes resource/fr/gui/icon/hmi/yichang.png | Bin 0 -> 341 bytes resource/fr/gui/icon/hmi/zlq.png | Bin 0 -> 438 bytes resource/fr/gui/icon/hmi/zlq2.png | Bin 0 -> 354 bytes resource/fr/gui/translate/icon_fr.ts | 0 resource/fr/gui/translate/platform_fr.qm | Bin 0 -> 81424 bytes resource/fr/gui/translate/platform_fr.ts | 5369 +++++ resource/fr/gui/translate/product_fr.qm | Bin 0 -> 210149 bytes resource/fr/gui/translate/product_fr.ts | 12805 +++++++++++ .../translate/linkage_server_en.mo | Bin 0 -> 6946 bytes .../translate/linkage_server_en.po | 375 + resource/fr/model_studio/icons/RTU.png | Bin 0 -> 394 bytes resource/fr/model_studio/icons/alarm.png | Bin 0 -> 377 bytes resource/fr/model_studio/icons/anquan.png | Bin 0 -> 316 bytes resource/fr/model_studio/icons/app.png | Bin 0 -> 211 bytes resource/fr/model_studio/icons/ats.png | Bin 0 -> 415 bytes resource/fr/model_studio/icons/bas.png | Bin 0 -> 427 bytes resource/fr/model_studio/icons/base.png | Bin 0 -> 285 bytes resource/fr/model_studio/icons/baseinfo.png | Bin 0 -> 583 bytes resource/fr/model_studio/icons/channel.png | Bin 0 -> 356 bytes resource/fr/model_studio/icons/collection.png | Bin 0 -> 433 bytes resource/fr/model_studio/icons/db.png | Bin 0 -> 304 bytes resource/fr/model_studio/icons/define.png | Bin 0 -> 310 bytes resource/fr/model_studio/icons/dept.png | Bin 0 -> 254 bytes resource/fr/model_studio/icons/devSame.png | Bin 0 -> 368 bytes resource/fr/model_studio/icons/devType.png | Bin 0 -> 376 bytes resource/fr/model_studio/icons/device.png | Bin 0 -> 1766 bytes .../fr/model_studio/icons/device_child.png | Bin 0 -> 259 bytes resource/fr/model_studio/icons/dict.png | Bin 0 -> 546 bytes resource/fr/model_studio/icons/fesCfg.png | Bin 0 -> 368 bytes resource/fr/model_studio/icons/forward.png | Bin 0 -> 344 bytes resource/fr/model_studio/icons/func.png | Bin 0 -> 310 bytes resource/fr/model_studio/icons/generate.png | Bin 0 -> 444 bytes resource/fr/model_studio/icons/icon2.gif | Bin 0 -> 1689 bytes resource/fr/model_studio/icons/init.png | Bin 0 -> 378 bytes resource/fr/model_studio/icons/msg.png | Bin 0 -> 306 bytes resource/fr/model_studio/icons/network.png | Bin 0 -> 484 bytes resource/fr/model_studio/icons/pa.png | Bin 0 -> 388 bytes resource/fr/model_studio/icons/pic.png | Bin 0 -> 275 bytes resource/fr/model_studio/icons/pis.png | Bin 0 -> 392 bytes resource/fr/model_studio/icons/power.png | Bin 0 -> 692 bytes resource/fr/model_studio/icons/report.png | Bin 0 -> 198 bytes resource/fr/model_studio/icons/role.png | Bin 0 -> 406 bytes resource/fr/model_studio/icons/temp.png | Bin 0 -> 373 bytes resource/fr/model_studio/icons/tempType.png | Bin 0 -> 364 bytes resource/fr/model_studio/icons/tv_icon.png | Bin 0 -> 349 bytes resource/fr/model_studio/icons/user.png | Bin 0 -> 445 bytes resource/fr/model_studio/icons/userGroup.png | Bin 0 -> 393 bytes .../setting/fileLogic/configcheck.xml | 374 + .../model_studio/setting/style/fesTemp.xlsx | Bin 0 -> 18311 bytes .../model_studio/setting/style/kbdTable.qss | 3 + .../setting/style/psc3000Temp.xlsx | Bin 0 -> 12913 bytes .../model_studio/setting/style/scrollBar.qss | 71 + .../fr/model_studio/setting/style/toolBar.qss | 3 + .../fr/model_studio/setting/table/ACCUML.xml | 39 + .../setting/table/ACCUML_LIMIT_INFO.xml | 27 + .../setting/table/ACCUML_MAP_TO_FES.xml | 21 + .../setting/table/ACCUML_TEMP_DEFINE.xml | 44 + .../setting/table/ACS_DEVICE_INFO.xml | 12 + .../setting/table/ADD_POINT_FROM_FES_TEMP.xml | 8 + .../setting/table/ALARM_ACTION_DEFINE.xml | 8 + .../setting/table/ALARM_KEYWORD_DEFINE.xml | 8 + .../setting/table/ALARM_LEVEL_DEFINE.xml | 11 + .../setting/table/ALARM_LEVEL_SOUND_DEF.xml | 8 + .../setting/table/ALARM_MANNER_DEFINE.xml | 12 + .../setting/table/ALARM_SMS_CONFIG.xml | 13 + .../setting/table/ALARM_SMS_DEVICE.xml | 14 + .../setting/table/ALARM_SMS_RULE.xml | 11 + .../setting/table/ALARM_STATUS_DEFINE.xml | 11 + .../setting/table/ALARM_STATUS_DIG_SET.xml | 9 + .../setting/table/ALARM_TYPE_DEFINE.xml | 9 + .../fr/model_studio/setting/table/ANALOG.xml | 39 + .../setting/table/ANALOG_CONTROL.xml | 24 + .../setting/table/ANALOG_LIMIT_INFO.xml | 30 + .../setting/table/ANALOG_MAP_TO_FES.xml | 22 + .../setting/table/ANALOG_OVER_STATISTICS.xml | 26 + .../setting/table/ANALOG_TEMP_DEFINE.xml | 54 + .../model_studio/setting/table/APC_ANALOG.xml | 12 + .../setting/table/APC_DIGITAL.xml | 10 + .../setting/table/ATS_FES_LOCATION_INFO.xml | 7 + .../setting/table/ATS_FES_PLATFORM_INFO.xml | 8 + .../setting/table/BACKGROUND_X_FES_ACCUML.xml | 18 + .../setting/table/BACKGROUND_X_FES_ANALOG.xml | 18 + .../setting/table/BACKGROUND_X_FES_DIGTAL.xml | 18 + .../setting/table/BAS_CRAFT_DEF.xml | 8 + .../setting/table/BAS_MODE_DEF.xml | 11 + .../setting/table/BAS_MODE_TYPE.xml | 7 + .../table/BAS_TIMETABLE_CTRL_PARAM.xml | 15 + .../setting/table/BAS_TIMETABLE_DEF.xml | 9 + .../setting/table/BAS_TIMETABLE_INFO.xml | 10 + .../setting/table/BAS_TIMETABLE_SCHEDULE.xml | 18 + .../setting/table/CALC_FUNC_DEF.xml | 10 + .../setting/table/CALC_GROUP_DEF.xml | 8 + .../setting/table/CALC_IN_PARA.xml | 12 + .../setting/table/CALC_OUT_PARA.xml | 11 + .../setting/table/CALC_PARA_DEF.xml | 8 + .../setting/table/CCTV_CAMERA_INFO.xml | 17 + .../setting/table/CCTV_MONITOR_INFO.xml | 15 + .../setting/table/CCTV_ORIENTATION.xml | 11 + .../setting/table/CCTV_SEPARATOR_INFO.xml | 45 + .../model_studio/setting/table/DEV_GROUP.xml | 17 + .../model_studio/setting/table/DEV_INFO.xml | 34 + .../setting/table/DEV_INFO_FOR_EMPTY_ADD.xml | 34 + .../setting/table/DEV_TEMP_DEF.xml | 13 + .../setting/table/DEV_TEMP_GROUP.xml | 7 + .../setting/table/DEV_TRIGGER_FLAG.xml | 11 + .../setting/table/DEV_TYPE_DEF.xml | 9 + .../setting/table/DEV_TYPE_DEF_61850.xml | 11 + .../table/DICT_MENU_INFO_PNT_CLASS.xml | 9 + .../setting/table/DICT_POINT_TYPE.xml | 32 + .../table/DICT_POINT_TYPE_FOR_POINT_ADD.xml | 32 + .../setting/table/DICT_STATE_TEXT_INFO.xml | 11 + .../setting/table/DICT_TEXT_DEFINE.xml | 9 + .../setting/table/DICT_UNIT_INFO.xml | 8 + .../setting/table/DICT_VOL_LEVEL.xml | 11 + .../fr/model_studio/setting/table/DIGITAL.xml | 73 + .../setting/table/DIGITAL_CONTROL.xml | 25 + .../setting/table/DIGITAL_MAP_TO_FES.xml | 23 + .../setting/table/DIGITAL_TEMP_DEFINE.xml | 59 + .../setting/table/FAULT_RECALL_COND_DEF.xml | 11 + .../setting/table/FBD_GROUP_INFO.xml | 16 + .../model_studio/setting/table/FES_ACCUML.xml | 31 + .../model_studio/setting/table/FES_ANALOG.xml | 43 + .../setting/table/FES_ANALOG_CTRL.xml | 29 + .../setting/table/FES_CHANNEL_PARA.xml | 50 + .../model_studio/setting/table/FES_CONST.xml | 38 + .../setting/table/FES_CONST_TEMP.xml | 32 + .../setting/table/FES_DATA_BLOCK.xml | 31 + .../setting/table/FES_DATA_BLOCK_TEMP.xml | 27 + .../setting/table/FES_DEV_ACCUNL_TEMP_DEF.xml | 49 + .../table/FES_DEV_ANALOG_CTRL_TEMP_DEF.xml | 49 + .../setting/table/FES_DEV_ANALOG_TEMP_DEF.xml | 49 + .../table/FES_DEV_DIGITAL_CTRL_TEMP_DEF.xml | 49 + .../table/FES_DEV_DIGITAL_TEMP_DEF.xml | 49 + .../setting/table/FES_DEV_INFO.xml | 16 + .../setting/table/FES_DEV_INFO_FOR_ADD.xml | 16 + .../table/FES_DEV_INFO_FOR_EMPTY_TEMP.xml | 16 + .../table/FES_DEV_MIX_CTRL_TEMP_DEF.xml | 49 + .../setting/table/FES_DEV_MIX_TEMP_DEF.xml | 49 + .../setting/table/FES_DEV_PT_TEMP_DEF.xml | 49 + .../setting/table/FES_DEV_TEMP_DEF.xml | 12 + .../table/FES_DEV_TEMP_DEF_FOR_ADD.xml | 12 + .../table/FES_DEV_TEMP_DEF_FOR_IMPORT.xml | 7 + .../setting/table/FES_DEV_TYPE_DEF.xml | 11 + .../setting/table/FES_DIGITAL.xml | 34 + .../setting/table/FES_DIGITAL_CTRL.xml | 35 + .../fr/model_studio/setting/table/FES_MIX.xml | 32 + .../setting/table/FES_MIX_CTRL.xml | 29 + .../setting/table/FES_PROTOCOL.xml | 10 + .../setting/table/FES_RTU_PARA.xml | 31 + .../setting/table/FORWARD_ACCUML.xml | 31 + .../setting/table/FORWARD_ANALOG.xml | 33 + .../setting/table/FORWARD_ANALOG_CTRL.xml | 31 + .../setting/table/FORWARD_DIGITAL_CTRL.xml | 39 + .../setting/table/FORWARD_DIGITAL_DOUBLE.xml | 31 + .../setting/table/FORWARD_DIGITAL_SINGLE.xml | 31 + .../setting/table/FORWARD_MIX.xml | 31 + .../setting/table/FORWARD_MIX_CTRL.xml | 30 + .../setting/table/HIS_WORK_TICKET.xml | 8 + .../setting/table/HMI_TYPE_INFO.xml | 10 + .../setting/table/IA_DISPOSAL_PLAN.xml | 8 + .../setting/table/INVALID_SYS_TABLE_INFO.xml | 17 + .../setting/table/LINKAGE_ACTION.xml | 13 + .../setting/table/LINKAGE_ACTION_FOR_BAS.xml | 12 + .../setting/table/LINKAGE_ACTION_FOR_MSG.xml | 12 + .../setting/table/LINKAGE_ACTION_FOR_PA.xml | 19 + .../setting/table/LINKAGE_ACTION_FOR_PIS.xml | 19 + .../table/LINKAGE_ACTION_FOR_PSCADA.xml | 12 + .../table/LINKAGE_ACTION_FOR_PUSH_PIC.xml | 12 + .../setting/table/LINKAGE_DEFINE.xml | 10 + .../setting/table/LINKAGE_FUNCTION.xml | 17 + .../setting/table/LINKAGE_FUNCTION_LIST.xml | 7 + .../setting/table/LINKAGE_SETTING.xml | 14 + .../LINKAGE_SETTING_FOR_ADD_AND_MODIFY.xml | 14 + .../setting/table/LOAD_STAT_DEFINE.xml | 17 + .../fr/model_studio/setting/table/MIX.xml | 50 + .../setting/table/MIX_CONTROL.xml | 24 + .../setting/table/MIX_MAP_TO_FES.xml | 22 + .../model_studio/setting/table/MIX_METHOD.xml | 9 + .../setting/table/MIX_TEMP_DEFINE.xml | 45 + .../setting/table/OPT_CTRL_ACT_DEFINE.xml | 15 + .../setting/table/OPT_HANDOVER_GRP.xml | 17 + .../setting/table/OPT_INTERLOCK_DEFINE.xml | 9 + .../setting/table/OPT_INTERLOCK_PARA.xml | 31 + .../table/OPT_INTERLOCK_PARA_FOR_SELECT.xml | 28 + .../setting/table/OPT_SHIELD_DEFINE.xml | 14 + .../setting/table/OPT_TOKEN_DEFINE.xml | 18 + .../setting/table/PA_AREA_INFO.xml | 7 + .../setting/table/PA_AUDIO_INFO.xml | 9 + .../setting/table/PA_BROADCAST_GROUP.xml | 9 + .../setting/table/PA_CTRL_PARAM.xml | 7 + .../setting/table/PA_LOCATION_AREA_DEF.xml | 7 + .../setting/table/PA_LOCATION_SEQ_DEF.xml | 7 + .../setting/table/PA_OPERATOR_DEF.xml | 7 + .../setting/table/PA_OPERATOR_MAP.xml | 7 + .../setting/table/PA_TIMED_AUDIO.xml | 20 + .../setting/table/PIS_AREA_INFO.xml | 7 + .../setting/table/PIS_CTRL_PARAM.xml | 7 + .../setting/table/PIS_DISPLAY_INFO.xml | 17 + .../setting/table/PIS_FES_LOCATION_INFO.xml | 7 + .../setting/table/PIS_LOCATION_AREA_DEF.xml | 7 + .../setting/table/PIS_MESSAGE_INFO.xml | 9 + .../setting/table/PSC3000_FES_TEMP.xml | 7 + .../setting/table/REGION_INFO.xml | 10 + .../setting/table/REPORT_TYPE_INFO.xml | 9 + .../setting/table/RM_DEPT_DEF.xml | 9 + .../setting/table/RM_NORM_FUNC_DEF.xml | 9 + .../setting/table/RM_ROLE_DB_INFO.xml | 8 + .../setting/table/RM_ROLE_DEF.xml | 24 + .../setting/table/RM_ROLE_HMI_INFO.xml | 23 + .../setting/table/RM_ROLE_SPEF_REG.xml | 11 + .../setting/table/RM_SECURITY_DEF.xml | 11 + .../setting/table/RM_SPCL_FUNC_DEF.xml | 9 + .../setting/table/RM_USERG_DB_INFO.xml | 8 + .../setting/table/RM_USERG_DEF.xml | 31 + .../setting/table/RM_USERG_HMI_INFO.xml | 24 + .../setting/table/RM_USERG_RSP_INFO.xml | 20 + .../setting/table/RM_USER_DEF.xml | 55 + .../setting/table/RT_COLUMN_MODE.xml | 17 + .../setting/table/RT_TABLE_MODE.xml | 14 + .../model_studio/setting/table/SAFETY_DAY.xml | 8 + .../setting/table/SAMPLE_DEFINE.xml | 16 + .../setting/table/SEQUENCE_ACTION.xml | 13 + .../setting/table/SEQUENCE_DEFINE.xml | 10 + .../setting/table/SEQUENCE_FUNCTION.xml | 14 + .../setting/table/SEQUENCE_SETTING.xml | 10 + .../setting/table/STAT_INST_DEF.xml | 20 + .../setting/table/STAT_INST_PARA_GRP.xml | 12 + .../setting/table/STAT_INST_PARA_POINT.xml | 14 + .../table/STAT_INST_PARA_POINT_FOR_ADD.xml | 14 + .../setting/table/STAT_INST_PARA_TIME.xml | 22 + .../table/STAT_INST_PARA_TIME_FOR_ADD.xml | 23 + .../setting/table/STAT_INST_RET_GRP.xml | 11 + .../setting/table/STAT_INST_RET_PARA.xml | 17 + .../table/STAT_INST_RET_PARA_FOR_ADD.xml | 16 + .../setting/table/STAT_LINK_DEF.xml | 8 + .../setting/table/STAT_LINK_PARA.xml | 12 + .../setting/table/STAT_LINK_RET.xml | 12 + .../setting/table/STAT_TEMPLATE_DEF.xml | 11 + .../setting/table/STAT_TEMPLATE_PARA.xml | 12 + .../setting/table/STAT_TEMPLATE_RET.xml | 11 + .../setting/table/SWITCH_CFG_INFO.xml | 12 + .../setting/table/SYS_MODEL_MSG_RELAY.xml | 9 + .../table/TBL_FES_DEV_INFO_FOR_FES_ADD.xml | 16 + .../setting/table/TEMP_PLUGIN.xml | 7 + .../setting/table/TEMP_PLUGIN_DEV_MAP.xml | 7 + .../setting/table/TEMP_PLUGIN_FES_DEV_MAP.xml | 8 + .../table/TEMP_PLUGIN_POINT_MAP_ACC.xml | 10 + .../table/TEMP_PLUGIN_POINT_MAP_ANA.xml | 11 + .../table/TEMP_PLUGIN_POINT_MAP_DIG.xml | 20 + .../table/TEMP_PLUGIN_POINT_MAP_MIX.xml | 11 + .../table/TRIGGER_CONDITION_DEFINE.xml | 33 + .../setting/table/TRIGGER_FUNCTION_DEFINE.xml | 9 + .../setting/table/TRIGGER_PERIOD_DEFINE.xml | 11 + .../setting/table/TRIGGER_TIMER_DEFINE.xml | 8 + .../fr/model_studio/setting/table/sample.xml | 20 + .../setting/table/sys_model_app_info.xml | 10 + .../table/sys_model_dbconfig_domain.xml | 17 + .../setting/table/sys_model_dbconfig_node.xml | 16 + .../setting/table/sys_model_deploy_info.xml | 18 + .../setting/table/sys_model_domain_info.xml | 9 + .../setting/table/sys_model_location_info.xml | 20 + .../setting/table/sys_model_node_info.xml | 19 + .../setting/table/sys_model_process_info.xml | 25 + .../table/sys_model_sub_system_info.xml | 8 + .../setting/tree/TriggerFuncTree.xml | 14 + .../setting/tree/TriggerParaTree.xml | 14 + .../model_studio/setting/tree/alarmTree.xml | 30 + .../fr/model_studio/setting/tree/app.json | 6 + resource/fr/model_studio/setting/tree/app.xml | 13 + .../setting/tree/autoRelation.json | 27 + .../fr/model_studio/setting/tree/calcFunc.xml | 14 + .../fr/model_studio/setting/tree/chan.xml | 12 + .../model_studio/setting/tree/commonTree.xml | 49 + .../setting/tree/ctrlActDefine.xml | 14 + .../fr/model_studio/setting/tree/deploy.json | 6 + .../fr/model_studio/setting/tree/deploy.xml | 13 + .../setting/tree/devInstListTree.xml | 18 + .../model_studio/setting/tree/devInstTree.xml | 14 + .../setting/tree/devInstTreeAll.xml | 16 + .../setting/tree/devInstTreeDev.xml | 12 + .../setting/tree/devInstTreeDevAndGrp.xml | 14 + .../tree/devInstTreeDevAndLocation.xml | 14 + .../setting/tree/devInstTreeGrp.xml | 12 + .../tree/devInstTreeGrpAndLocation.xml | 14 + .../setting/tree/devInstTreeLocation.xml | 12 + .../setting/tree/devModelTree.xml | 61 + .../model_studio/setting/tree/devTempTree.xml | 14 + .../setting/tree/expressionTree.xml | 15 + .../setting/tree/fesDevInstListTree.xml | 18 + .../setting/tree/fesDevTreeAll.xml | 16 + .../setting/tree/fesDevTreeDev.xml | 12 + .../setting/tree/fesDevTreeDevLocation.xml | 14 + .../setting/tree/fesDevTreeDevRTU.xml | 14 + .../setting/tree/fesDevTreeLocation.xml | 12 + .../setting/tree/fesDevTreeLocationRTU.xml | 14 + .../setting/tree/fesDevTreeRTU.xml | 12 + .../fr/model_studio/setting/tree/fesTree.xml | 19 + .../model_studio/setting/tree/location.json | 6 + .../fr/model_studio/setting/tree/location.xml | 26 + .../setting/tree/lockDefineTree.xml | 14 + .../model_studio/setting/tree/mainWindow.xml | 20 + .../model_studio/setting/tree/optLockPara.xml | 14 + .../setting/tree/pcs3000ImportData.json | 52 + .../setting/tree/pcs3000ToFes.json | 72 + .../fr/model_studio/setting/tree/projec.xml | 151 + resource/fr/model_studio/setting/tree/rt.json | 6 + .../fr/model_studio/setting/tree/rtTree.xml | 13 + .../fr/model_studio/setting/tree/rtuList.xml | 12 + .../model_studio/setting/tree/sampleTree.xml | 39 + .../setting/tree/statInstInput.xml | 14 + .../setting/tree/statInstOutput.xml | 14 + .../setting/tree/stateTextTree.xml | 14 + .../model_studio/setting/tree/staticsTree.xml | 15 + .../setting/tree/sysConfigTree.xml | 31 + .../setting/tree/textDefine.outline | 6 + .../model_studio/setting/tree/textDefine.xml | 13 + .../fr/model_studio/setting/tree/userTree.xml | 20 + .../model_studio/translate/model_common_FR.qm | Bin 0 -> 845 bytes .../model_studio/translate/model_common_FR.ts | 48 + .../translate/model_linkage_EN.qm | Bin 0 -> 9976 bytes .../translate/model_linkage_EN.ts | 610 + .../translate/model_plan_curve_EN.qm | Bin 0 -> 8186 bytes .../translate/model_plan_curve_EN.ts | 534 + .../translate/model_sequence_EN.qm | Bin 0 -> 4194 bytes .../translate/model_sequence_EN.ts | 228 + .../model_studio/translate/model_studio_EN.qm | Bin 0 -> 16727 bytes .../model_studio/translate/model_studio_EN.ts | 7293 ++++++ .../translate/model_system_config_EN.qm | Bin 0 -> 8382 bytes .../translate/model_system_config_EN.ts | 548 + .../model_studio/translate/model_table_EN.qm | Bin 0 -> 31553 bytes .../model_studio/translate/model_table_EN.ts | 1925 ++ .../model_studio/translate/model_user_FR.qm | Bin 0 -> 19277 bytes .../model_studio/translate/model_user_FR.ts | 971 + .../translate/model_waiting_dlg_EN.qm | Bin 0 -> 518 bytes .../translate/model_waiting_dlg_EN.ts | 30 + .../model_studio/translate/plan_curve_EN.qm | Bin 0 -> 7796 bytes .../model_studio/translate/plan_curve_EN.ts | 496 + .../fr/model_studio/translate/tableName.json | 42 + .../translate/operate_server_en.mo | Bin 0 -> 11629 bytes .../translate/operate_server_en.po | 625 + .../fr/pub_widget/translate/pub_widget_fr.qm | Bin 0 -> 1259 bytes .../fr/pub_widget/translate/pub_widget_fr.ts | 112 + resource/fr/report/translate/report.qm | Bin 0 -> 319 bytes resource/fr/report/translate/report.ts | 30 + .../translate/sequence_server_en.mo | Bin 0 -> 5627 bytes .../translate/sequence_server_en.po | 301 + resource/fr/setup/en.qm | Bin 0 -> 13348 bytes resource/fr/style/dark/AlarmStatWidget.qss | 449 + resource/fr/style/dark/AlarmStatisWidget.qss | 98 + resource/fr/style/dark/BriefReport.qss | 212 + resource/fr/style/dark/DeviceNavWidget.qss | 25 + .../fr/style/dark/SecondButtonGroupWidget.qss | 19 + resource/fr/style/dark/StationNavWidget.qss | 19 + resource/fr/style/dark/SysParamWidget.qss | 15 + resource/fr/style/dark/WebBrowserWidget.qss | 4 + resource/fr/style/dark/alarm.qss | 134 + resource/fr/style/dark/alarmForm.qss | 43 + resource/fr/style/dark/alarmShield.qss | 19 + resource/fr/style/dark/alarm_statistics.qss | 155 + resource/fr/style/dark/alarmmng.qss | 46 + resource/fr/style/dark/asset.qss | 14 + resource/fr/style/dark/breadcrumbNav.qss | 60 + resource/fr/style/dark/cButtonGroupWidget.qss | 15 + resource/fr/style/dark/constCurves.qss | 7 + resource/fr/style/dark/curveColor.cfg | 16 + resource/fr/style/dark/debug_tool.qss | 130 + resource/fr/style/dark/deviceRealData.qss | 9 + resource/fr/style/dark/duty_setting.qss | 69 + resource/fr/style/dark/event.qss | 93 + resource/fr/style/dark/explorerWnd.qss | 22 + resource/fr/style/dark/faultRecord.qss | 8 + resource/fr/style/dark/fbd_designer.qss | 160 + resource/fr/style/dark/hmiRoll.qss | 3 + resource/fr/style/dark/ipcPlus.qss | 97 + resource/fr/style/dark/ipcViewer.qss | 125 + resource/fr/style/dark/linkCtrl.qss | 40 + resource/fr/style/dark/media.qss | 34 + resource/fr/style/dark/modelStudio.qss | 303 + resource/fr/style/dark/orderManage.qss | 178 + .../fr/style/dark/planCurvesConfigure.qss | 14 + resource/fr/style/dark/public.qss | 1714 ++ resource/fr/style/dark/relaySetting.qss | 24 + resource/fr/style/dark/robot.qss | 83 + resource/fr/style/dark/secondNavigation.qss | 15 + resource/fr/style/dark/sequence.qss | 71 + resource/fr/style/dark/shift.qss | 34 + resource/fr/style/dark/sys_startup.qss | 66 + resource/fr/style/dark/trendCurves.qss | 199 + resource/fr/style/dark/usermng.qss | 146 + resource/fr/style/dark/workBench.qss | 489 + resource/fr/style/dark/workTicket.qss | 22 + resource/fr/style/light/AlarmStatisWidget.qss | 289 + resource/fr/style/light/BriefReport.qss | 41 + resource/fr/style/light/WebBrowserWidget.qss | 4 + resource/fr/style/light/alarm.qss | 58 + resource/fr/style/light/alarmShield.qss | 18 + resource/fr/style/light/alarm_statistics.qss | 27 + resource/fr/style/light/alarmmng.qss | 85 + resource/fr/style/light/asset.qss | 6 + resource/fr/style/light/breadcrumbNav.qss | 59 + resource/fr/style/light/constCurves.qss | 7 + resource/fr/style/light/curveColor.cfg | 16 + resource/fr/style/light/debug_tool.qss | 130 + resource/fr/style/light/deviceRealData.qss | 12 + resource/fr/style/light/duty_setting.qss | 47 + resource/fr/style/light/event.qss | 84 + resource/fr/style/light/faultRecord.qss | 6 + resource/fr/style/light/fbd_designer.qss | 67 + resource/fr/style/light/hmiRoll.qss | 3 + resource/fr/style/light/ipcPlus.qss | 83 + resource/fr/style/light/ipcViewer.qss | 161 + resource/fr/style/light/linkCtrl.qss | 25 + resource/fr/style/light/media.qss | 34 + resource/fr/style/light/modelStudio.qss | 312 + .../fr/style/light/planCurvesConfigure.qss | 14 + resource/fr/style/light/public.qss | 1681 ++ resource/fr/style/light/relaySetting.qss | 4 + resource/fr/style/light/robot.qss | 252 + resource/fr/style/light/sequence.qss | 12 + resource/fr/style/light/shift.qss | 36 + resource/fr/style/light/sys_startup.qss | 66 + resource/fr/style/light/trendCurves.qss | 168 + resource/fr/style/light/usermng.qss | 75 + resource/fr/style/light/workBench.qss | 368 + resource/fr/style/public.qsst | 1267 ++ resource/fr/style/样式模板.qsst | 1163 + resource/fr/sys_ctrl/translate/sys_ctrl_en.mo | Bin 0 -> 3892 bytes resource/fr/sys_ctrl/translate/sys_ctrl_en.po | 272 + resource/fr/sys_login_api/translate/en.ts | 103 + resource/fr/sys_login_api/translate/fr.qm | Bin 0 -> 1460 bytes resource/fr/sys_startup/translate/en.qm | Bin 0 -> 16499 bytes resource/fr/sys_startup/translate/en.ts | 1042 + resource/fr/workBench/translate/fr.qm | Bin 0 -> 26663 bytes resource/fr/workBench/translate/fr.ts | 1418 ++ resource/fr/workBench/workBench.json | 176 + .../zh/apc_if_srv/translate/apc_if_srv_zh.mo | Bin 0 -> 513 bytes .../zh/apc_if_srv/translate/apc_if_srv_zh.po | 59 + .../translate/app_bio_identify_srv_zh.mo | Bin 0 -> 718 bytes .../translate/app_bio_identify_srv_zh.po | 54 + resource/zh/app_fbd/translate/app_fbd_zh.mo | Bin 0 -> 949 bytes resource/zh/app_fbd/translate/app_fbd_zh.po | 40 + .../zh/fbd_editor/temp/evtpushstyletemp.json | 75 + .../zh/fbd_editor/translate/fbd_editor_zh.qm | 1 + .../zh/fbd_editor/translate/fbd_editor_zh.ts | 2319 ++ .../zh/fbd_editor/translate/platform_zh.qm | 1 + .../zh/fbd_editor/translate/platform_zh.ts | 2246 ++ resource/zh/fes/translate/fes_zh.mo | Bin 0 -> 496 bytes resource/zh/fes/translate/fes_zh.po | 798 + resource/zh/gui/icon/alarm/back.png | Bin 0 -> 85729 bytes resource/zh/gui/icon/alarm/icon_中.png | Bin 0 -> 261 bytes resource/zh/gui/icon/alarm/icon_低.png | Bin 0 -> 260 bytes resource/zh/gui/icon/alarm/icon_正常.png | Bin 0 -> 376 bytes resource/zh/gui/icon/alarm/icon_紧急.png | Bin 0 -> 258 bytes resource/zh/gui/icon/alarm/icon_高.png | Bin 0 -> 253 bytes resource/zh/gui/icon/alarm/trend_dark.png | Bin 0 -> 438 bytes resource/zh/gui/icon/alarm/trend_light.png | Bin 0 -> 507 bytes resource/zh/gui/icon/alarm/video_dark.png | Bin 0 -> 400 bytes resource/zh/gui/icon/alarm/video_light.png | Bin 0 -> 233 bytes resource/zh/gui/icon/alarm/wave_dark.png | Bin 0 -> 613 bytes resource/zh/gui/icon/alarm/wave_light.png | Bin 0 -> 963 bytes resource/zh/gui/icon/asset/record.png | Bin 0 -> 1028 bytes resource/zh/gui/icon/bi/face_dark.png | Bin 0 -> 2125 bytes resource/zh/gui/icon/bi/face_light.png | Bin 0 -> 2612 bytes resource/zh/gui/icon/hmi/DataOpt.png | Bin 0 -> 805 bytes resource/zh/gui/icon/hmi/DevRealData.png | Bin 0 -> 795 bytes resource/zh/gui/icon/hmi/HangPanel.png | Bin 0 -> 716 bytes resource/zh/gui/icon/hmi/Media.png | Bin 0 -> 616 bytes resource/zh/gui/icon/hmi/PixelMap.png | Bin 0 -> 350 bytes resource/zh/gui/icon/hmi/PolymorphicText.png | Bin 0 -> 314 bytes .../zh/gui/icon/hmi/accidentRecollect.png | Bin 0 -> 854 bytes resource/zh/gui/icon/hmi/alarm.png | Bin 0 -> 438 bytes resource/zh/gui/icon/hmi/alarmAnalysis.png | Bin 0 -> 1298 bytes resource/zh/gui/icon/hmi/alarmManagement.png | Bin 0 -> 1281 bytes resource/zh/gui/icon/hmi/alarmShielding.png | Bin 0 -> 1100 bytes resource/zh/gui/icon/hmi/alarmStatistics.png | Bin 0 -> 1111 bytes resource/zh/gui/icon/hmi/alignBottom.png | Bin 0 -> 321 bytes resource/zh/gui/icon/hmi/alignHorizontal.png | Bin 0 -> 361 bytes resource/zh/gui/icon/hmi/alignLeft.png | Bin 0 -> 333 bytes resource/zh/gui/icon/hmi/alignRight.png | Bin 0 -> 334 bytes resource/zh/gui/icon/hmi/alignTop.png | Bin 0 -> 326 bytes resource/zh/gui/icon/hmi/alignVertical.png | Bin 0 -> 395 bytes resource/zh/gui/icon/hmi/align_bottom.png | Bin 0 -> 321 bytes resource/zh/gui/icon/hmi/batchCreate.png | Bin 0 -> 430 bytes resource/zh/gui/icon/hmi/besselCurve.png | Bin 0 -> 454 bytes resource/zh/gui/icon/hmi/blockInformation.png | Bin 0 -> 814 bytes resource/zh/gui/icon/hmi/blq.png | Bin 0 -> 284 bytes resource/zh/gui/icon/hmi/bottom.png | Bin 0 -> 305 bytes resource/zh/gui/icon/hmi/brokenLine.png | Bin 0 -> 192 bytes resource/zh/gui/icon/hmi/browse.png | Bin 0 -> 471 bytes resource/zh/gui/icon/hmi/button.png | Bin 0 -> 294 bytes resource/zh/gui/icon/hmi/byq2.png | Bin 0 -> 499 bytes resource/zh/gui/icon/hmi/byq3.png | Bin 0 -> 796 bytes resource/zh/gui/icon/hmi/byq4.png | Bin 0 -> 849 bytes resource/zh/gui/icon/hmi/cam.png | Bin 0 -> 300 bytes resource/zh/gui/icon/hmi/cam2.png | Bin 0 -> 766 bytes resource/zh/gui/icon/hmi/cfd.png | Bin 0 -> 322 bytes resource/zh/gui/icon/hmi/checkAll.png | Bin 0 -> 328 bytes resource/zh/gui/icon/hmi/checkbox.png | Bin 0 -> 457 bytes resource/zh/gui/icon/hmi/circle.png | Bin 0 -> 447 bytes resource/zh/gui/icon/hmi/circularArc.png | Bin 0 -> 356 bytes resource/zh/gui/icon/hmi/combine.png | Bin 0 -> 322 bytes resource/zh/gui/icon/hmi/combobox.png | Bin 0 -> 181 bytes .../zh/gui/icon/hmi/coordinationCurve.png | Bin 0 -> 776 bytes resource/zh/gui/icon/hmi/copy.png | Bin 0 -> 337 bytes resource/zh/gui/icon/hmi/curve.png | Bin 0 -> 346 bytes resource/zh/gui/icon/hmi/cut.png | Bin 0 -> 548 bytes resource/zh/gui/icon/hmi/date.png | Bin 0 -> 269 bytes resource/zh/gui/icon/hmi/db.png | Bin 0 -> 304 bytes resource/zh/gui/icon/hmi/ddzsq.png | Bin 0 -> 426 bytes resource/zh/gui/icon/hmi/delete.png | Bin 0 -> 301 bytes resource/zh/gui/icon/hmi/devInfo.png | Bin 0 -> 347 bytes resource/zh/gui/icon/hmi/discombine.png | Bin 0 -> 307 bytes resource/zh/gui/icon/hmi/dj.png | Bin 0 -> 418 bytes resource/zh/gui/icon/hmi/dkq.png | Bin 0 -> 345 bytes resource/zh/gui/icon/hmi/dl.png | Bin 0 -> 2902 bytes resource/zh/gui/icon/hmi/dlq.png | Bin 0 -> 161 bytes resource/zh/gui/icon/hmi/dongzuo.png | Bin 0 -> 256 bytes resource/zh/gui/icon/hmi/dr.png | Bin 0 -> 468 bytes resource/zh/gui/icon/hmi/dr1.png | Bin 0 -> 176 bytes resource/zh/gui/icon/hmi/drdqdz.png | Bin 0 -> 390 bytes resource/zh/gui/icon/hmi/dydlq.png | Bin 0 -> 331 bytes resource/zh/gui/icon/hmi/dykg.png | Bin 0 -> 278 bytes resource/zh/gui/icon/hmi/dz.png | Bin 0 -> 302 bytes resource/zh/gui/icon/hmi/dzz.png | Bin 0 -> 288 bytes resource/zh/gui/icon/hmi/ellipse.png | Bin 0 -> 369 bytes resource/zh/gui/icon/hmi/equHorizontal.png | Bin 0 -> 247 bytes resource/zh/gui/icon/hmi/equVertical.png | Bin 0 -> 271 bytes resource/zh/gui/icon/hmi/equalLarge.png | Bin 0 -> 428 bytes resource/zh/gui/icon/hmi/equalSmall.png | Bin 0 -> 389 bytes resource/zh/gui/icon/hmi/event.png | Bin 0 -> 418 bytes resource/zh/gui/icon/hmi/faultRecording.png | Bin 0 -> 555 bytes resource/zh/gui/icon/hmi/fbdEditor.png | Bin 0 -> 602 bytes resource/zh/gui/icon/hmi/fdj.png | Bin 0 -> 366 bytes resource/zh/gui/icon/hmi/fhkg.png | Bin 0 -> 295 bytes resource/zh/gui/icon/hmi/fileSync.png | Bin 0 -> 396 bytes resource/zh/gui/icon/hmi/fldkq.png | Bin 0 -> 710 bytes resource/zh/gui/icon/hmi/gaojing.png | Bin 0 -> 371 bytes resource/zh/gui/icon/hmi/glkg.png | Bin 0 -> 279 bytes resource/zh/gui/icon/hmi/gp.png | Bin 0 -> 366 bytes resource/zh/gui/icon/hmi/grid.png | Bin 0 -> 163 bytes resource/zh/gui/icon/hmi/gzp.png | Bin 0 -> 272 bytes resource/zh/gui/icon/hmi/hgq.png | Bin 0 -> 327 bytes resource/zh/gui/icon/hmi/historicalData.png | Bin 0 -> 760 bytes resource/zh/gui/icon/hmi/horizontalMirror.png | Bin 0 -> 347 bytes resource/zh/gui/icon/hmi/hotkey.png | Bin 0 -> 221 bytes resource/zh/gui/icon/hmi/jcq.png | Bin 0 -> 338 bytes resource/zh/gui/icon/hmi/jd.png | Bin 0 -> 244 bytes resource/zh/gui/icon/hmi/jddz.png | Bin 0 -> 371 bytes resource/zh/gui/icon/hmi/jdyf.png | Bin 0 -> 395 bytes resource/zh/gui/icon/hmi/jfc.png | Bin 0 -> 274 bytes resource/zh/gui/icon/hmi/jx.png | Bin 0 -> 366 bytes resource/zh/gui/icon/hmi/kgj.png | Bin 0 -> 378 bytes resource/zh/gui/icon/hmi/kx.png | Bin 0 -> 480 bytes resource/zh/gui/icon/hmi/label.png | Bin 0 -> 280 bytes resource/zh/gui/icon/hmi/levelDown.png | Bin 0 -> 310 bytes resource/zh/gui/icon/hmi/levelUp.png | Bin 0 -> 312 bytes resource/zh/gui/icon/hmi/link.png | Bin 0 -> 1141 bytes resource/zh/gui/icon/hmi/linkageControl.png | Bin 0 -> 917 bytes resource/zh/gui/icon/hmi/list.png | Bin 0 -> 264 bytes resource/zh/gui/icon/hmi/ljbyq.png | Bin 0 -> 467 bytes resource/zh/gui/icon/hmi/ljbyq1.png | Bin 0 -> 533 bytes resource/zh/gui/icon/hmi/ljbyq2.png | Bin 0 -> 512 bytes resource/zh/gui/icon/hmi/lock.png | Bin 0 -> 323 bytes resource/zh/gui/icon/hmi/menu.png | Bin 0 -> 369 bytes resource/zh/gui/icon/hmi/ml.png | Bin 0 -> 468 bytes resource/zh/gui/icon/hmi/mlbzt.png | Bin 0 -> 208 bytes resource/zh/gui/icon/hmi/mx.png | Bin 0 -> 141 bytes resource/zh/gui/icon/hmi/new.png | Bin 0 -> 336 bytes resource/zh/gui/icon/hmi/open.png | Bin 0 -> 369 bytes resource/zh/gui/icon/hmi/operationTicket.png | Bin 0 -> 770 bytes resource/zh/gui/icon/hmi/paste.png | Bin 0 -> 364 bytes resource/zh/gui/icon/hmi/pie.png | Bin 0 -> 464 bytes resource/zh/gui/icon/hmi/plugin.png | Bin 0 -> 419 bytes resource/zh/gui/icon/hmi/pollingManage.png | Bin 0 -> 879 bytes resource/zh/gui/icon/hmi/polygon.png | Bin 0 -> 319 bytes resource/zh/gui/icon/hmi/protectConsValue.png | Bin 0 -> 1205 bytes resource/zh/gui/icon/hmi/publish.png | Bin 0 -> 442 bytes resource/zh/gui/icon/hmi/qybyq.png | Bin 0 -> 548 bytes resource/zh/gui/icon/hmi/qybyq1.png | Bin 0 -> 3428 bytes resource/zh/gui/icon/hmi/radiobutton.png | Bin 0 -> 431 bytes resource/zh/gui/icon/hmi/rectangular.png | Bin 0 -> 158 bytes resource/zh/gui/icon/hmi/redo.png | Bin 0 -> 538 bytes resource/zh/gui/icon/hmi/report.png | Bin 0 -> 270 bytes resource/zh/gui/icon/hmi/run.png | Bin 0 -> 405 bytes resource/zh/gui/icon/hmi/save.png | Bin 0 -> 253 bytes resource/zh/gui/icon/hmi/saveAs.png | Bin 0 -> 356 bytes resource/zh/gui/icon/hmi/sc.png | Bin 0 -> 291 bytes resource/zh/gui/icon/hmi/sc_down.png | Bin 0 -> 15147 bytes resource/zh/gui/icon/hmi/sc_up.png | Bin 0 -> 15133 bytes resource/zh/gui/icon/hmi/scriptEditor.png | Bin 0 -> 429 bytes resource/zh/gui/icon/hmi/seqControlManage.png | Bin 0 -> 266 bytes resource/zh/gui/icon/hmi/sjbyq.png | Bin 0 -> 522 bytes resource/zh/gui/icon/hmi/sjx.png | Bin 0 -> 328 bytes resource/zh/gui/icon/hmi/spinbox.png | Bin 0 -> 326 bytes resource/zh/gui/icon/hmi/stick.png | Bin 0 -> 243 bytes resource/zh/gui/icon/hmi/straightLine.png | Bin 0 -> 227 bytes resource/zh/gui/icon/hmi/tablewidget.png | Bin 0 -> 163 bytes resource/zh/gui/icon/hmi/terminal.png | Bin 0 -> 420 bytes resource/zh/gui/icon/hmi/text.png | Bin 0 -> 172 bytes resource/zh/gui/icon/hmi/textInput.png | Bin 0 -> 277 bytes resource/zh/gui/icon/hmi/textbox.png | Bin 0 -> 244 bytes resource/zh/gui/icon/hmi/tiaozha.png | Bin 0 -> 433 bytes resource/zh/gui/icon/hmi/time.png | Bin 0 -> 420 bytes resource/zh/gui/icon/hmi/top.png | Bin 0 -> 288 bytes resource/zh/gui/icon/hmi/topo.png | Bin 0 -> 300 bytes resource/zh/gui/icon/hmi/travelBriefing.png | Bin 0 -> 665 bytes resource/zh/gui/icon/hmi/treewidget.png | Bin 0 -> 230 bytes resource/zh/gui/icon/hmi/trend.png | Bin 0 -> 393 bytes resource/zh/gui/icon/hmi/trtczhkg.png | Bin 0 -> 341 bytes resource/zh/gui/icon/hmi/txzc.png | Bin 0 -> 189 bytes resource/zh/gui/icon/hmi/tyztxs.png | Bin 0 -> 407 bytes resource/zh/gui/icon/hmi/undo.png | Bin 0 -> 415 bytes resource/zh/gui/icon/hmi/userGroupManage.png | Bin 0 -> 1184 bytes resource/zh/gui/icon/hmi/verticalMirror.png | Bin 0 -> 381 bytes resource/zh/gui/icon/hmi/viewOff.png | Bin 0 -> 502 bytes resource/zh/gui/icon/hmi/viewOn.png | Bin 0 -> 471 bytes resource/zh/gui/icon/hmi/wgbc.png | Bin 0 -> 531 bytes resource/zh/gui/icon/hmi/workTicket.png | Bin 0 -> 530 bytes resource/zh/gui/icon/hmi/workforceManage.png | Bin 0 -> 835 bytes resource/zh/gui/icon/hmi/xd.png | Bin 0 -> 301 bytes resource/zh/gui/icon/hmi/xdc.png | Bin 0 -> 247 bytes resource/zh/gui/icon/hmi/xl.png | Bin 0 -> 288 bytes resource/zh/gui/icon/hmi/ybp.png | Bin 0 -> 450 bytes resource/zh/gui/icon/hmi/yc.png | Bin 0 -> 359 bytes resource/zh/gui/icon/hmi/yfjdzhkg.png | Bin 0 -> 336 bytes resource/zh/gui/icon/hmi/yichang.png | Bin 0 -> 341 bytes resource/zh/gui/icon/hmi/zlq.png | Bin 0 -> 438 bytes resource/zh/gui/icon/hmi/zlq2.png | Bin 0 -> 354 bytes resource/zh/gui/icon/ipc/camera-hovered.svg | 6 + resource/zh/gui/icon/ipc/camera.svg | 6 + resource/zh/gui/icon/ipc/down-clicked.png | Bin 0 -> 2635 bytes resource/zh/gui/icon/ipc/down-hovered.png | Bin 0 -> 2743 bytes resource/zh/gui/icon/ipc/down.png | Bin 0 -> 2813 bytes resource/zh/gui/icon/ipc/icon+.png | Bin 0 -> 227 bytes resource/zh/gui/icon/ipc/icon-.png | Bin 0 -> 8194 bytes resource/zh/gui/icon/ipc/icon_Silence.png | Bin 0 -> 413 bytes resource/zh/gui/icon/ipc/icon_camer.png | Bin 0 -> 657 bytes resource/zh/gui/icon/ipc/icon_down.png | Bin 0 -> 357 bytes resource/zh/gui/icon/ipc/icon_down_click.png | Bin 0 -> 359 bytes resource/zh/gui/icon/ipc/icon_key.png | Bin 0 -> 14567 bytes resource/zh/gui/icon/ipc/icon_left.png | Bin 0 -> 342 bytes resource/zh/gui/icon/ipc/icon_left_click.png | Bin 0 -> 355 bytes resource/zh/gui/icon/ipc/icon_play.png | Bin 0 -> 694 bytes resource/zh/gui/icon/ipc/icon_right.png | Bin 0 -> 361 bytes resource/zh/gui/icon/ipc/icon_right_click.png | Bin 0 -> 379 bytes resource/zh/gui/icon/ipc/icon_suspend.png | Bin 0 -> 667 bytes resource/zh/gui/icon/ipc/icon_up.png | Bin 0 -> 376 bytes resource/zh/gui/icon/ipc/icon_up_click.png | Bin 0 -> 376 bytes resource/zh/gui/icon/ipc/icon_voice.png | Bin 0 -> 495 bytes resource/zh/gui/icon/ipc/left-clicked.png | Bin 0 -> 2382 bytes resource/zh/gui/icon/ipc/left-hovered.png | Bin 0 -> 2377 bytes resource/zh/gui/icon/ipc/left.png | Bin 0 -> 2409 bytes resource/zh/gui/icon/ipc/pause.png | Bin 0 -> 2958 bytes resource/zh/gui/icon/ipc/play-hovered.png | Bin 0 -> 246 bytes resource/zh/gui/icon/ipc/play-hovered.svg | 7 + resource/zh/gui/icon/ipc/play.png | Bin 0 -> 5454 bytes resource/zh/gui/icon/ipc/right-clicked.png | Bin 0 -> 2253 bytes resource/zh/gui/icon/ipc/right-hovered.png | Bin 0 -> 2294 bytes resource/zh/gui/icon/ipc/right.png | Bin 0 -> 2381 bytes resource/zh/gui/icon/ipc/up-clicked.png | Bin 0 -> 2699 bytes resource/zh/gui/icon/ipc/up-hovered.png | Bin 0 -> 2751 bytes resource/zh/gui/icon/ipc/up.png | Bin 0 -> 2911 bytes resource/zh/gui/icon/ipc/vol-hovered.svg | 6 + resource/zh/gui/icon/ipc/vol-mute.svg | 1 + resource/zh/gui/icon/ipc/vol.svg | 6 + resource/zh/gui/icon/robot/charge.gif | Bin 0 -> 23177 bytes resource/zh/gui/icon/robot/charge.png | Bin 0 -> 43118 bytes resource/zh/gui/icon/robot/cut.png | Bin 0 -> 3343 bytes resource/zh/gui/icon/robot/down_arrow.png | Bin 0 -> 1040 bytes resource/zh/gui/icon/robot/free.gif | Bin 0 -> 26589 bytes resource/zh/gui/icon/robot/free.png | Bin 0 -> 42966 bytes resource/zh/gui/icon/robot/overhaul.gif | Bin 0 -> 138602 bytes resource/zh/gui/icon/robot/overhaul.png | Bin 0 -> 44428 bytes resource/zh/gui/icon/robot/overlook.gif | Bin 0 -> 411066 bytes resource/zh/gui/icon/robot/overlook.png | Bin 0 -> 44761 bytes resource/zh/gui/icon/robot/pause.png | Bin 0 -> 1180 bytes resource/zh/gui/icon/robot/play.png | Bin 0 -> 1513 bytes resource/zh/gui/icon/robot/robotbottom.png | Bin 0 -> 10223 bytes resource/zh/gui/icon/robot/search.png | Bin 0 -> 678 bytes resource/zh/gui/icon/robot/up_arrow.png | Bin 0 -> 1081 bytes resource/zh/gui/icon/robot/voiceClose.png | Bin 0 -> 2596 bytes resource/zh/gui/icon/robot/voiceOpen.png | Bin 0 -> 2683 bytes resource/zh/gui/translate/hmi_zh.qm | Bin 0 -> 66930 bytes resource/zh/gui/translate/hmi_zh.ts | 6334 ++++++ resource/zh/gui/translate/icon_zh.ts | 0 resource/zh/gui/translate/plugin_zh.qm | Bin 0 -> 106518 bytes resource/zh/gui/translate/plugin_zh.ts | 10265 +++++++++ .../translate/linkage_server_zh.mo | Bin 0 -> 517 bytes .../translate/linkage_server_zh.po | 340 + resource/zh/model_studio/icons/RTU.png | Bin 0 -> 394 bytes resource/zh/model_studio/icons/alarm.png | Bin 0 -> 377 bytes resource/zh/model_studio/icons/anquan.png | Bin 0 -> 316 bytes resource/zh/model_studio/icons/app.png | Bin 0 -> 211 bytes resource/zh/model_studio/icons/ats.png | Bin 0 -> 415 bytes resource/zh/model_studio/icons/bas.png | Bin 0 -> 427 bytes resource/zh/model_studio/icons/base.png | Bin 0 -> 285 bytes resource/zh/model_studio/icons/baseinfo.png | Bin 0 -> 583 bytes resource/zh/model_studio/icons/channel.png | Bin 0 -> 356 bytes resource/zh/model_studio/icons/collection.png | Bin 0 -> 433 bytes resource/zh/model_studio/icons/db.png | Bin 0 -> 304 bytes resource/zh/model_studio/icons/define.png | Bin 0 -> 310 bytes resource/zh/model_studio/icons/dept.png | Bin 0 -> 254 bytes resource/zh/model_studio/icons/devSame.png | Bin 0 -> 368 bytes resource/zh/model_studio/icons/devType.png | Bin 0 -> 376 bytes resource/zh/model_studio/icons/device.png | Bin 0 -> 1766 bytes .../zh/model_studio/icons/device_child.png | Bin 0 -> 259 bytes resource/zh/model_studio/icons/dict.png | Bin 0 -> 546 bytes resource/zh/model_studio/icons/fesCfg.png | Bin 0 -> 368 bytes resource/zh/model_studio/icons/forward.png | Bin 0 -> 344 bytes resource/zh/model_studio/icons/func.png | Bin 0 -> 310 bytes resource/zh/model_studio/icons/generate.png | Bin 0 -> 444 bytes resource/zh/model_studio/icons/icon2.gif | Bin 0 -> 1689 bytes resource/zh/model_studio/icons/icon_add.png | Bin 0 -> 1727 bytes resource/zh/model_studio/icons/init.png | Bin 0 -> 378 bytes resource/zh/model_studio/icons/main_alarm.png | Bin 0 -> 579 bytes .../zh/model_studio/icons/main_common.png | Bin 0 -> 429 bytes resource/zh/model_studio/icons/main_dev.png | Bin 0 -> 426 bytes resource/zh/model_studio/icons/main_exit.png | Bin 0 -> 405 bytes resource/zh/model_studio/icons/main_fes.png | Bin 0 -> 842 bytes .../zh/model_studio/icons/main_formula.png | Bin 0 -> 748 bytes .../zh/model_studio/icons/main_linkage.png | Bin 0 -> 413 bytes .../model_studio/icons/main_plan_curves.png | Bin 0 -> 688 bytes .../zh/model_studio/icons/main_sample.png | Bin 0 -> 813 bytes resource/zh/model_studio/icons/main_seq.png | Bin 0 -> 557 bytes .../zh/model_studio/icons/main_template.png | Bin 0 -> 388 bytes .../model_studio/icons/main_template_bind.png | Bin 0 -> 352 bytes resource/zh/model_studio/icons/main_tools.png | Bin 0 -> 1009 bytes resource/zh/model_studio/icons/main_user.png | Bin 0 -> 607 bytes resource/zh/model_studio/icons/msg.png | Bin 0 -> 306 bytes resource/zh/model_studio/icons/network.png | Bin 0 -> 484 bytes resource/zh/model_studio/icons/pa.png | Bin 0 -> 388 bytes resource/zh/model_studio/icons/pic.png | Bin 0 -> 275 bytes resource/zh/model_studio/icons/pis.png | Bin 0 -> 392 bytes resource/zh/model_studio/icons/power.png | Bin 0 -> 692 bytes resource/zh/model_studio/icons/report.png | Bin 0 -> 198 bytes resource/zh/model_studio/icons/role.png | Bin 0 -> 406 bytes resource/zh/model_studio/icons/temp.png | Bin 0 -> 373 bytes resource/zh/model_studio/icons/tempType.png | Bin 0 -> 364 bytes resource/zh/model_studio/icons/tv_icon.png | Bin 0 -> 349 bytes resource/zh/model_studio/icons/user.png | Bin 0 -> 445 bytes resource/zh/model_studio/icons/userGroup.png | Bin 0 -> 393 bytes .../setting/fileLogic/configcheck.xml | 430 + .../model_studio/setting/style/fesTemp.xlsx | Bin 0 -> 19497 bytes .../model_studio/setting/style/kbdTable.qss | 3 + .../setting/style/psc3000Temp.xlsx | Bin 0 -> 13010 bytes .../model_studio/setting/style/scrollBar.qss | 71 + .../zh/model_studio/setting/style/toolBar.qss | 3 + .../zh/model_studio/setting/table/ACCUML.xml | 39 + .../setting/table/ACCUML_LIMIT_INFO.xml | 27 + .../setting/table/ACCUML_MAP_TO_FES.xml | 21 + .../setting/table/ACCUML_TEMP_DEFINE.xml | 44 + .../setting/table/ACS_DEVICE_INFO.xml | 12 + .../setting/table/ADD_POINT_FROM_FES_TEMP.xml | 8 + .../setting/table/ALARM_ACTION_DEFINE.xml | 8 + .../setting/table/ALARM_KEYWORD_DEFINE.xml | 8 + .../setting/table/ALARM_LEVEL_DEFINE.xml | 11 + .../setting/table/ALARM_LEVEL_SOUND_DEF.xml | 8 + .../setting/table/ALARM_MANNER_DEFINE.xml | 12 + .../setting/table/ALARM_SMS_CONFIG.xml | 13 + .../setting/table/ALARM_SMS_DEVICE.xml | 14 + .../setting/table/ALARM_SMS_RULE.xml | 11 + .../setting/table/ALARM_STATUS_DEFINE.xml | 11 + .../setting/table/ALARM_STATUS_DIG_SET.xml | 9 + .../setting/table/ALARM_TYPE_DEFINE.xml | 9 + .../zh/model_studio/setting/table/ANALOG.xml | 39 + .../setting/table/ANALOG_CONTROL.xml | 24 + .../setting/table/ANALOG_LIMIT_INFO.xml | 30 + .../setting/table/ANALOG_MAP_TO_FES.xml | 22 + .../setting/table/ANALOG_OVER_STATISTICS.xml | 26 + .../setting/table/ANALOG_TEMP_DEFINE.xml | 54 + .../model_studio/setting/table/APC_ANALOG.xml | 12 + .../setting/table/APC_DIGITAL.xml | 10 + .../setting/table/ATS_FES_LOCATION_INFO.xml | 7 + .../setting/table/ATS_FES_PLATFORM_INFO.xml | 8 + .../setting/table/BACKGROUND_X_FES_ACCUML.xml | 18 + .../setting/table/BACKGROUND_X_FES_ANALOG.xml | 18 + .../setting/table/BACKGROUND_X_FES_DIGTAL.xml | 18 + .../setting/table/BAS_CRAFT_DEF.xml | 8 + .../setting/table/BAS_MODE_DEF.xml | 11 + .../setting/table/BAS_MODE_TYPE.xml | 7 + .../table/BAS_TIMETABLE_CTRL_PARAM.xml | 15 + .../setting/table/BAS_TIMETABLE_DEF.xml | 9 + .../setting/table/BAS_TIMETABLE_INFO.xml | 10 + .../setting/table/BAS_TIMETABLE_SCHEDULE.xml | 18 + .../setting/table/CALC_FUNC_DEF.xml | 10 + .../setting/table/CALC_GROUP_DEF.xml | 8 + .../setting/table/CALC_IN_PARA.xml | 12 + .../setting/table/CALC_OUT_PARA.xml | 11 + .../setting/table/CALC_PARA_DEF.xml | 8 + .../setting/table/CCTV_CAMERA_INFO.xml | 17 + .../setting/table/CCTV_MONITOR_INFO.xml | 15 + .../setting/table/CCTV_ORIENTATION.xml | 11 + .../setting/table/CCTV_SEPARATOR_INFO.xml | 45 + .../model_studio/setting/table/DEV_GROUP.xml | 17 + .../model_studio/setting/table/DEV_INFO.xml | 34 + .../setting/table/DEV_INFO_FOR_EMPTY_ADD.xml | 34 + .../setting/table/DEV_TEMP_DEF.xml | 13 + .../setting/table/DEV_TEMP_GROUP.xml | 7 + .../setting/table/DEV_TRIGGER_FLAG.xml | 11 + .../setting/table/DEV_TYPE_DEF.xml | 9 + .../setting/table/DEV_TYPE_DEF_61850.xml | 11 + .../table/DICT_MENU_INFO_PNT_CLASS.xml | 9 + .../setting/table/DICT_POINT_TYPE.xml | 32 + .../table/DICT_POINT_TYPE_FOR_POINT_ADD.xml | 32 + .../setting/table/DICT_STATE_TEXT_INFO.xml | 11 + .../setting/table/DICT_TEXT_DEFINE.xml | 9 + .../setting/table/DICT_UNIT_INFO.xml | 8 + .../setting/table/DICT_VOL_LEVEL.xml | 11 + .../zh/model_studio/setting/table/DIGITAL.xml | 73 + .../setting/table/DIGITAL_CONTROL.xml | 25 + .../setting/table/DIGITAL_MAP_TO_FES.xml | 23 + .../setting/table/DIGITAL_TEMP_DEFINE.xml | 59 + .../setting/table/FAULT_RECALL_COND_DEF.xml | 11 + .../setting/table/FBD_GROUP_INFO.xml | 16 + .../model_studio/setting/table/FES_ACCUML.xml | 33 + .../model_studio/setting/table/FES_ANALOG.xml | 45 + .../setting/table/FES_ANALOG_CTRL.xml | 31 + .../setting/table/FES_CHANNEL_PARA.xml | 52 + .../model_studio/setting/table/FES_CONST.xml | 40 + .../setting/table/FES_CONST_TEMP.xml | 34 + .../setting/table/FES_DATA_BLOCK.xml | 33 + .../setting/table/FES_DATA_BLOCK_TEMP.xml | 29 + .../setting/table/FES_DEV_ACCUNL_TEMP_DEF.xml | 51 + .../table/FES_DEV_ANALOG_CTRL_TEMP_DEF.xml | 51 + .../setting/table/FES_DEV_ANALOG_TEMP_DEF.xml | 51 + .../table/FES_DEV_DIGITAL_CTRL_TEMP_DEF.xml | 51 + .../table/FES_DEV_DIGITAL_TEMP_DEF.xml | 51 + .../setting/table/FES_DEV_INFO.xml | 18 + .../setting/table/FES_DEV_INFO_FOR_ADD.xml | 18 + .../table/FES_DEV_INFO_FOR_EMPTY_TEMP.xml | 18 + .../table/FES_DEV_MIX_CTRL_TEMP_DEF.xml | 51 + .../setting/table/FES_DEV_MIX_TEMP_DEF.xml | 51 + .../setting/table/FES_DEV_PT_TEMP_DEF.xml | 51 + .../setting/table/FES_DEV_TEMP_DEF.xml | 12 + .../table/FES_DEV_TEMP_DEF_FOR_ADD.xml | 12 + .../table/FES_DEV_TEMP_DEF_FOR_IMPORT.xml | 7 + .../setting/table/FES_DEV_TYPE_DEF.xml | 11 + .../setting/table/FES_DIGITAL.xml | 36 + .../setting/table/FES_DIGITAL_CTRL.xml | 37 + .../zh/model_studio/setting/table/FES_MIX.xml | 34 + .../setting/table/FES_MIX_CTRL.xml | 31 + .../setting/table/FES_PROTOCOL.xml | 10 + .../setting/table/FES_RTU_PARA.xml | 33 + .../setting/table/FORWARD_ACCUML.xml | 32 + .../setting/table/FORWARD_ANALOG.xml | 34 + .../setting/table/FORWARD_ANALOG_CTRL.xml | 32 + .../setting/table/FORWARD_DIGITAL_CTRL.xml | 40 + .../setting/table/FORWARD_DIGITAL_DOUBLE.xml | 32 + .../setting/table/FORWARD_DIGITAL_SINGLE.xml | 32 + .../setting/table/FORWARD_MIX.xml | 32 + .../setting/table/FORWARD_MIX_CTRL.xml | 31 + .../setting/table/HIS_WORK_TICKET.xml | 8 + .../setting/table/HMI_TYPE_INFO.xml | 10 + .../setting/table/IA_DISPOSAL_PLAN.xml | 8 + .../setting/table/INVALID_SYS_TABLE_INFO.xml | 17 + .../setting/table/LINKAGE_ACTION.xml | 13 + .../setting/table/LINKAGE_ACTION_FOR_BAS.xml | 12 + .../setting/table/LINKAGE_ACTION_FOR_MSG.xml | 12 + .../setting/table/LINKAGE_ACTION_FOR_PA.xml | 19 + .../setting/table/LINKAGE_ACTION_FOR_PIS.xml | 19 + .../table/LINKAGE_ACTION_FOR_PSCADA.xml | 12 + .../table/LINKAGE_ACTION_FOR_PUSH_PIC.xml | 12 + .../setting/table/LINKAGE_DEFINE.xml | 10 + .../setting/table/LINKAGE_FUNCTION.xml | 17 + .../setting/table/LINKAGE_FUNCTION_LIST.xml | 7 + .../setting/table/LINKAGE_SETTING.xml | 14 + .../LINKAGE_SETTING_FOR_ADD_AND_MODIFY.xml | 14 + .../setting/table/LOAD_STAT_DEFINE.xml | 17 + .../zh/model_studio/setting/table/MIX.xml | 50 + .../setting/table/MIX_CONTROL.xml | 24 + .../setting/table/MIX_MAP_TO_FES.xml | 22 + .../model_studio/setting/table/MIX_METHOD.xml | 9 + .../setting/table/MIX_TEMP_DEFINE.xml | 45 + .../setting/table/OPT_CTRL_ACT_DEFINE.xml | 15 + .../setting/table/OPT_HANDOVER_GRP.xml | 17 + .../setting/table/OPT_INTERLOCK_DEFINE.xml | 9 + .../setting/table/OPT_INTERLOCK_PARA.xml | 31 + .../table/OPT_INTERLOCK_PARA_FOR_SELECT.xml | 28 + .../setting/table/OPT_SHIELD_DEFINE.xml | 14 + .../setting/table/OPT_TOKEN_DEFINE.xml | 18 + .../setting/table/PA_AREA_INFO.xml | 7 + .../setting/table/PA_AUDIO_INFO.xml | 9 + .../setting/table/PA_BROADCAST_GROUP.xml | 9 + .../setting/table/PA_CTRL_PARAM.xml | 7 + .../setting/table/PA_LOCATION_AREA_DEF.xml | 7 + .../setting/table/PA_LOCATION_SEQ_DEF.xml | 7 + .../setting/table/PA_OPERATOR_DEF.xml | 7 + .../setting/table/PA_OPERATOR_MAP.xml | 7 + .../setting/table/PA_TIMED_AUDIO.xml | 20 + .../setting/table/PIS_AREA_INFO.xml | 7 + .../setting/table/PIS_CTRL_PARAM.xml | 7 + .../setting/table/PIS_DISPLAY_INFO.xml | 17 + .../setting/table/PIS_FES_LOCATION_INFO.xml | 7 + .../setting/table/PIS_LOCATION_AREA_DEF.xml | 7 + .../setting/table/PIS_MESSAGE_INFO.xml | 9 + .../setting/table/PSC3000_FES_TEMP.xml | 7 + .../setting/table/REGION_INFO.xml | 10 + .../setting/table/REPORT_TYPE_INFO.xml | 9 + .../setting/table/RM_DEPT_DEF.xml | 9 + .../setting/table/RM_NORM_FUNC_DEF.xml | 9 + .../setting/table/RM_ROLE_DB_INFO.xml | 8 + .../setting/table/RM_ROLE_DEF.xml | 24 + .../setting/table/RM_ROLE_HMI_INFO.xml | 23 + .../setting/table/RM_ROLE_SPEF_REG.xml | 11 + .../setting/table/RM_SECURITY_DEF.xml | 11 + .../setting/table/RM_SPCL_FUNC_DEF.xml | 9 + .../setting/table/RM_USERG_DB_INFO.xml | 8 + .../setting/table/RM_USERG_DEF.xml | 31 + .../setting/table/RM_USERG_HMI_INFO.xml | 24 + .../setting/table/RM_USERG_RSP_INFO.xml | 20 + .../setting/table/RM_USER_DEF.xml | 55 + .../setting/table/RT_COLUMN_MODE.xml | 17 + .../setting/table/RT_TABLE_MODE.xml | 14 + .../model_studio/setting/table/SAFETY_DAY.xml | 8 + .../setting/table/SAMPLE_DEFINE.xml | 16 + .../setting/table/SEQUENCE_ACTION.xml | 13 + .../setting/table/SEQUENCE_DEFINE.xml | 10 + .../setting/table/SEQUENCE_FUNCTION.xml | 14 + .../setting/table/SEQUENCE_SETTING.xml | 10 + .../setting/table/STAT_INST_DEF.xml | 20 + .../setting/table/STAT_INST_PARA_GRP.xml | 11 + .../setting/table/STAT_INST_PARA_POINT.xml | 14 + .../table/STAT_INST_PARA_POINT_FOR_ADD.xml | 14 + .../setting/table/STAT_INST_PARA_TIME.xml | 22 + .../table/STAT_INST_PARA_TIME_FOR_ADD.xml | 22 + .../setting/table/STAT_INST_RET_GRP.xml | 11 + .../setting/table/STAT_INST_RET_PARA.xml | 17 + .../table/STAT_INST_RET_PARA_FOR_ADD.xml | 16 + .../setting/table/STAT_LINK_DEF.xml | 8 + .../setting/table/STAT_LINK_PARA.xml | 12 + .../setting/table/STAT_LINK_RET.xml | 12 + .../setting/table/STAT_TEMPLATE_DEF.xml | 11 + .../setting/table/STAT_TEMPLATE_PARA.xml | 12 + .../setting/table/STAT_TEMPLATE_RET.xml | 11 + .../setting/table/SWITCH_CFG_INFO.xml | 11 + .../setting/table/SYS_MODEL_MSG_RELAY.xml | 9 + .../table/TBL_FES_DEV_INFO_FOR_FES_ADD.xml | 15 + .../setting/table/TEMP_PLUGIN.xml | 7 + .../setting/table/TEMP_PLUGIN_DEV_MAP.xml | 7 + .../setting/table/TEMP_PLUGIN_FES_DEV_MAP.xml | 8 + .../table/TEMP_PLUGIN_POINT_MAP_ACC.xml | 10 + .../table/TEMP_PLUGIN_POINT_MAP_ANA.xml | 11 + .../table/TEMP_PLUGIN_POINT_MAP_DIG.xml | 19 + .../table/TEMP_PLUGIN_POINT_MAP_MIX.xml | 11 + .../table/TRIGGER_CONDITION_DEFINE.xml | 33 + .../setting/table/TRIGGER_FUNCTION_DEFINE.xml | 9 + .../setting/table/TRIGGER_PERIOD_DEFINE.xml | 11 + .../setting/table/TRIGGER_TIMER_DEFINE.xml | 8 + .../zh/model_studio/setting/table/sample.xml | 20 + .../setting/table/sys_model_app_info.xml | 10 + .../table/sys_model_dbconfig_domain.xml | 17 + .../setting/table/sys_model_dbconfig_node.xml | 16 + .../setting/table/sys_model_deploy_info.xml | 17 + .../setting/table/sys_model_domain_info.xml | 9 + .../setting/table/sys_model_location_info.xml | 20 + .../setting/table/sys_model_node_info.xml | 19 + .../setting/table/sys_model_process_info.xml | 25 + .../table/sys_model_sub_system_info.xml | 8 + .../setting/templateFile/PCS3000Template.csv | 1685 ++ .../setting/templateFile/devInstance.xlsx | Bin 0 -> 103643 bytes .../templateFile/instPluginTemplate.xlsx | Bin 0 -> 11613 bytes .../templateFile/thirdPartyDevTemplate.xlsx | Bin 0 -> 206497 bytes .../setting/tree/TriggerFuncTree.xml | 14 + .../setting/tree/TriggerParaTree.xml | 14 + .../model_studio/setting/tree/alarmTree.xml | 30 + .../zh/model_studio/setting/tree/app.json | 6 + resource/zh/model_studio/setting/tree/app.xml | 13 + .../setting/tree/autoRelation.json | 27 + .../zh/model_studio/setting/tree/calcFunc.xml | 14 + .../zh/model_studio/setting/tree/chan.xml | 12 + .../model_studio/setting/tree/commonTree.xml | 81 + .../setting/tree/ctrlActDefine.xml | 14 + .../zh/model_studio/setting/tree/deploy.json | 6 + .../zh/model_studio/setting/tree/deploy.xml | 13 + .../setting/tree/devInstListTree.xml | 18 + .../model_studio/setting/tree/devInstTree.xml | 14 + .../setting/tree/devInstTreeAll.xml | 16 + .../setting/tree/devInstTreeDev.xml | 12 + .../setting/tree/devInstTreeDevAndGrp.xml | 14 + .../tree/devInstTreeDevAndLocation.xml | 14 + .../setting/tree/devInstTreeGrp.xml | 12 + .../tree/devInstTreeGrpAndLocation.xml | 14 + .../setting/tree/devInstTreeLocation.xml | 12 + .../setting/tree/devModelTree.xml | 61 + .../model_studio/setting/tree/devTempTree.xml | 14 + .../setting/tree/expressionTree.xml | 15 + .../setting/tree/fesDevInstListTree.xml | 18 + .../setting/tree/fesDevTreeAll.xml | 16 + .../setting/tree/fesDevTreeDev.xml | 12 + .../setting/tree/fesDevTreeDevLocation.xml | 14 + .../setting/tree/fesDevTreeDevRTU.xml | 14 + .../setting/tree/fesDevTreeLocation.xml | 12 + .../setting/tree/fesDevTreeLocationRTU.xml | 14 + .../setting/tree/fesDevTreeRTU.xml | 12 + .../zh/model_studio/setting/tree/fesTree.xml | 18 + .../model_studio/setting/tree/location.json | 6 + .../zh/model_studio/setting/tree/location.xml | 26 + .../setting/tree/lockDefineTree.xml | 14 + .../model_studio/setting/tree/mainWindow.xml | 20 + .../model_studio/setting/tree/optLockPara.xml | 14 + .../setting/tree/pcs3000ImportData.json | 52 + .../setting/tree/pcs3000ToFes.json | 72 + .../zh/model_studio/setting/tree/projec.xml | 151 + resource/zh/model_studio/setting/tree/rt.json | 6 + .../zh/model_studio/setting/tree/rtTree.xml | 13 + .../zh/model_studio/setting/tree/rtuList.xml | 12 + .../model_studio/setting/tree/sampleTree.xml | 39 + .../setting/tree/statInstInput.xml | 14 + .../setting/tree/statInstOutput.xml | 14 + .../setting/tree/stateTextTree.xml | 14 + .../model_studio/setting/tree/staticsTree.xml | 14 + .../setting/tree/sysConfigTree.xml | 29 + .../setting/tree/textDefine.outline | 6 + .../model_studio/setting/tree/textDefine.xml | 13 + .../zh/model_studio/setting/tree/userTree.xml | 20 + .../zh/model_studio/translate/qt_zh_CN.qm | Bin 0 -> 119560 bytes .../zh/model_studio/translate/tableName.json | 42 + .../translate/operate_server_zh.mo | Bin 0 -> 511 bytes .../translate/operate_server_zh.po | 576 + resource/zh/public/dark/icon/Error.png | Bin 0 -> 2611 bytes resource/zh/public/dark/icon/Information.png | Bin 0 -> 2643 bytes resource/zh/public/dark/icon/Question.png | Bin 0 -> 3035 bytes resource/zh/public/dark/icon/Warning.png | Bin 0 -> 3041 bytes resource/zh/public/dark/icon/arrowBottom.png | Bin 0 -> 221 bytes resource/zh/public/dark/icon/arrowLeft.png | Bin 0 -> 211 bytes resource/zh/public/dark/icon/arrowRight.png | Bin 0 -> 211 bytes resource/zh/public/dark/icon/arrowTop.png | Bin 0 -> 199 bytes .../zh/public/dark/icon/box-down-disable.png | Bin 0 -> 273 bytes .../zh/public/dark/icon/box-down-normal.png | Bin 0 -> 221 bytes .../zh/public/dark/icon/box-down-select.png | Bin 0 -> 258 bytes .../zh/public/dark/icon/box-up-disable.png | Bin 0 -> 269 bytes .../zh/public/dark/icon/box-up-normal.png | Bin 0 -> 199 bytes .../zh/public/dark/icon/box-up-select.png | Bin 0 -> 252 bytes resource/zh/public/dark/icon/btn_close.png | Bin 0 -> 947 bytes resource/zh/public/dark/icon/btn_max.png | Bin 0 -> 1087 bytes resource/zh/public/dark/icon/btn_min.png | Bin 0 -> 372 bytes resource/zh/public/dark/icon/btn_normal.png | Bin 0 -> 525 bytes resource/zh/public/dark/icon/calendar.png | Bin 0 -> 422 bytes resource/zh/public/dark/icon/checked.png | Bin 0 -> 326 bytes resource/zh/public/dark/icon/ckb-disable.png | Bin 0 -> 147 bytes resource/zh/public/dark/icon/ckb-normal.png | Bin 0 -> 148 bytes .../zh/public/dark/icon/ckb-ptck-disable.png | Bin 0 -> 170 bytes .../zh/public/dark/icon/ckb-ptck-hover.png | Bin 0 -> 174 bytes resource/zh/public/dark/icon/ckb-ptck.png | Bin 0 -> 174 bytes .../public/dark/icon/ckb-select-disable.png | Bin 0 -> 319 bytes .../public/dark/icon/ckb-select-disablel.png | Bin 0 -> 2949 bytes .../zh/public/dark/icon/ckb-select-hover.png | Bin 0 -> 326 bytes .../zh/public/dark/icon/ckb-select-normal.png | Bin 0 -> 326 bytes .../zh/public/dark/icon/ckb-uncheck-hover.png | Bin 0 -> 148 bytes resource/zh/public/dark/icon/cut.png | Bin 0 -> 863 bytes resource/zh/public/dark/icon/min_logo.png | Bin 0 -> 504 bytes resource/zh/public/dark/icon/pause.png | Bin 0 -> 885 bytes resource/zh/public/dark/icon/play.png | Bin 0 -> 895 bytes resource/zh/public/dark/icon/radius.png | Bin 0 -> 481 bytes resource/zh/public/dark/icon/rkb-disable.png | Bin 0 -> 390 bytes resource/zh/public/dark/icon/rkb-hover.png | Bin 0 -> 414 bytes resource/zh/public/dark/icon/rkb-normal.png | Bin 0 -> 403 bytes .../public/dark/icon/rkb-select-disable.png | Bin 0 -> 462 bytes .../zh/public/dark/icon/rkb-select-normal.png | Bin 0 -> 485 bytes resource/zh/public/dark/icon/search.png | Bin 0 -> 536 bytes resource/zh/public/dark/icon/unchecked.png | Bin 0 -> 148 bytes resource/zh/public/dark/icon/voiceClose.png | Bin 0 -> 543 bytes resource/zh/public/dark/icon/voiceOpen.png | Bin 0 -> 746 bytes resource/zh/public/light/icon/Error.png | Bin 0 -> 2611 bytes resource/zh/public/light/icon/Information.png | Bin 0 -> 2643 bytes resource/zh/public/light/icon/Question.png | Bin 0 -> 3035 bytes resource/zh/public/light/icon/Slice 738.png | Bin 0 -> 1745 bytes resource/zh/public/light/icon/Warning.png | Bin 0 -> 3041 bytes .../public/light/icon/arrowBottom-normal.png | Bin 0 -> 2911 bytes resource/zh/public/light/icon/arrowBottom.png | Bin 0 -> 2916 bytes .../zh/public/light/icon/arrowLeft-normal.png | Bin 0 -> 2879 bytes resource/zh/public/light/icon/arrowLeft.png | Bin 0 -> 2881 bytes .../public/light/icon/arrowRight-normal.png | Bin 0 -> 2870 bytes resource/zh/public/light/icon/arrowRight.png | Bin 0 -> 2871 bytes .../zh/public/light/icon/arrowTop-normal.png | Bin 0 -> 2908 bytes resource/zh/public/light/icon/arrowTop.png | Bin 0 -> 2913 bytes .../zh/public/light/icon/background_img.png | Bin 0 -> 93433 bytes .../zh/public/light/icon/box-down-normal.png | Bin 0 -> 216 bytes .../zh/public/light/icon/box-down-select.png | Bin 0 -> 2916 bytes .../zh/public/light/icon/box-up-normal.png | Bin 0 -> 2899 bytes .../zh/public/light/icon/box-up-select.png | Bin 0 -> 230 bytes resource/zh/public/light/icon/btn_close.png | Bin 0 -> 965 bytes .../zh/public/light/icon/btn_dbManager.png | Bin 0 -> 1072 bytes resource/zh/public/light/icon/btn_down.png | Bin 0 -> 669 bytes resource/zh/public/light/icon/btn_left.png | Bin 0 -> 472 bytes .../zh/public/light/icon/btn_logManager.png | Bin 0 -> 724 bytes resource/zh/public/light/icon/btn_max.png | Bin 0 -> 1018 bytes resource/zh/public/light/icon/btn_min.png | Bin 0 -> 371 bytes resource/zh/public/light/icon/btn_normal.png | Bin 0 -> 495 bytes resource/zh/public/light/icon/btn_project.png | Bin 0 -> 629 bytes resource/zh/public/light/icon/btn_right.png | Bin 0 -> 456 bytes resource/zh/public/light/icon/btn_up.png | Bin 0 -> 632 bytes resource/zh/public/light/icon/calendar.png | Bin 0 -> 534 bytes resource/zh/public/light/icon/checked.png | Bin 0 -> 271 bytes resource/zh/public/light/icon/ckb-disable.png | Bin 0 -> 123 bytes resource/zh/public/light/icon/ckb-normal.png | Bin 0 -> 1444 bytes .../zh/public/light/icon/ckb-ptck-disable.png | Bin 0 -> 2956 bytes .../zh/public/light/icon/ckb-ptck-hover.png | Bin 0 -> 2958 bytes resource/zh/public/light/icon/ckb-ptck.png | Bin 0 -> 372 bytes .../public/light/icon/ckb-select-disable.png | Bin 0 -> 2927 bytes .../zh/public/light/icon/ckb-select-hover.png | Bin 0 -> 271 bytes .../public/light/icon/ckb-select-normal.png | Bin 0 -> 271 bytes .../public/light/icon/ckb-uncheck-hover.png | Bin 0 -> 2827 bytes resource/zh/public/light/icon/cut.png | Bin 0 -> 863 bytes resource/zh/public/light/icon/icon_add.png | Bin 0 -> 1752 bytes resource/zh/public/light/icon/icon_copy.png | Bin 0 -> 1023 bytes resource/zh/public/light/icon/icon_delete.png | Bin 0 -> 1915 bytes resource/zh/public/light/icon/icon_edit.png | Bin 0 -> 2528 bytes .../public/light/icon/icon_excel_export.png | Bin 0 -> 2573 bytes .../public/light/icon/icon_excel_import.png | Bin 0 -> 2569 bytes resource/zh/public/light/icon/icon_export.png | Bin 0 -> 2080 bytes resource/zh/public/light/icon/icon_revoke.png | Bin 0 -> 3493 bytes resource/zh/public/light/icon/icon_save.png | Bin 0 -> 808 bytes resource/zh/public/light/icon/icon_undo.png | Bin 0 -> 1971 bytes resource/zh/public/light/icon/icon_wizard.png | Bin 0 -> 1982 bytes resource/zh/public/light/icon/main_common.png | Bin 0 -> 429 bytes .../zh/public/light/icon/main_event_list.png | Bin 0 -> 452 bytes resource/zh/public/light/icon/main_fes.png | Bin 0 -> 842 bytes .../zh/public/light/icon/main_real_data.png | Bin 0 -> 916 bytes .../zh/public/light/icon/main_real_db.png | Bin 0 -> 1125 bytes resource/zh/public/light/icon/min_logo.png | Bin 0 -> 566 bytes resource/zh/public/light/icon/pause.png | Bin 0 -> 885 bytes resource/zh/public/light/icon/play.png | Bin 0 -> 895 bytes resource/zh/public/light/icon/radius.png | Bin 0 -> 481 bytes resource/zh/public/light/icon/rkb-disable.png | Bin 0 -> 3026 bytes resource/zh/public/light/icon/rkb-hover.png | Bin 0 -> 3037 bytes resource/zh/public/light/icon/rkb-normal.png | Bin 0 -> 3026 bytes .../public/light/icon/rkb-select-disable.png | Bin 0 -> 3053 bytes .../public/light/icon/rkb-select-normal.png | Bin 0 -> 3066 bytes resource/zh/public/light/icon/search.png | Bin 0 -> 2994 bytes resource/zh/public/light/icon/unchecked.png | Bin 0 -> 1444 bytes resource/zh/public/light/icon/voiceClose.png | Bin 0 -> 543 bytes resource/zh/public/light/icon/voiceOpen.png | Bin 0 -> 746 bytes resource/zh/report/translate/report.qm | Bin 0 -> 271 bytes resource/zh/report/translate/report.ts | 30 + .../translate/sequence_server_zh.mo | Bin 0 -> 518 bytes .../translate/sequence_server_zh.po | 286 + resource/zh/setup/icons/db_manager.ico | Bin 0 -> 3198 bytes resource/zh/setup/icons/debug_tool.ico | Bin 0 -> 3198 bytes resource/zh/setup/icons/fbd_editor.ico | Bin 0 -> 4742 bytes resource/zh/setup/icons/fes_sim.ico | Bin 0 -> 4286 bytes resource/zh/setup/icons/hmi.ico | Bin 0 -> 4030 bytes resource/zh/setup/icons/studio.ico | Bin 0 -> 4286 bytes resource/zh/setup/icons/sys_startup.ico | Bin 0 -> 16958 bytes resource/zh/setup/icons/systemConfig.ico | Bin 0 -> 4286 bytes resource/zh/setup/readme.txt | 2 + resource/zh/setup/setup.ico | Bin 0 -> 4286 bytes resource/zh/setup/安装图标ico.zip | Bin 0 -> 82218 bytes resource/zh/style/dark/AlarmStatWidget.qss | 449 + resource/zh/style/dark/AlarmStatisWidget.qss | 98 + resource/zh/style/dark/BatchOperation.qss | 9 + resource/zh/style/dark/BriefReport.qss | 212 + resource/zh/style/dark/DeviceNavWidget.qss | 25 + .../zh/style/dark/SecondButtonGroupWidget.qss | 19 + resource/zh/style/dark/StationNavWidget.qss | 19 + resource/zh/style/dark/SysParamWidget.qss | 15 + resource/zh/style/dark/WebBrowserWidget.qss | 4 + resource/zh/style/dark/alarm.qss | 134 + resource/zh/style/dark/alarmForm.qss | 44 + resource/zh/style/dark/alarmShield.qss | 19 + resource/zh/style/dark/alarm_statistics.qss | 155 + resource/zh/style/dark/alarmmng.qss | 46 + resource/zh/style/dark/asset.qss | 14 + resource/zh/style/dark/breadcrumbNav.qss | 60 + resource/zh/style/dark/cButtonGroupWidget.qss | 15 + resource/zh/style/dark/constCurves.qss | 7 + resource/zh/style/dark/curveColor.cfg | 16 + resource/zh/style/dark/customDialog2.qss | 28 + resource/zh/style/dark/debug_tool.qss | 130 + resource/zh/style/dark/deviceRealData.qss | 9 + resource/zh/style/dark/duty_setting.qss | 69 + resource/zh/style/dark/event.qss | 158 + resource/zh/style/dark/explorerWnd.qss | 22 + resource/zh/style/dark/faultRecord.qss | 8 + resource/zh/style/dark/fbd_designer.qss | 160 + resource/zh/style/dark/hmiRoll.qss | 3 + resource/zh/style/dark/ipcPlus.qss | 97 + resource/zh/style/dark/ipcViewer.qss | 125 + resource/zh/style/dark/linkCtrl.qss | 40 + resource/zh/style/dark/media.qss | 34 + resource/zh/style/dark/modelStudio.qss | 303 + resource/zh/style/dark/orderManage.qss | 178 + .../zh/style/dark/planCurvesConfigure.qss | 14 + resource/zh/style/dark/public.qss | 1719 ++ resource/zh/style/dark/relaySetting.qss | 24 + resource/zh/style/dark/robot.qss | 83 + resource/zh/style/dark/secondNavigation.qss | 15 + resource/zh/style/dark/sequence.qss | 71 + resource/zh/style/dark/shift.qss | 34 + resource/zh/style/dark/sys_startup.qss | 66 + resource/zh/style/dark/trendCurves.qss | 193 + resource/zh/style/dark/usermng.qss | 146 + resource/zh/style/dark/workBench.qss | 487 + resource/zh/style/dark/workTicket.qss | 22 + resource/zh/style/light/AlarmStatisWidget.qss | 289 + resource/zh/style/light/AutoCreate.qss | 28 + resource/zh/style/light/BatchOperation.qss | 9 + resource/zh/style/light/BriefReport.qss | 41 + resource/zh/style/light/WebBrowserWidget.qss | 4 + resource/zh/style/light/alarm.qss | 58 + resource/zh/style/light/alarmShield.qss | 18 + resource/zh/style/light/alarm_statistics.qss | 27 + resource/zh/style/light/alarmmng.qss | 85 + resource/zh/style/light/asset.qss | 6 + resource/zh/style/light/breadcrumbNav.qss | 59 + resource/zh/style/light/constCurves.qss | 7 + resource/zh/style/light/curveColor.cfg | 16 + resource/zh/style/light/customDialog2.qss | 28 + resource/zh/style/light/db_manager.qss | 79 + resource/zh/style/light/debug_tool.qss | 95 + resource/zh/style/light/deviceRealData.qss | 12 + resource/zh/style/light/duty_setting.qss | 47 + resource/zh/style/light/event.qss | 84 + resource/zh/style/light/faultRecord.qss | 6 + resource/zh/style/light/fbd_designer.qss | 42 + resource/zh/style/light/his_event_del.qss | 4 + resource/zh/style/light/hmiRoll.qss | 3 + resource/zh/style/light/hmi_designer.qss | 4 + resource/zh/style/light/ipcPlus.qss | 83 + resource/zh/style/light/ipcViewer.qss | 161 + resource/zh/style/light/linkCtrl.qss | 25 + resource/zh/style/light/media.qss | 34 + resource/zh/style/light/modelStudio.qss | 448 + resource/zh/style/light/mqtt_tool.qss | 5 + .../zh/style/light/planCurvesConfigure.qss | 14 + resource/zh/style/light/public.qss | 1680 ++ resource/zh/style/light/relaySetting.qss | 4 + resource/zh/style/light/robot.qss | 252 + resource/zh/style/light/sequence.qss | 12 + resource/zh/style/light/shift.qss | 36 + resource/zh/style/light/style_tool.qss | 12 + resource/zh/style/light/sys_startup.qss | 66 + resource/zh/style/light/trendCurves.qss | 168 + resource/zh/style/light/usermng.qss | 75 + resource/zh/style/light/workBench.qss | 363 + resource/zh/style/public.qsst | 1267 ++ resource/zh/style/样式模板.qsst | 1163 + resource/zh/sys_ctrl/translate/sys_ctrl_zh.po | 253 + resource/zh/sys_startup/CommandWindow.png | Bin 0 -> 6287 bytes resource/zh/sys_startup/DatabaseCheck.png | Bin 0 -> 6729 bytes resource/zh/sys_startup/DevModeling.png | Bin 0 -> 6996 bytes resource/zh/sys_startup/DogCheck.png | Bin 0 -> 7275 bytes resource/zh/sys_startup/EngineeringDebug.png | Bin 0 -> 6641 bytes .../zh/sys_startup/EngineeringManagement.png | Bin 0 -> 6996 bytes resource/zh/sys_startup/FileSync.png | Bin 0 -> 6535 bytes resource/zh/sys_startup/HmiStart.png | Bin 0 -> 6007 bytes resource/zh/sys_startup/KBD_30.png | Bin 0 -> 787 bytes resource/zh/sys_startup/LogicProgramming.png | Bin 0 -> 6601 bytes resource/zh/sys_startup/MonitInterface.png | Bin 0 -> 17931 bytes resource/zh/sys_startup/NetMonite.png | Bin 0 -> 20135 bytes .../zh/sys_startup/PictureConfiguration.png | Bin 0 -> 7177 bytes resource/zh/sys_startup/PreEmulation.png | Bin 0 -> 7010 bytes resource/zh/sys_startup/ReportEdit.png | Bin 0 -> 3953 bytes resource/zh/sys_startup/SysStart.png | Bin 0 -> 6438 bytes resource/zh/sys_startup/SystemModeling.png | Bin 0 -> 7591 bytes resource/zh/sys_startup/db_studio.png | Bin 0 -> 9365 bytes resource/zh/sys_startup/icon.png | Bin 0 -> 1122 bytes resource/zh/sys_startup/preset_config.png | Bin 0 -> 4647 bytes resource/zh/sys_startup/push_debug.png | Bin 0 -> 6992 bytes resource/zh/sys_startup/reset.png | Bin 0 -> 1667 bytes resource/zh/sys_startup/restart.png | Bin 0 -> 392 bytes resource/zh/sys_startup/start.png | Bin 0 -> 23061 bytes resource/zh/sys_startup/stop.png | Bin 0 -> 23000 bytes resource/zh/sys_startup/sys_startup.ico | Bin 0 -> 16958 bytes resource/zh/sys_startup/upgrade.png | Bin 0 -> 19796 bytes .../strategyFileOnly/colorConfig.json | 1 + .../zh/workBench/LocalState_background.png | Bin 0 -> 8208 bytes resource/zh/workBench/background_img.png | Bin 0 -> 93433 bytes resource/zh/workBench/background_img_in.png | Bin 0 -> 185368 bytes .../zh/workBench/background_img_in_in.png | Bin 0 -> 158870 bytes .../zh/workBench/buttonForm/DatabaseCheck.png | Bin 0 -> 1014 bytes .../zh/workBench/buttonForm/DevModeling.png | Bin 0 -> 636 bytes resource/zh/workBench/buttonForm/DogCheck.png | Bin 0 -> 821 bytes .../workBench/buttonForm/EngineeringDebug.png | Bin 0 -> 759 bytes .../buttonForm/EngineeringManagement.png | Bin 0 -> 682 bytes resource/zh/workBench/buttonForm/FileSync.png | Bin 0 -> 574 bytes .../workBench/buttonForm/LogicProgramming.png | Bin 0 -> 1213 bytes .../workBench/buttonForm/MonitInterface.png | Bin 0 -> 490 bytes .../zh/workBench/buttonForm/NetMonite.png | Bin 0 -> 1206 bytes .../buttonForm/PictureConfiguration.png | Bin 0 -> 955 bytes .../workBench/buttonForm/PlatformTerminal.png | Bin 0 -> 474 bytes .../workBench/buttonForm/ProductTerminal.png | Bin 0 -> 501 bytes .../zh/workBench/buttonForm/ReportEdit.png | Bin 0 -> 680 bytes resource/zh/workBench/buttonForm/SysStart.png | Bin 0 -> 685 bytes .../workBench/buttonForm/SystemModeling.png | Bin 0 -> 513 bytes resource/zh/workBench/buttonForm/add.png | Bin 0 -> 299 bytes .../zh/workBench/buttonForm/preset_config.png | Bin 0 -> 776 bytes .../zh/workBench/buttonForm/push_debug.png | Bin 0 -> 734 bytes .../zh/workBench/buttonForm/systemUpgrade.png | Bin 0 -> 671 bytes resource/zh/workBench/button_background.png | Bin 0 -> 1442 bytes resource/zh/workBench/checkbox.png | Bin 0 -> 110 bytes resource/zh/workBench/checkbox_checked.png | Bin 0 -> 271 bytes resource/zh/workBench/close_btn.png | Bin 0 -> 289 bytes resource/zh/workBench/company.png | Bin 0 -> 2432 bytes resource/zh/workBench/dialog_background.png | Bin 0 -> 28385 bytes resource/zh/workBench/downArrow.png | Bin 0 -> 294 bytes resource/zh/workBench/leftArrow.png | Bin 0 -> 378 bytes resource/zh/workBench/leftShift.png | Bin 0 -> 1283 bytes .../zh/workBench/localState/basicApp_back.png | Bin 0 -> 693 bytes .../workBench/localState/basicApp_master.png | Bin 0 -> 685 bytes .../zh/workBench/localState/basicApp_stop.png | Bin 0 -> 523 bytes .../workBench/localState/basicApp_unknow.png | Bin 0 -> 758 bytes .../workBench/localState/energyMng_back.png | Bin 0 -> 590 bytes .../workBench/localState/energyMng_master.png | Bin 0 -> 664 bytes .../workBench/localState/energyMng_stop.png | Bin 0 -> 567 bytes .../workBench/localState/energyMng_unknow.png | Bin 0 -> 624 bytes .../workBench/localState/generalApp_back.png | Bin 0 -> 560 bytes .../localState/generalApp_master.png | Bin 0 -> 561 bytes .../workBench/localState/generalApp_stop.png | Bin 0 -> 490 bytes .../localState/generalApp_unknow.png | Bin 0 -> 567 bytes .../workBench/localState/publicApp_back.png | Bin 0 -> 474 bytes .../workBench/localState/publicApp_master.png | Bin 0 -> 465 bytes .../workBench/localState/publicApp_stop.png | Bin 0 -> 422 bytes .../workBench/localState/publicApp_unknow.png | Bin 0 -> 504 bytes resource/zh/workBench/menu_button/sys_mng.png | Bin 0 -> 669 bytes .../workBench/menu_button/sys_mng_pressed.png | Bin 0 -> 659 bytes .../zh/workBench/menu_button/sys_process.png | Bin 0 -> 426 bytes .../menu_button/sys_process_pressed.png | Bin 0 -> 420 bytes .../workBench/menu_button/sys_set_pressed.png | Bin 0 -> 740 bytes .../zh/workBench/menu_button/sys_setting.png | Bin 0 -> 777 bytes .../zh/workBench/menu_button/sys_state.png | Bin 0 -> 997 bytes .../menu_button/sys_state_pressed.png | Bin 0 -> 1069 bytes .../menu_button/sys_tool_pressed.png | Bin 0 -> 509 bytes .../zh/workBench/menu_button/sys_tools.png | Bin 0 -> 515 bytes resource/zh/workBench/rightArrow.png | Bin 0 -> 469 bytes resource/zh/workBench/rightShift.png | Bin 0 -> 1239 bytes resource/zh/workBench/run_state.png | Bin 0 -> 21715 bytes resource/zh/workBench/run_state_hover.png | Bin 0 -> 21488 bytes resource/zh/workBench/stop_state.png | Bin 0 -> 16957 bytes resource/zh/workBench/stop_state_hover.png | Bin 0 -> 18709 bytes resource/zh/workBench/upArrow.png | Bin 0 -> 261 bytes resource/zh/workBench/workBench.json | 176 + 2159 files changed, 220279 insertions(+) create mode 100644 resource/en/apc_if_srv/translate/apc_if_srv_en.mo create mode 100644 resource/en/apc_if_srv/translate/apc_if_srv_en.po create mode 100644 resource/en/app_bio_identify_srv/translate/app_bio_identify_srv_en.mo create mode 100644 resource/en/app_bio_identify_srv/translate/app_bio_identify_srv_en.po create mode 100644 resource/en/app_fbd/translate/app_fbd_en.mo create mode 100644 resource/en/app_fbd/translate/app_fbd_en.po create mode 100644 resource/en/db_his_mng_api/en.qm create mode 100644 resource/en/db_his_mng_api/en.ts create mode 100644 resource/en/db_manager/en.qm create mode 100644 resource/en/db_manager/en.ts create mode 100644 resource/en/db_manager_api/en.qm create mode 100644 resource/en/debug_tool/image/check.png create mode 100644 resource/en/debug_tool/image/check1.png create mode 100644 resource/en/debug_tool/image/down.png create mode 100644 resource/en/debug_tool/image/search.png create mode 100644 resource/en/debug_tool/image/uncheck.png create mode 100644 resource/en/debug_tool/image/uncheck1.png create mode 100644 resource/en/debug_tool/translate/en.qm create mode 100644 resource/en/debug_tool/translate/en.ts create mode 100644 resource/en/fbd_editor/translate/fbd_editor_en.qm create mode 100644 resource/en/fbd_editor/translate/fbd_editor_en.ts create mode 100644 resource/en/fbd_editor/translate/platform_en.qm create mode 100644 resource/en/fbd_editor/translate/platform_en.ts create mode 100644 resource/en/fbd_editor/translate/product_en.qm create mode 100644 resource/en/fbd_editor/translate/product_en.ts create mode 100644 resource/en/fes/translate/fes_en.mo create mode 100644 resource/en/fes/translate/fes_en.po create mode 100644 resource/en/gui/icon/hmi/DataOpt.png create mode 100644 resource/en/gui/icon/hmi/DevRealData.png create mode 100644 resource/en/gui/icon/hmi/HangPanel.png create mode 100644 resource/en/gui/icon/hmi/Media.png create mode 100644 resource/en/gui/icon/hmi/PixelMap.png create mode 100644 resource/en/gui/icon/hmi/PolymorphicText.png create mode 100644 resource/en/gui/icon/hmi/accidentRecollect.png create mode 100644 resource/en/gui/icon/hmi/alarm.png create mode 100644 resource/en/gui/icon/hmi/alarmAnalysis.png create mode 100644 resource/en/gui/icon/hmi/alarmManagement.png create mode 100644 resource/en/gui/icon/hmi/alarmShielding.png create mode 100644 resource/en/gui/icon/hmi/alarmStatistics.png create mode 100644 resource/en/gui/icon/hmi/alignBottom.png create mode 100644 resource/en/gui/icon/hmi/alignHorizontal.png create mode 100644 resource/en/gui/icon/hmi/alignLeft.png create mode 100644 resource/en/gui/icon/hmi/alignRight.png create mode 100644 resource/en/gui/icon/hmi/alignTop.png create mode 100644 resource/en/gui/icon/hmi/alignVertical.png create mode 100644 resource/en/gui/icon/hmi/align_bottom.png create mode 100644 resource/en/gui/icon/hmi/batchCreate.png create mode 100644 resource/en/gui/icon/hmi/besselCurve.png create mode 100644 resource/en/gui/icon/hmi/blockInformation.png create mode 100644 resource/en/gui/icon/hmi/blq.png create mode 100644 resource/en/gui/icon/hmi/bottom.png create mode 100644 resource/en/gui/icon/hmi/brokenLine.png create mode 100644 resource/en/gui/icon/hmi/browse.png create mode 100644 resource/en/gui/icon/hmi/button.png create mode 100644 resource/en/gui/icon/hmi/byq2.png create mode 100644 resource/en/gui/icon/hmi/byq3.png create mode 100644 resource/en/gui/icon/hmi/byq4.png create mode 100644 resource/en/gui/icon/hmi/cam.png create mode 100644 resource/en/gui/icon/hmi/cam2.png create mode 100644 resource/en/gui/icon/hmi/cfd.png create mode 100644 resource/en/gui/icon/hmi/checkAll.png create mode 100644 resource/en/gui/icon/hmi/checkbox.png create mode 100644 resource/en/gui/icon/hmi/circle.png create mode 100644 resource/en/gui/icon/hmi/circularArc.png create mode 100644 resource/en/gui/icon/hmi/combine.png create mode 100644 resource/en/gui/icon/hmi/combobox.png create mode 100644 resource/en/gui/icon/hmi/coordinationCurve.png create mode 100644 resource/en/gui/icon/hmi/copy.png create mode 100644 resource/en/gui/icon/hmi/curve.png create mode 100644 resource/en/gui/icon/hmi/cut.png create mode 100644 resource/en/gui/icon/hmi/date.png create mode 100644 resource/en/gui/icon/hmi/db.png create mode 100644 resource/en/gui/icon/hmi/ddzsq.png create mode 100644 resource/en/gui/icon/hmi/delete.png create mode 100644 resource/en/gui/icon/hmi/devInfo.png create mode 100644 resource/en/gui/icon/hmi/discombine.png create mode 100644 resource/en/gui/icon/hmi/dj.png create mode 100644 resource/en/gui/icon/hmi/dkq.png create mode 100644 resource/en/gui/icon/hmi/dl.png create mode 100644 resource/en/gui/icon/hmi/dlq.png create mode 100644 resource/en/gui/icon/hmi/dongzuo.png create mode 100644 resource/en/gui/icon/hmi/dr.png create mode 100644 resource/en/gui/icon/hmi/dr1.png create mode 100644 resource/en/gui/icon/hmi/drdqdz.png create mode 100644 resource/en/gui/icon/hmi/dydlq.png create mode 100644 resource/en/gui/icon/hmi/dykg.png create mode 100644 resource/en/gui/icon/hmi/dz.png create mode 100644 resource/en/gui/icon/hmi/dzz.png create mode 100644 resource/en/gui/icon/hmi/ellipse.png create mode 100644 resource/en/gui/icon/hmi/equHorizontal.png create mode 100644 resource/en/gui/icon/hmi/equVertical.png create mode 100644 resource/en/gui/icon/hmi/equalLarge.png create mode 100644 resource/en/gui/icon/hmi/equalSmall.png create mode 100644 resource/en/gui/icon/hmi/event.png create mode 100644 resource/en/gui/icon/hmi/faultRecording.png create mode 100644 resource/en/gui/icon/hmi/fbdEditor.png create mode 100644 resource/en/gui/icon/hmi/fdj.png create mode 100644 resource/en/gui/icon/hmi/fhkg.png create mode 100644 resource/en/gui/icon/hmi/fileSync.png create mode 100644 resource/en/gui/icon/hmi/fldkq.png create mode 100644 resource/en/gui/icon/hmi/gaojing.png create mode 100644 resource/en/gui/icon/hmi/glkg.png create mode 100644 resource/en/gui/icon/hmi/gp.png create mode 100644 resource/en/gui/icon/hmi/grid.png create mode 100644 resource/en/gui/icon/hmi/gzp.png create mode 100644 resource/en/gui/icon/hmi/hgq.png create mode 100644 resource/en/gui/icon/hmi/historicalData.png create mode 100644 resource/en/gui/icon/hmi/horizontalMirror.png create mode 100644 resource/en/gui/icon/hmi/hotkey.png create mode 100644 resource/en/gui/icon/hmi/jcq.png create mode 100644 resource/en/gui/icon/hmi/jd.png create mode 100644 resource/en/gui/icon/hmi/jddz.png create mode 100644 resource/en/gui/icon/hmi/jdyf.png create mode 100644 resource/en/gui/icon/hmi/jfc.png create mode 100644 resource/en/gui/icon/hmi/jx.png create mode 100644 resource/en/gui/icon/hmi/kgj.png create mode 100644 resource/en/gui/icon/hmi/kx.png create mode 100644 resource/en/gui/icon/hmi/label.png create mode 100644 resource/en/gui/icon/hmi/levelDown.png create mode 100644 resource/en/gui/icon/hmi/levelUp.png create mode 100644 resource/en/gui/icon/hmi/link.png create mode 100644 resource/en/gui/icon/hmi/linkageControl.png create mode 100644 resource/en/gui/icon/hmi/list.png create mode 100644 resource/en/gui/icon/hmi/ljbyq.png create mode 100644 resource/en/gui/icon/hmi/ljbyq1.png create mode 100644 resource/en/gui/icon/hmi/ljbyq2.png create mode 100644 resource/en/gui/icon/hmi/lock.png create mode 100644 resource/en/gui/icon/hmi/menu.png create mode 100644 resource/en/gui/icon/hmi/ml.png create mode 100644 resource/en/gui/icon/hmi/mlbzt.png create mode 100644 resource/en/gui/icon/hmi/mx.png create mode 100644 resource/en/gui/icon/hmi/new.png create mode 100644 resource/en/gui/icon/hmi/open.png create mode 100644 resource/en/gui/icon/hmi/operationTicket.png create mode 100644 resource/en/gui/icon/hmi/paste.png create mode 100644 resource/en/gui/icon/hmi/pie.png create mode 100644 resource/en/gui/icon/hmi/plugin.png create mode 100644 resource/en/gui/icon/hmi/pollingManage.png create mode 100644 resource/en/gui/icon/hmi/polygon.png create mode 100644 resource/en/gui/icon/hmi/protectConsValue.png create mode 100644 resource/en/gui/icon/hmi/publish.png create mode 100644 resource/en/gui/icon/hmi/qybyq.png create mode 100644 resource/en/gui/icon/hmi/qybyq1.png create mode 100644 resource/en/gui/icon/hmi/radiobutton.png create mode 100644 resource/en/gui/icon/hmi/rectangular.png create mode 100644 resource/en/gui/icon/hmi/redo.png create mode 100644 resource/en/gui/icon/hmi/report.png create mode 100644 resource/en/gui/icon/hmi/run.png create mode 100644 resource/en/gui/icon/hmi/save.png create mode 100644 resource/en/gui/icon/hmi/saveAs.png create mode 100644 resource/en/gui/icon/hmi/sc.png create mode 100644 resource/en/gui/icon/hmi/sc_down.png create mode 100644 resource/en/gui/icon/hmi/sc_up.png create mode 100644 resource/en/gui/icon/hmi/scriptEditor.png create mode 100644 resource/en/gui/icon/hmi/seqControlManage.png create mode 100644 resource/en/gui/icon/hmi/sjbyq.png create mode 100644 resource/en/gui/icon/hmi/sjx.png create mode 100644 resource/en/gui/icon/hmi/spinbox.png create mode 100644 resource/en/gui/icon/hmi/stick.png create mode 100644 resource/en/gui/icon/hmi/straightLine.png create mode 100644 resource/en/gui/icon/hmi/tablewidget.png create mode 100644 resource/en/gui/icon/hmi/terminal.png create mode 100644 resource/en/gui/icon/hmi/text.png create mode 100644 resource/en/gui/icon/hmi/textInput.png create mode 100644 resource/en/gui/icon/hmi/textbox.png create mode 100644 resource/en/gui/icon/hmi/tiaozha.png create mode 100644 resource/en/gui/icon/hmi/time.png create mode 100644 resource/en/gui/icon/hmi/top.png create mode 100644 resource/en/gui/icon/hmi/topo.png create mode 100644 resource/en/gui/icon/hmi/travelBriefing.png create mode 100644 resource/en/gui/icon/hmi/treewidget.png create mode 100644 resource/en/gui/icon/hmi/trend.png create mode 100644 resource/en/gui/icon/hmi/trtczhkg.png create mode 100644 resource/en/gui/icon/hmi/txzc.png create mode 100644 resource/en/gui/icon/hmi/tyztxs.png create mode 100644 resource/en/gui/icon/hmi/undo.png create mode 100644 resource/en/gui/icon/hmi/userGroupManage.png create mode 100644 resource/en/gui/icon/hmi/verticalMirror.png create mode 100644 resource/en/gui/icon/hmi/viewOff.png create mode 100644 resource/en/gui/icon/hmi/viewOn.png create mode 100644 resource/en/gui/icon/hmi/wgbc.png create mode 100644 resource/en/gui/icon/hmi/workTicket.png create mode 100644 resource/en/gui/icon/hmi/workforceManage.png create mode 100644 resource/en/gui/icon/hmi/xd.png create mode 100644 resource/en/gui/icon/hmi/xdc.png create mode 100644 resource/en/gui/icon/hmi/xl.png create mode 100644 resource/en/gui/icon/hmi/ybp.png create mode 100644 resource/en/gui/icon/hmi/yc.png create mode 100644 resource/en/gui/icon/hmi/yfjdzhkg.png create mode 100644 resource/en/gui/icon/hmi/yichang.png create mode 100644 resource/en/gui/icon/hmi/zlq.png create mode 100644 resource/en/gui/icon/hmi/zlq2.png create mode 100644 resource/en/gui/translate/icon_en.ts create mode 100644 resource/en/gui/translate/platform_en.qm create mode 100644 resource/en/gui/translate/platform_en.ts create mode 100644 resource/en/gui/translate/product_en.qm create mode 100644 resource/en/gui/translate/product_en.ts create mode 100644 resource/en/linkage_server/translate/linkage_server_en.mo create mode 100644 resource/en/linkage_server/translate/linkage_server_en.po create mode 100644 resource/en/model_studio/icons/RTU.png create mode 100644 resource/en/model_studio/icons/alarm.png create mode 100644 resource/en/model_studio/icons/anquan.png create mode 100644 resource/en/model_studio/icons/app.png create mode 100644 resource/en/model_studio/icons/ats.png create mode 100644 resource/en/model_studio/icons/bas.png create mode 100644 resource/en/model_studio/icons/base.png create mode 100644 resource/en/model_studio/icons/baseinfo.png create mode 100644 resource/en/model_studio/icons/channel.png create mode 100644 resource/en/model_studio/icons/collection.png create mode 100644 resource/en/model_studio/icons/db.png create mode 100644 resource/en/model_studio/icons/define.png create mode 100644 resource/en/model_studio/icons/dept.png create mode 100644 resource/en/model_studio/icons/devSame.png create mode 100644 resource/en/model_studio/icons/devType.png create mode 100644 resource/en/model_studio/icons/device.png create mode 100644 resource/en/model_studio/icons/device_child.png create mode 100644 resource/en/model_studio/icons/dict.png create mode 100644 resource/en/model_studio/icons/fesCfg.png create mode 100644 resource/en/model_studio/icons/forward.png create mode 100644 resource/en/model_studio/icons/func.png create mode 100644 resource/en/model_studio/icons/generate.png create mode 100644 resource/en/model_studio/icons/icon2.gif create mode 100644 resource/en/model_studio/icons/init.png create mode 100644 resource/en/model_studio/icons/msg.png create mode 100644 resource/en/model_studio/icons/network.png create mode 100644 resource/en/model_studio/icons/pa.png create mode 100644 resource/en/model_studio/icons/pic.png create mode 100644 resource/en/model_studio/icons/pis.png create mode 100644 resource/en/model_studio/icons/power.png create mode 100644 resource/en/model_studio/icons/report.png create mode 100644 resource/en/model_studio/icons/role.png create mode 100644 resource/en/model_studio/icons/temp.png create mode 100644 resource/en/model_studio/icons/tempType.png create mode 100644 resource/en/model_studio/icons/tv_icon.png create mode 100644 resource/en/model_studio/icons/user.png create mode 100644 resource/en/model_studio/icons/userGroup.png create mode 100644 resource/en/model_studio/setting/fileLogic/configcheck.xml create mode 100644 resource/en/model_studio/setting/style/fesTemp.xlsx create mode 100644 resource/en/model_studio/setting/style/kbdTable.qss create mode 100644 resource/en/model_studio/setting/style/psc3000Temp.xlsx create mode 100644 resource/en/model_studio/setting/style/scrollBar.qss create mode 100644 resource/en/model_studio/setting/style/toolBar.qss create mode 100644 resource/en/model_studio/setting/table/ACCUML.xml create mode 100644 resource/en/model_studio/setting/table/ACCUML_LIMIT_INFO.xml create mode 100644 resource/en/model_studio/setting/table/ACCUML_MAP_TO_FES.xml create mode 100644 resource/en/model_studio/setting/table/ACCUML_TEMP_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/ACS_DEVICE_INFO.xml create mode 100644 resource/en/model_studio/setting/table/ADD_POINT_FROM_FES_TEMP.xml create mode 100644 resource/en/model_studio/setting/table/ALARM_ACTION_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/ALARM_KEYWORD_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/ALARM_LEVEL_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/ALARM_LEVEL_SOUND_DEF.xml create mode 100644 resource/en/model_studio/setting/table/ALARM_MANNER_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/ALARM_SMS_CONFIG.xml create mode 100644 resource/en/model_studio/setting/table/ALARM_SMS_DEVICE.xml create mode 100644 resource/en/model_studio/setting/table/ALARM_SMS_RULE.xml create mode 100644 resource/en/model_studio/setting/table/ALARM_STATUS_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/ALARM_STATUS_DIG_SET.xml create mode 100644 resource/en/model_studio/setting/table/ALARM_TYPE_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/ANALOG.xml create mode 100644 resource/en/model_studio/setting/table/ANALOG_CONTROL.xml create mode 100644 resource/en/model_studio/setting/table/ANALOG_LIMIT_INFO.xml create mode 100644 resource/en/model_studio/setting/table/ANALOG_MAP_TO_FES.xml create mode 100644 resource/en/model_studio/setting/table/ANALOG_OVER_STATISTICS.xml create mode 100644 resource/en/model_studio/setting/table/ANALOG_TEMP_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/APC_ANALOG.xml create mode 100644 resource/en/model_studio/setting/table/APC_DIGITAL.xml create mode 100644 resource/en/model_studio/setting/table/ATS_FES_LOCATION_INFO.xml create mode 100644 resource/en/model_studio/setting/table/ATS_FES_PLATFORM_INFO.xml create mode 100644 resource/en/model_studio/setting/table/BACKGROUND_X_FES_ACCUML.xml create mode 100644 resource/en/model_studio/setting/table/BACKGROUND_X_FES_ANALOG.xml create mode 100644 resource/en/model_studio/setting/table/BACKGROUND_X_FES_DIGTAL.xml create mode 100644 resource/en/model_studio/setting/table/BAS_CRAFT_DEF.xml create mode 100644 resource/en/model_studio/setting/table/BAS_MODE_DEF.xml create mode 100644 resource/en/model_studio/setting/table/BAS_MODE_TYPE.xml create mode 100644 resource/en/model_studio/setting/table/BAS_TIMETABLE_CTRL_PARAM.xml create mode 100644 resource/en/model_studio/setting/table/BAS_TIMETABLE_DEF.xml create mode 100644 resource/en/model_studio/setting/table/BAS_TIMETABLE_INFO.xml create mode 100644 resource/en/model_studio/setting/table/BAS_TIMETABLE_SCHEDULE.xml create mode 100644 resource/en/model_studio/setting/table/CALC_FUNC_DEF.xml create mode 100644 resource/en/model_studio/setting/table/CALC_GROUP_DEF.xml create mode 100644 resource/en/model_studio/setting/table/CALC_IN_PARA.xml create mode 100644 resource/en/model_studio/setting/table/CALC_OUT_PARA.xml create mode 100644 resource/en/model_studio/setting/table/CALC_PARA_DEF.xml create mode 100644 resource/en/model_studio/setting/table/CCTV_CAMERA_INFO.xml create mode 100644 resource/en/model_studio/setting/table/CCTV_MONITOR_INFO.xml create mode 100644 resource/en/model_studio/setting/table/CCTV_ORIENTATION.xml create mode 100644 resource/en/model_studio/setting/table/CCTV_SEPARATOR_INFO.xml create mode 100644 resource/en/model_studio/setting/table/DEV_GROUP.xml create mode 100644 resource/en/model_studio/setting/table/DEV_INFO.xml create mode 100644 resource/en/model_studio/setting/table/DEV_INFO_FOR_EMPTY_ADD.xml create mode 100644 resource/en/model_studio/setting/table/DEV_TEMP_DEF.xml create mode 100644 resource/en/model_studio/setting/table/DEV_TEMP_GROUP.xml create mode 100644 resource/en/model_studio/setting/table/DEV_TRIGGER_FLAG.xml create mode 100644 resource/en/model_studio/setting/table/DEV_TYPE_DEF.xml create mode 100644 resource/en/model_studio/setting/table/DEV_TYPE_DEF_61850.xml create mode 100644 resource/en/model_studio/setting/table/DICT_MENU_INFO_PNT_CLASS.xml create mode 100644 resource/en/model_studio/setting/table/DICT_MENU_INFO_PNT_CLASS.xml.bak create mode 100644 resource/en/model_studio/setting/table/DICT_POINT_TYPE.xml create mode 100644 resource/en/model_studio/setting/table/DICT_POINT_TYPE_FOR_POINT_ADD.xml create mode 100644 resource/en/model_studio/setting/table/DICT_STATE_TEXT_INFO.xml create mode 100644 resource/en/model_studio/setting/table/DICT_TEXT_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/DICT_UNIT_INFO.xml create mode 100644 resource/en/model_studio/setting/table/DICT_VOL_LEVEL.xml create mode 100644 resource/en/model_studio/setting/table/DIGITAL.xml create mode 100644 resource/en/model_studio/setting/table/DIGITAL_CONTROL.xml create mode 100644 resource/en/model_studio/setting/table/DIGITAL_MAP_TO_FES.xml create mode 100644 resource/en/model_studio/setting/table/DIGITAL_TEMP_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/FAULT_RECALL_COND_DEF.xml create mode 100644 resource/en/model_studio/setting/table/FBD_GROUP_INFO.xml create mode 100644 resource/en/model_studio/setting/table/FES_ACCUML.xml create mode 100644 resource/en/model_studio/setting/table/FES_ANALOG.xml create mode 100644 resource/en/model_studio/setting/table/FES_ANALOG_CTRL.xml create mode 100644 resource/en/model_studio/setting/table/FES_CHANNEL_PARA.xml create mode 100644 resource/en/model_studio/setting/table/FES_CONST.xml create mode 100644 resource/en/model_studio/setting/table/FES_CONST_TEMP.xml create mode 100644 resource/en/model_studio/setting/table/FES_DATA_BLOCK.xml create mode 100644 resource/en/model_studio/setting/table/FES_DATA_BLOCK_TEMP.xml create mode 100644 resource/en/model_studio/setting/table/FES_DEV_ACCUNL_TEMP_DEF.xml create mode 100644 resource/en/model_studio/setting/table/FES_DEV_ANALOG_CTRL_TEMP_DEF.xml create mode 100644 resource/en/model_studio/setting/table/FES_DEV_ANALOG_TEMP_DEF.xml create mode 100644 resource/en/model_studio/setting/table/FES_DEV_DIGITAL_CTRL_TEMP_DEF.xml create mode 100644 resource/en/model_studio/setting/table/FES_DEV_DIGITAL_TEMP_DEF.xml create mode 100644 resource/en/model_studio/setting/table/FES_DEV_INFO.xml create mode 100644 resource/en/model_studio/setting/table/FES_DEV_INFO_FOR_ADD.xml create mode 100644 resource/en/model_studio/setting/table/FES_DEV_INFO_FOR_EMPTY_TEMP.xml create mode 100644 resource/en/model_studio/setting/table/FES_DEV_MIX_CTRL_TEMP_DEF.xml create mode 100644 resource/en/model_studio/setting/table/FES_DEV_MIX_TEMP_DEF.xml create mode 100644 resource/en/model_studio/setting/table/FES_DEV_PT_TEMP_DEF.xml create mode 100644 resource/en/model_studio/setting/table/FES_DEV_TEMP_DEF.xml create mode 100644 resource/en/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_ADD.xml create mode 100644 resource/en/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_IMPORT.xml create mode 100644 resource/en/model_studio/setting/table/FES_DEV_TYPE_DEF.xml create mode 100644 resource/en/model_studio/setting/table/FES_DIGITAL.xml create mode 100644 resource/en/model_studio/setting/table/FES_DIGITAL_CTRL.xml create mode 100644 resource/en/model_studio/setting/table/FES_FORWARDING_ACCUML.xml create mode 100644 resource/en/model_studio/setting/table/FES_FORWARDING_ANAOLG.xml create mode 100644 resource/en/model_studio/setting/table/FES_FORWARDING_ANAOLG_CTRL.xml create mode 100644 resource/en/model_studio/setting/table/FES_FORWARDING_DIGITAL.xml create mode 100644 resource/en/model_studio/setting/table/FES_FORWARDING_DIGITAL_CTRL.xml create mode 100644 resource/en/model_studio/setting/table/FES_MIX.xml create mode 100644 resource/en/model_studio/setting/table/FES_MIX_CTRL.xml create mode 100644 resource/en/model_studio/setting/table/FES_PROTOCOL.xml create mode 100644 resource/en/model_studio/setting/table/FES_RTU_PARA.xml create mode 100644 resource/en/model_studio/setting/table/FORWARD_ACCUML.xml create mode 100644 resource/en/model_studio/setting/table/FORWARD_ANALOG.xml create mode 100644 resource/en/model_studio/setting/table/FORWARD_ANALOG_CTRL.xml create mode 100644 resource/en/model_studio/setting/table/FORWARD_DIGITAL_CTRL.xml create mode 100644 resource/en/model_studio/setting/table/FORWARD_DIGITAL_DOUBLE.xml create mode 100644 resource/en/model_studio/setting/table/FORWARD_DIGITAL_SINGLE.xml create mode 100644 resource/en/model_studio/setting/table/FORWARD_MIX.xml create mode 100644 resource/en/model_studio/setting/table/FORWARD_MIX_CTRL.xml create mode 100644 resource/en/model_studio/setting/table/HIS_WORK_TICKET.xml create mode 100644 resource/en/model_studio/setting/table/HMI_TYPE_INFO.xml create mode 100644 resource/en/model_studio/setting/table/IA_DISPOSAL_PLAN.xml create mode 100644 resource/en/model_studio/setting/table/INVALID_SYS_TABLE_INFO.xml create mode 100644 resource/en/model_studio/setting/table/LINKAGE_ACTION.xml create mode 100644 resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_BAS.xml create mode 100644 resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_MSG.xml create mode 100644 resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_PA.xml create mode 100644 resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_PIS.xml create mode 100644 resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_PSCADA.xml create mode 100644 resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_PUSH_PIC.xml create mode 100644 resource/en/model_studio/setting/table/LINKAGE_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/LINKAGE_FUNCTION.xml create mode 100644 resource/en/model_studio/setting/table/LINKAGE_FUNCTION_LIST.xml create mode 100644 resource/en/model_studio/setting/table/LINKAGE_SETTING.xml create mode 100644 resource/en/model_studio/setting/table/LINKAGE_SETTING_FOR_ADD_AND_MODIFY.xml create mode 100644 resource/en/model_studio/setting/table/LOAD_STAT_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/MIX.xml create mode 100644 resource/en/model_studio/setting/table/MIX_CONTROL.xml create mode 100644 resource/en/model_studio/setting/table/MIX_MAP_TO_FES.xml create mode 100644 resource/en/model_studio/setting/table/MIX_METHOD.xml create mode 100644 resource/en/model_studio/setting/table/MIX_TEMP_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/OPT_CTRL_ACT_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/OPT_HANDOVER_GRP.xml create mode 100644 resource/en/model_studio/setting/table/OPT_INTERLOCK_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/OPT_INTERLOCK_PARA.xml create mode 100644 resource/en/model_studio/setting/table/OPT_INTERLOCK_PARA_FOR_SELECT.xml create mode 100644 resource/en/model_studio/setting/table/OPT_SHIELD_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/OPT_TOKEN_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/PA_AREA_INFO.xml create mode 100644 resource/en/model_studio/setting/table/PA_AUDIO_INFO.xml create mode 100644 resource/en/model_studio/setting/table/PA_BROADCAST_GROUP.xml create mode 100644 resource/en/model_studio/setting/table/PA_CTRL_PARAM.xml create mode 100644 resource/en/model_studio/setting/table/PA_LOCATION_AREA_DEF.xml create mode 100644 resource/en/model_studio/setting/table/PA_LOCATION_SEQ_DEF.xml create mode 100644 resource/en/model_studio/setting/table/PA_OPERATOR_DEF.xml create mode 100644 resource/en/model_studio/setting/table/PA_OPERATOR_MAP.xml create mode 100644 resource/en/model_studio/setting/table/PA_TIMED_AUDIO.xml create mode 100644 resource/en/model_studio/setting/table/PIS_AREA_INFO.xml create mode 100644 resource/en/model_studio/setting/table/PIS_CTRL_PARAM.xml create mode 100644 resource/en/model_studio/setting/table/PIS_DISPLAY_INFO.xml create mode 100644 resource/en/model_studio/setting/table/PIS_FES_LOCATION_INFO.xml create mode 100644 resource/en/model_studio/setting/table/PIS_LOCATION_AREA_DEF.xml create mode 100644 resource/en/model_studio/setting/table/PIS_MESSAGE_INFO.xml create mode 100644 resource/en/model_studio/setting/table/PSC3000_FES_TEMP.xml create mode 100644 resource/en/model_studio/setting/table/REGION_INFO.xml create mode 100644 resource/en/model_studio/setting/table/REPORT_TYPE_INFO.xml create mode 100644 resource/en/model_studio/setting/table/RM_DEPT_DEF.xml create mode 100644 resource/en/model_studio/setting/table/RM_NORM_FUNC_DEF.xml create mode 100644 resource/en/model_studio/setting/table/RM_ROLE_DB_INFO.xml create mode 100644 resource/en/model_studio/setting/table/RM_ROLE_DEF.xml create mode 100644 resource/en/model_studio/setting/table/RM_ROLE_HMI_INFO.xml create mode 100644 resource/en/model_studio/setting/table/RM_ROLE_SPEF_REG.xml create mode 100644 resource/en/model_studio/setting/table/RM_SECURITY_DEF.xml create mode 100644 resource/en/model_studio/setting/table/RM_SPCL_FUNC_DEF.xml create mode 100644 resource/en/model_studio/setting/table/RM_USERG_DB_INFO.xml create mode 100644 resource/en/model_studio/setting/table/RM_USERG_DEF.xml create mode 100644 resource/en/model_studio/setting/table/RM_USERG_HMI_INFO.xml create mode 100644 resource/en/model_studio/setting/table/RM_USERG_RSP_INFO.xml create mode 100644 resource/en/model_studio/setting/table/RM_USER_DEF.xml create mode 100644 resource/en/model_studio/setting/table/RT_COLUMN_MODE.xml create mode 100644 resource/en/model_studio/setting/table/RT_TABLE_MODE.xml create mode 100644 resource/en/model_studio/setting/table/SAFETY_DAY.xml create mode 100644 resource/en/model_studio/setting/table/SAMPLE_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/SEQUENCE_ACTION.xml create mode 100644 resource/en/model_studio/setting/table/SEQUENCE_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/SEQUENCE_FUNCTION.xml create mode 100644 resource/en/model_studio/setting/table/SEQUENCE_SETTING.xml create mode 100644 resource/en/model_studio/setting/table/STAT_INST_DEF.xml create mode 100644 resource/en/model_studio/setting/table/STAT_INST_PARA_GRP.xml create mode 100644 resource/en/model_studio/setting/table/STAT_INST_PARA_POINT.xml create mode 100644 resource/en/model_studio/setting/table/STAT_INST_PARA_POINT_FOR_ADD.xml create mode 100644 resource/en/model_studio/setting/table/STAT_INST_PARA_TIME.xml create mode 100644 resource/en/model_studio/setting/table/STAT_INST_PARA_TIME_FOR_ADD.xml create mode 100644 resource/en/model_studio/setting/table/STAT_INST_RET_GRP.xml create mode 100644 resource/en/model_studio/setting/table/STAT_INST_RET_PARA.xml create mode 100644 resource/en/model_studio/setting/table/STAT_INST_RET_PARA_FOR_ADD.xml create mode 100644 resource/en/model_studio/setting/table/STAT_LINK_DEF.xml create mode 100644 resource/en/model_studio/setting/table/STAT_LINK_PARA.xml create mode 100644 resource/en/model_studio/setting/table/STAT_LINK_RET.xml create mode 100644 resource/en/model_studio/setting/table/STAT_TEMPLATE_DEF.xml create mode 100644 resource/en/model_studio/setting/table/STAT_TEMPLATE_PARA.xml create mode 100644 resource/en/model_studio/setting/table/STAT_TEMPLATE_RET.xml create mode 100644 resource/en/model_studio/setting/table/SWITCH_CFG_INFO.xml create mode 100644 resource/en/model_studio/setting/table/SYS_MODEL_MSG_RELAY.xml create mode 100644 resource/en/model_studio/setting/table/TBL_FES_DEV_INFO_FOR_FES_ADD.xml create mode 100644 resource/en/model_studio/setting/table/TEMP_PLUGIN.xml create mode 100644 resource/en/model_studio/setting/table/TEMP_PLUGIN_DEV_MAP.xml create mode 100644 resource/en/model_studio/setting/table/TEMP_PLUGIN_FES_DEV_MAP.xml create mode 100644 resource/en/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ACC.xml create mode 100644 resource/en/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ANA.xml create mode 100644 resource/en/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_DIG.xml create mode 100644 resource/en/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_MIX.xml create mode 100644 resource/en/model_studio/setting/table/TRIGGER_CONDITION_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/TRIGGER_FUNCTION_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/TRIGGER_PERIOD_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/TRIGGER_TIMER_DEFINE.xml create mode 100644 resource/en/model_studio/setting/table/sample.xml create mode 100644 resource/en/model_studio/setting/table/sys_model_app_info.xml create mode 100644 resource/en/model_studio/setting/table/sys_model_dbconfig_domain.xml create mode 100644 resource/en/model_studio/setting/table/sys_model_dbconfig_node.xml create mode 100644 resource/en/model_studio/setting/table/sys_model_deploy_info.xml create mode 100644 resource/en/model_studio/setting/table/sys_model_domain_info.xml create mode 100644 resource/en/model_studio/setting/table/sys_model_location_info.xml create mode 100644 resource/en/model_studio/setting/table/sys_model_node_info.xml create mode 100644 resource/en/model_studio/setting/table/sys_model_process_info.xml create mode 100644 resource/en/model_studio/setting/table/sys_model_sub_system_info.xml create mode 100644 resource/en/model_studio/setting/tree/TriggerFuncTree.xml create mode 100644 resource/en/model_studio/setting/tree/TriggerParaTree.xml create mode 100644 resource/en/model_studio/setting/tree/alarmTree.xml create mode 100644 resource/en/model_studio/setting/tree/app.json create mode 100644 resource/en/model_studio/setting/tree/app.xml create mode 100644 resource/en/model_studio/setting/tree/autoRelation.json create mode 100644 resource/en/model_studio/setting/tree/calcFunc.xml create mode 100644 resource/en/model_studio/setting/tree/chan.xml create mode 100644 resource/en/model_studio/setting/tree/commonTree.xml create mode 100644 resource/en/model_studio/setting/tree/ctrlActDefine.xml create mode 100644 resource/en/model_studio/setting/tree/deploy.json create mode 100644 resource/en/model_studio/setting/tree/deploy.xml create mode 100644 resource/en/model_studio/setting/tree/devInstListTree.xml create mode 100644 resource/en/model_studio/setting/tree/devInstTree.xml create mode 100644 resource/en/model_studio/setting/tree/devInstTreeAll.xml create mode 100644 resource/en/model_studio/setting/tree/devInstTreeDev.xml create mode 100644 resource/en/model_studio/setting/tree/devInstTreeDevAndGrp.xml create mode 100644 resource/en/model_studio/setting/tree/devInstTreeDevAndLocation.xml create mode 100644 resource/en/model_studio/setting/tree/devInstTreeGrp.xml create mode 100644 resource/en/model_studio/setting/tree/devInstTreeGrpAndLocation.xml create mode 100644 resource/en/model_studio/setting/tree/devInstTreeLocation.xml create mode 100644 resource/en/model_studio/setting/tree/devModelTree.xml create mode 100644 resource/en/model_studio/setting/tree/devTempTree.xml create mode 100644 resource/en/model_studio/setting/tree/expressionTree.xml create mode 100644 resource/en/model_studio/setting/tree/fesDevInstListTree.xml create mode 100644 resource/en/model_studio/setting/tree/fesDevTreeAll.xml create mode 100644 resource/en/model_studio/setting/tree/fesDevTreeDev.xml create mode 100644 resource/en/model_studio/setting/tree/fesDevTreeDevLocation.xml create mode 100644 resource/en/model_studio/setting/tree/fesDevTreeDevRTU.xml create mode 100644 resource/en/model_studio/setting/tree/fesDevTreeLocation.xml create mode 100644 resource/en/model_studio/setting/tree/fesDevTreeLocationRTU.xml create mode 100644 resource/en/model_studio/setting/tree/fesDevTreeRTU.xml create mode 100644 resource/en/model_studio/setting/tree/fesTree.xml create mode 100644 resource/en/model_studio/setting/tree/location.json create mode 100644 resource/en/model_studio/setting/tree/location.xml create mode 100644 resource/en/model_studio/setting/tree/lockDefineTree.xml create mode 100644 resource/en/model_studio/setting/tree/mainWindow.xml create mode 100644 resource/en/model_studio/setting/tree/optLockPara.xml create mode 100644 resource/en/model_studio/setting/tree/pcs3000ImportData.json create mode 100644 resource/en/model_studio/setting/tree/pcs3000ToFes.json create mode 100644 resource/en/model_studio/setting/tree/projec.xml create mode 100644 resource/en/model_studio/setting/tree/rt.json create mode 100644 resource/en/model_studio/setting/tree/rtTree.xml create mode 100644 resource/en/model_studio/setting/tree/rtuList.xml create mode 100644 resource/en/model_studio/setting/tree/sampleTree.xml create mode 100644 resource/en/model_studio/setting/tree/statInstInput.xml create mode 100644 resource/en/model_studio/setting/tree/statInstOutput.xml create mode 100644 resource/en/model_studio/setting/tree/stateTextTree.xml create mode 100644 resource/en/model_studio/setting/tree/staticsTree.xml create mode 100644 resource/en/model_studio/setting/tree/sysConfigTree.xml create mode 100644 resource/en/model_studio/setting/tree/textDefine.outline create mode 100644 resource/en/model_studio/setting/tree/textDefine.xml create mode 100644 resource/en/model_studio/setting/tree/userTree.xml create mode 100644 resource/en/model_studio/translate/Common_config_plugin_EN.qm create mode 100644 resource/en/model_studio/translate/Common_config_plugin_EN.ts create mode 100644 resource/en/model_studio/translate/expression_plugin_EN.qm create mode 100644 resource/en/model_studio/translate/expression_plugin_EN.ts create mode 100644 resource/en/model_studio/translate/model_common_EN.qm create mode 100644 resource/en/model_studio/translate/model_common_EN.ts create mode 100644 resource/en/model_studio/translate/model_linkage_EN.qm create mode 100644 resource/en/model_studio/translate/model_linkage_EN.ts create mode 100644 resource/en/model_studio/translate/model_plan_curve_EN.qm create mode 100644 resource/en/model_studio/translate/model_plan_curve_EN.ts create mode 100644 resource/en/model_studio/translate/model_plugin_EN.qm create mode 100644 resource/en/model_studio/translate/model_plugin_EN.ts create mode 100644 resource/en/model_studio/translate/model_sequence_EN.qm create mode 100644 resource/en/model_studio/translate/model_sequence_EN.ts create mode 100644 resource/en/model_studio/translate/model_studio_EN.qm create mode 100644 resource/en/model_studio/translate/model_studio_EN.ts create mode 100644 resource/en/model_studio/translate/model_system_config_EN.qm create mode 100644 resource/en/model_studio/translate/model_system_config_EN.ts create mode 100644 resource/en/model_studio/translate/model_table_EN.qm create mode 100644 resource/en/model_studio/translate/model_table_EN.ts create mode 100644 resource/en/model_studio/translate/model_user_EN.qm create mode 100644 resource/en/model_studio/translate/model_user_EN.ts create mode 100644 resource/en/model_studio/translate/model_waiting_dlg_EN.qm create mode 100644 resource/en/model_studio/translate/model_waiting_dlg_EN.ts create mode 100644 resource/en/model_studio/translate/plan_curve_EN.qm create mode 100644 resource/en/model_studio/translate/plan_curve_EN.ts create mode 100644 resource/en/model_studio/translate/statics_analysis_EN.qm create mode 100644 resource/en/model_studio/translate/statics_analysis_EN.ts create mode 100644 resource/en/model_studio/translate/tableName.json create mode 100644 resource/en/operate_server/translate/operate_server_en.mo create mode 100644 resource/en/operate_server/translate/operate_server_en.po create mode 100644 resource/en/pub_widget/translate/pub_widget_en.qm create mode 100644 resource/en/pub_widget/translate/pub_widget_en.ts create mode 100644 resource/en/report/translate/report.qm create mode 100644 resource/en/report/translate/report.ts create mode 100644 resource/en/sequence_server/translate/sequence_server_en.mo create mode 100644 resource/en/sequence_server/translate/sequence_server_en.po create mode 100644 resource/en/setup/en.qm create mode 100644 resource/en/style/dark/AlarmStatWidget.qss create mode 100644 resource/en/style/dark/AlarmStatisWidget.qss create mode 100644 resource/en/style/dark/BriefReport.qss create mode 100644 resource/en/style/dark/DeviceNavWidget.qss create mode 100644 resource/en/style/dark/SecondButtonGroupWidget.qss create mode 100644 resource/en/style/dark/StationNavWidget.qss create mode 100644 resource/en/style/dark/SysParamWidget.qss create mode 100644 resource/en/style/dark/WebBrowserWidget.qss create mode 100644 resource/en/style/dark/alarm.qss create mode 100644 resource/en/style/dark/alarmForm.qss create mode 100644 resource/en/style/dark/alarmShield.qss create mode 100644 resource/en/style/dark/alarm_statistics.qss create mode 100644 resource/en/style/dark/alarmmng.qss create mode 100644 resource/en/style/dark/asset.qss create mode 100644 resource/en/style/dark/breadcrumbNav.qss create mode 100644 resource/en/style/dark/cButtonGroupWidget.qss create mode 100644 resource/en/style/dark/constCurves.qss create mode 100644 resource/en/style/dark/curveColor.cfg create mode 100644 resource/en/style/dark/debug_tool.qss create mode 100644 resource/en/style/dark/deviceRealData.qss create mode 100644 resource/en/style/dark/duty_setting.qss create mode 100644 resource/en/style/dark/event.qss create mode 100644 resource/en/style/dark/explorerWnd.qss create mode 100644 resource/en/style/dark/faultRecord.qss create mode 100644 resource/en/style/dark/fbd_designer.qss create mode 100644 resource/en/style/dark/hmiRoll.qss create mode 100644 resource/en/style/dark/ipcPlus.qss create mode 100644 resource/en/style/dark/ipcViewer.qss create mode 100644 resource/en/style/dark/linkCtrl.qss create mode 100644 resource/en/style/dark/media.qss create mode 100644 resource/en/style/dark/modelStudio.qss create mode 100644 resource/en/style/dark/orderManage.qss create mode 100644 resource/en/style/dark/planCurvesConfigure.qss create mode 100644 resource/en/style/dark/public.qss create mode 100644 resource/en/style/dark/relaySetting.qss create mode 100644 resource/en/style/dark/robot.qss create mode 100644 resource/en/style/dark/secondNavigation.qss create mode 100644 resource/en/style/dark/sequence.qss create mode 100644 resource/en/style/dark/shift.qss create mode 100644 resource/en/style/dark/sys_startup.qss create mode 100644 resource/en/style/dark/trendCurves.qss create mode 100644 resource/en/style/dark/usermng.qss create mode 100644 resource/en/style/dark/workBench.qss create mode 100644 resource/en/style/dark/workTicket.qss create mode 100644 resource/en/style/light/AlarmStatisWidget.qss create mode 100644 resource/en/style/light/BriefReport.qss create mode 100644 resource/en/style/light/WebBrowserWidget.qss create mode 100644 resource/en/style/light/alarm.qss create mode 100644 resource/en/style/light/alarmShield.qss create mode 100644 resource/en/style/light/alarm_statistics.qss create mode 100644 resource/en/style/light/alarmmng.qss create mode 100644 resource/en/style/light/asset.qss create mode 100644 resource/en/style/light/breadcrumbNav.qss create mode 100644 resource/en/style/light/constCurves.qss create mode 100644 resource/en/style/light/curveColor.cfg create mode 100644 resource/en/style/light/customDialog2.qss create mode 100644 resource/en/style/light/debug_tool.qss create mode 100644 resource/en/style/light/deviceRealData.qss create mode 100644 resource/en/style/light/duty_setting.qss create mode 100644 resource/en/style/light/event.qss create mode 100644 resource/en/style/light/faultRecord.qss create mode 100644 resource/en/style/light/fbd_designer.qss create mode 100644 resource/en/style/light/hmiRoll.qss create mode 100644 resource/en/style/light/ipcPlus.qss create mode 100644 resource/en/style/light/ipcViewer.qss create mode 100644 resource/en/style/light/linkCtrl.qss create mode 100644 resource/en/style/light/media.qss create mode 100644 resource/en/style/light/modelStudio.qss create mode 100644 resource/en/style/light/planCurvesConfigure.qss create mode 100644 resource/en/style/light/public.qss create mode 100644 resource/en/style/light/relaySetting.qss create mode 100644 resource/en/style/light/robot.qss create mode 100644 resource/en/style/light/sequence.qss create mode 100644 resource/en/style/light/shift.qss create mode 100644 resource/en/style/light/sys_startup.qss create mode 100644 resource/en/style/light/trendCurves.qss create mode 100644 resource/en/style/light/usermng.qss create mode 100644 resource/en/style/light/workBench.qss create mode 100644 resource/en/style/public.qsst create mode 100644 resource/en/style/样式模板.qsst create mode 100644 resource/en/sys_ctrl/translate/sys_ctrl_en.mo create mode 100644 resource/en/sys_ctrl/translate/sys_ctrl_en.po create mode 100644 resource/en/sys_login_api/translate/en.qm create mode 100644 resource/en/sys_login_api/translate/en.ts create mode 100644 resource/en/sys_startup/translate/en.qm create mode 100644 resource/en/sys_startup/translate/en.ts create mode 100644 resource/en/workBench/translate/en.qm create mode 100644 resource/en/workBench/translate/en.ts create mode 100644 resource/en/workBench/workBench.json create mode 100644 resource/fr/apc_if_srv/translate/apc_if_srv_en.mo create mode 100644 resource/fr/apc_if_srv/translate/apc_if_srv_en.po create mode 100644 resource/fr/app_bio_identify_srv/translate/app_bio_identify_srv_en.mo create mode 100644 resource/fr/app_bio_identify_srv/translate/app_bio_identify_srv_en.po create mode 100644 resource/fr/app_fbd/translate/app_fbd_en.mo create mode 100644 resource/fr/app_fbd/translate/app_fbd_en.po create mode 100644 resource/fr/db_his_mng_api/en.qm create mode 100644 resource/fr/db_his_mng_api/en.ts create mode 100644 resource/fr/db_manager/en.qm create mode 100644 resource/fr/db_manager/en.ts create mode 100644 resource/fr/db_manager_api/en.qm create mode 100644 resource/fr/db_manager_api/en.ts create mode 100644 resource/fr/debug_tool/image/check.png create mode 100644 resource/fr/debug_tool/image/check1.png create mode 100644 resource/fr/debug_tool/image/down.png create mode 100644 resource/fr/debug_tool/image/search.png create mode 100644 resource/fr/debug_tool/image/uncheck.png create mode 100644 resource/fr/debug_tool/image/uncheck1.png create mode 100644 resource/fr/debug_tool/translate/en.qm create mode 100644 resource/fr/debug_tool/translate/en.ts create mode 100644 resource/fr/fbd_editor/product_en.qm create mode 100644 resource/fr/fbd_editor/product_en.ts create mode 100644 resource/fr/fbd_editor/translate/platform_fr.qm create mode 100644 resource/fr/fbd_editor/translate/platform_fr.ts create mode 100644 resource/fr/fes/translate/fes_en.mo create mode 100644 resource/fr/fes/translate/fes_en.po create mode 100644 resource/fr/gui/icon/hmi/DataOpt.png create mode 100644 resource/fr/gui/icon/hmi/DevRealData.png create mode 100644 resource/fr/gui/icon/hmi/HangPanel.png create mode 100644 resource/fr/gui/icon/hmi/Media.png create mode 100644 resource/fr/gui/icon/hmi/PixelMap.png create mode 100644 resource/fr/gui/icon/hmi/PolymorphicText.png create mode 100644 resource/fr/gui/icon/hmi/accidentRecollect.png create mode 100644 resource/fr/gui/icon/hmi/alarm.png create mode 100644 resource/fr/gui/icon/hmi/alarmAnalysis.png create mode 100644 resource/fr/gui/icon/hmi/alarmManagement.png create mode 100644 resource/fr/gui/icon/hmi/alarmShielding.png create mode 100644 resource/fr/gui/icon/hmi/alarmStatistics.png create mode 100644 resource/fr/gui/icon/hmi/alignBottom.png create mode 100644 resource/fr/gui/icon/hmi/alignHorizontal.png create mode 100644 resource/fr/gui/icon/hmi/alignLeft.png create mode 100644 resource/fr/gui/icon/hmi/alignRight.png create mode 100644 resource/fr/gui/icon/hmi/alignTop.png create mode 100644 resource/fr/gui/icon/hmi/alignVertical.png create mode 100644 resource/fr/gui/icon/hmi/align_bottom.png create mode 100644 resource/fr/gui/icon/hmi/batchCreate.png create mode 100644 resource/fr/gui/icon/hmi/besselCurve.png create mode 100644 resource/fr/gui/icon/hmi/blockInformation.png create mode 100644 resource/fr/gui/icon/hmi/blq.png create mode 100644 resource/fr/gui/icon/hmi/bottom.png create mode 100644 resource/fr/gui/icon/hmi/brokenLine.png create mode 100644 resource/fr/gui/icon/hmi/browse.png create mode 100644 resource/fr/gui/icon/hmi/button.png create mode 100644 resource/fr/gui/icon/hmi/byq2.png create mode 100644 resource/fr/gui/icon/hmi/byq3.png create mode 100644 resource/fr/gui/icon/hmi/byq4.png create mode 100644 resource/fr/gui/icon/hmi/cam.png create mode 100644 resource/fr/gui/icon/hmi/cam2.png create mode 100644 resource/fr/gui/icon/hmi/cfd.png create mode 100644 resource/fr/gui/icon/hmi/checkAll.png create mode 100644 resource/fr/gui/icon/hmi/checkbox.png create mode 100644 resource/fr/gui/icon/hmi/circle.png create mode 100644 resource/fr/gui/icon/hmi/circularArc.png create mode 100644 resource/fr/gui/icon/hmi/combine.png create mode 100644 resource/fr/gui/icon/hmi/combobox.png create mode 100644 resource/fr/gui/icon/hmi/coordinationCurve.png create mode 100644 resource/fr/gui/icon/hmi/copy.png create mode 100644 resource/fr/gui/icon/hmi/curve.png create mode 100644 resource/fr/gui/icon/hmi/cut.png create mode 100644 resource/fr/gui/icon/hmi/date.png create mode 100644 resource/fr/gui/icon/hmi/db.png create mode 100644 resource/fr/gui/icon/hmi/ddzsq.png create mode 100644 resource/fr/gui/icon/hmi/delete.png create mode 100644 resource/fr/gui/icon/hmi/devInfo.png create mode 100644 resource/fr/gui/icon/hmi/discombine.png create mode 100644 resource/fr/gui/icon/hmi/dj.png create mode 100644 resource/fr/gui/icon/hmi/dkq.png create mode 100644 resource/fr/gui/icon/hmi/dl.png create mode 100644 resource/fr/gui/icon/hmi/dlq.png create mode 100644 resource/fr/gui/icon/hmi/dongzuo.png create mode 100644 resource/fr/gui/icon/hmi/dr.png create mode 100644 resource/fr/gui/icon/hmi/dr1.png create mode 100644 resource/fr/gui/icon/hmi/drdqdz.png create mode 100644 resource/fr/gui/icon/hmi/dydlq.png create mode 100644 resource/fr/gui/icon/hmi/dykg.png create mode 100644 resource/fr/gui/icon/hmi/dz.png create mode 100644 resource/fr/gui/icon/hmi/dzz.png create mode 100644 resource/fr/gui/icon/hmi/ellipse.png create mode 100644 resource/fr/gui/icon/hmi/equHorizontal.png create mode 100644 resource/fr/gui/icon/hmi/equVertical.png create mode 100644 resource/fr/gui/icon/hmi/equalLarge.png create mode 100644 resource/fr/gui/icon/hmi/equalSmall.png create mode 100644 resource/fr/gui/icon/hmi/event.png create mode 100644 resource/fr/gui/icon/hmi/faultRecording.png create mode 100644 resource/fr/gui/icon/hmi/fbdEditor.png create mode 100644 resource/fr/gui/icon/hmi/fdj.png create mode 100644 resource/fr/gui/icon/hmi/fhkg.png create mode 100644 resource/fr/gui/icon/hmi/fileSync.png create mode 100644 resource/fr/gui/icon/hmi/fldkq.png create mode 100644 resource/fr/gui/icon/hmi/gaojing.png create mode 100644 resource/fr/gui/icon/hmi/glkg.png create mode 100644 resource/fr/gui/icon/hmi/gp.png create mode 100644 resource/fr/gui/icon/hmi/grid.png create mode 100644 resource/fr/gui/icon/hmi/gzp.png create mode 100644 resource/fr/gui/icon/hmi/hgq.png create mode 100644 resource/fr/gui/icon/hmi/historicalData.png create mode 100644 resource/fr/gui/icon/hmi/horizontalMirror.png create mode 100644 resource/fr/gui/icon/hmi/hotkey.png create mode 100644 resource/fr/gui/icon/hmi/jcq.png create mode 100644 resource/fr/gui/icon/hmi/jd.png create mode 100644 resource/fr/gui/icon/hmi/jddz.png create mode 100644 resource/fr/gui/icon/hmi/jdyf.png create mode 100644 resource/fr/gui/icon/hmi/jfc.png create mode 100644 resource/fr/gui/icon/hmi/jx.png create mode 100644 resource/fr/gui/icon/hmi/kgj.png create mode 100644 resource/fr/gui/icon/hmi/kx.png create mode 100644 resource/fr/gui/icon/hmi/label.png create mode 100644 resource/fr/gui/icon/hmi/levelDown.png create mode 100644 resource/fr/gui/icon/hmi/levelUp.png create mode 100644 resource/fr/gui/icon/hmi/link.png create mode 100644 resource/fr/gui/icon/hmi/linkageControl.png create mode 100644 resource/fr/gui/icon/hmi/list.png create mode 100644 resource/fr/gui/icon/hmi/ljbyq.png create mode 100644 resource/fr/gui/icon/hmi/ljbyq1.png create mode 100644 resource/fr/gui/icon/hmi/ljbyq2.png create mode 100644 resource/fr/gui/icon/hmi/lock.png create mode 100644 resource/fr/gui/icon/hmi/menu.png create mode 100644 resource/fr/gui/icon/hmi/ml.png create mode 100644 resource/fr/gui/icon/hmi/mlbzt.png create mode 100644 resource/fr/gui/icon/hmi/mx.png create mode 100644 resource/fr/gui/icon/hmi/new.png create mode 100644 resource/fr/gui/icon/hmi/open.png create mode 100644 resource/fr/gui/icon/hmi/operationTicket.png create mode 100644 resource/fr/gui/icon/hmi/paste.png create mode 100644 resource/fr/gui/icon/hmi/pie.png create mode 100644 resource/fr/gui/icon/hmi/plugin.png create mode 100644 resource/fr/gui/icon/hmi/pollingManage.png create mode 100644 resource/fr/gui/icon/hmi/polygon.png create mode 100644 resource/fr/gui/icon/hmi/protectConsValue.png create mode 100644 resource/fr/gui/icon/hmi/publish.png create mode 100644 resource/fr/gui/icon/hmi/qybyq.png create mode 100644 resource/fr/gui/icon/hmi/qybyq1.png create mode 100644 resource/fr/gui/icon/hmi/radiobutton.png create mode 100644 resource/fr/gui/icon/hmi/rectangular.png create mode 100644 resource/fr/gui/icon/hmi/redo.png create mode 100644 resource/fr/gui/icon/hmi/report.png create mode 100644 resource/fr/gui/icon/hmi/run.png create mode 100644 resource/fr/gui/icon/hmi/save.png create mode 100644 resource/fr/gui/icon/hmi/saveAs.png create mode 100644 resource/fr/gui/icon/hmi/sc.png create mode 100644 resource/fr/gui/icon/hmi/sc_down.png create mode 100644 resource/fr/gui/icon/hmi/sc_up.png create mode 100644 resource/fr/gui/icon/hmi/scriptEditor.png create mode 100644 resource/fr/gui/icon/hmi/seqControlManage.png create mode 100644 resource/fr/gui/icon/hmi/sjbyq.png create mode 100644 resource/fr/gui/icon/hmi/sjx.png create mode 100644 resource/fr/gui/icon/hmi/spinbox.png create mode 100644 resource/fr/gui/icon/hmi/stick.png create mode 100644 resource/fr/gui/icon/hmi/straightLine.png create mode 100644 resource/fr/gui/icon/hmi/tablewidget.png create mode 100644 resource/fr/gui/icon/hmi/terminal.png create mode 100644 resource/fr/gui/icon/hmi/text.png create mode 100644 resource/fr/gui/icon/hmi/textInput.png create mode 100644 resource/fr/gui/icon/hmi/textbox.png create mode 100644 resource/fr/gui/icon/hmi/tiaozha.png create mode 100644 resource/fr/gui/icon/hmi/time.png create mode 100644 resource/fr/gui/icon/hmi/top.png create mode 100644 resource/fr/gui/icon/hmi/topo.png create mode 100644 resource/fr/gui/icon/hmi/travelBriefing.png create mode 100644 resource/fr/gui/icon/hmi/treewidget.png create mode 100644 resource/fr/gui/icon/hmi/trend.png create mode 100644 resource/fr/gui/icon/hmi/trtczhkg.png create mode 100644 resource/fr/gui/icon/hmi/txzc.png create mode 100644 resource/fr/gui/icon/hmi/tyztxs.png create mode 100644 resource/fr/gui/icon/hmi/undo.png create mode 100644 resource/fr/gui/icon/hmi/userGroupManage.png create mode 100644 resource/fr/gui/icon/hmi/verticalMirror.png create mode 100644 resource/fr/gui/icon/hmi/viewOff.png create mode 100644 resource/fr/gui/icon/hmi/viewOn.png create mode 100644 resource/fr/gui/icon/hmi/wgbc.png create mode 100644 resource/fr/gui/icon/hmi/workTicket.png create mode 100644 resource/fr/gui/icon/hmi/workforceManage.png create mode 100644 resource/fr/gui/icon/hmi/xd.png create mode 100644 resource/fr/gui/icon/hmi/xdc.png create mode 100644 resource/fr/gui/icon/hmi/xl.png create mode 100644 resource/fr/gui/icon/hmi/ybp.png create mode 100644 resource/fr/gui/icon/hmi/yc.png create mode 100644 resource/fr/gui/icon/hmi/yfjdzhkg.png create mode 100644 resource/fr/gui/icon/hmi/yichang.png create mode 100644 resource/fr/gui/icon/hmi/zlq.png create mode 100644 resource/fr/gui/icon/hmi/zlq2.png create mode 100644 resource/fr/gui/translate/icon_fr.ts create mode 100644 resource/fr/gui/translate/platform_fr.qm create mode 100644 resource/fr/gui/translate/platform_fr.ts create mode 100644 resource/fr/gui/translate/product_fr.qm create mode 100644 resource/fr/gui/translate/product_fr.ts create mode 100644 resource/fr/linkage_server/translate/linkage_server_en.mo create mode 100644 resource/fr/linkage_server/translate/linkage_server_en.po create mode 100644 resource/fr/model_studio/icons/RTU.png create mode 100644 resource/fr/model_studio/icons/alarm.png create mode 100644 resource/fr/model_studio/icons/anquan.png create mode 100644 resource/fr/model_studio/icons/app.png create mode 100644 resource/fr/model_studio/icons/ats.png create mode 100644 resource/fr/model_studio/icons/bas.png create mode 100644 resource/fr/model_studio/icons/base.png create mode 100644 resource/fr/model_studio/icons/baseinfo.png create mode 100644 resource/fr/model_studio/icons/channel.png create mode 100644 resource/fr/model_studio/icons/collection.png create mode 100644 resource/fr/model_studio/icons/db.png create mode 100644 resource/fr/model_studio/icons/define.png create mode 100644 resource/fr/model_studio/icons/dept.png create mode 100644 resource/fr/model_studio/icons/devSame.png create mode 100644 resource/fr/model_studio/icons/devType.png create mode 100644 resource/fr/model_studio/icons/device.png create mode 100644 resource/fr/model_studio/icons/device_child.png create mode 100644 resource/fr/model_studio/icons/dict.png create mode 100644 resource/fr/model_studio/icons/fesCfg.png create mode 100644 resource/fr/model_studio/icons/forward.png create mode 100644 resource/fr/model_studio/icons/func.png create mode 100644 resource/fr/model_studio/icons/generate.png create mode 100644 resource/fr/model_studio/icons/icon2.gif create mode 100644 resource/fr/model_studio/icons/init.png create mode 100644 resource/fr/model_studio/icons/msg.png create mode 100644 resource/fr/model_studio/icons/network.png create mode 100644 resource/fr/model_studio/icons/pa.png create mode 100644 resource/fr/model_studio/icons/pic.png create mode 100644 resource/fr/model_studio/icons/pis.png create mode 100644 resource/fr/model_studio/icons/power.png create mode 100644 resource/fr/model_studio/icons/report.png create mode 100644 resource/fr/model_studio/icons/role.png create mode 100644 resource/fr/model_studio/icons/temp.png create mode 100644 resource/fr/model_studio/icons/tempType.png create mode 100644 resource/fr/model_studio/icons/tv_icon.png create mode 100644 resource/fr/model_studio/icons/user.png create mode 100644 resource/fr/model_studio/icons/userGroup.png create mode 100644 resource/fr/model_studio/setting/fileLogic/configcheck.xml create mode 100644 resource/fr/model_studio/setting/style/fesTemp.xlsx create mode 100644 resource/fr/model_studio/setting/style/kbdTable.qss create mode 100644 resource/fr/model_studio/setting/style/psc3000Temp.xlsx create mode 100644 resource/fr/model_studio/setting/style/scrollBar.qss create mode 100644 resource/fr/model_studio/setting/style/toolBar.qss create mode 100644 resource/fr/model_studio/setting/table/ACCUML.xml create mode 100644 resource/fr/model_studio/setting/table/ACCUML_LIMIT_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/ACCUML_MAP_TO_FES.xml create mode 100644 resource/fr/model_studio/setting/table/ACCUML_TEMP_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/ACS_DEVICE_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/ADD_POINT_FROM_FES_TEMP.xml create mode 100644 resource/fr/model_studio/setting/table/ALARM_ACTION_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/ALARM_KEYWORD_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/ALARM_LEVEL_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/ALARM_LEVEL_SOUND_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/ALARM_MANNER_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/ALARM_SMS_CONFIG.xml create mode 100644 resource/fr/model_studio/setting/table/ALARM_SMS_DEVICE.xml create mode 100644 resource/fr/model_studio/setting/table/ALARM_SMS_RULE.xml create mode 100644 resource/fr/model_studio/setting/table/ALARM_STATUS_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/ALARM_STATUS_DIG_SET.xml create mode 100644 resource/fr/model_studio/setting/table/ALARM_TYPE_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/ANALOG.xml create mode 100644 resource/fr/model_studio/setting/table/ANALOG_CONTROL.xml create mode 100644 resource/fr/model_studio/setting/table/ANALOG_LIMIT_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/ANALOG_MAP_TO_FES.xml create mode 100644 resource/fr/model_studio/setting/table/ANALOG_OVER_STATISTICS.xml create mode 100644 resource/fr/model_studio/setting/table/ANALOG_TEMP_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/APC_ANALOG.xml create mode 100644 resource/fr/model_studio/setting/table/APC_DIGITAL.xml create mode 100644 resource/fr/model_studio/setting/table/ATS_FES_LOCATION_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/ATS_FES_PLATFORM_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/BACKGROUND_X_FES_ACCUML.xml create mode 100644 resource/fr/model_studio/setting/table/BACKGROUND_X_FES_ANALOG.xml create mode 100644 resource/fr/model_studio/setting/table/BACKGROUND_X_FES_DIGTAL.xml create mode 100644 resource/fr/model_studio/setting/table/BAS_CRAFT_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/BAS_MODE_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/BAS_MODE_TYPE.xml create mode 100644 resource/fr/model_studio/setting/table/BAS_TIMETABLE_CTRL_PARAM.xml create mode 100644 resource/fr/model_studio/setting/table/BAS_TIMETABLE_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/BAS_TIMETABLE_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/BAS_TIMETABLE_SCHEDULE.xml create mode 100644 resource/fr/model_studio/setting/table/CALC_FUNC_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/CALC_GROUP_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/CALC_IN_PARA.xml create mode 100644 resource/fr/model_studio/setting/table/CALC_OUT_PARA.xml create mode 100644 resource/fr/model_studio/setting/table/CALC_PARA_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/CCTV_CAMERA_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/CCTV_MONITOR_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/CCTV_ORIENTATION.xml create mode 100644 resource/fr/model_studio/setting/table/CCTV_SEPARATOR_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/DEV_GROUP.xml create mode 100644 resource/fr/model_studio/setting/table/DEV_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/DEV_INFO_FOR_EMPTY_ADD.xml create mode 100644 resource/fr/model_studio/setting/table/DEV_TEMP_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/DEV_TEMP_GROUP.xml create mode 100644 resource/fr/model_studio/setting/table/DEV_TRIGGER_FLAG.xml create mode 100644 resource/fr/model_studio/setting/table/DEV_TYPE_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/DEV_TYPE_DEF_61850.xml create mode 100644 resource/fr/model_studio/setting/table/DICT_MENU_INFO_PNT_CLASS.xml create mode 100644 resource/fr/model_studio/setting/table/DICT_POINT_TYPE.xml create mode 100644 resource/fr/model_studio/setting/table/DICT_POINT_TYPE_FOR_POINT_ADD.xml create mode 100644 resource/fr/model_studio/setting/table/DICT_STATE_TEXT_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/DICT_TEXT_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/DICT_UNIT_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/DICT_VOL_LEVEL.xml create mode 100644 resource/fr/model_studio/setting/table/DIGITAL.xml create mode 100644 resource/fr/model_studio/setting/table/DIGITAL_CONTROL.xml create mode 100644 resource/fr/model_studio/setting/table/DIGITAL_MAP_TO_FES.xml create mode 100644 resource/fr/model_studio/setting/table/DIGITAL_TEMP_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/FAULT_RECALL_COND_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/FBD_GROUP_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/FES_ACCUML.xml create mode 100644 resource/fr/model_studio/setting/table/FES_ANALOG.xml create mode 100644 resource/fr/model_studio/setting/table/FES_ANALOG_CTRL.xml create mode 100644 resource/fr/model_studio/setting/table/FES_CHANNEL_PARA.xml create mode 100644 resource/fr/model_studio/setting/table/FES_CONST.xml create mode 100644 resource/fr/model_studio/setting/table/FES_CONST_TEMP.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DATA_BLOCK.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DATA_BLOCK_TEMP.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DEV_ACCUNL_TEMP_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DEV_ANALOG_CTRL_TEMP_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DEV_ANALOG_TEMP_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DEV_DIGITAL_CTRL_TEMP_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DEV_DIGITAL_TEMP_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DEV_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DEV_INFO_FOR_ADD.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DEV_INFO_FOR_EMPTY_TEMP.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DEV_MIX_CTRL_TEMP_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DEV_MIX_TEMP_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DEV_PT_TEMP_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DEV_TEMP_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_ADD.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_IMPORT.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DEV_TYPE_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DIGITAL.xml create mode 100644 resource/fr/model_studio/setting/table/FES_DIGITAL_CTRL.xml create mode 100644 resource/fr/model_studio/setting/table/FES_MIX.xml create mode 100644 resource/fr/model_studio/setting/table/FES_MIX_CTRL.xml create mode 100644 resource/fr/model_studio/setting/table/FES_PROTOCOL.xml create mode 100644 resource/fr/model_studio/setting/table/FES_RTU_PARA.xml create mode 100644 resource/fr/model_studio/setting/table/FORWARD_ACCUML.xml create mode 100644 resource/fr/model_studio/setting/table/FORWARD_ANALOG.xml create mode 100644 resource/fr/model_studio/setting/table/FORWARD_ANALOG_CTRL.xml create mode 100644 resource/fr/model_studio/setting/table/FORWARD_DIGITAL_CTRL.xml create mode 100644 resource/fr/model_studio/setting/table/FORWARD_DIGITAL_DOUBLE.xml create mode 100644 resource/fr/model_studio/setting/table/FORWARD_DIGITAL_SINGLE.xml create mode 100644 resource/fr/model_studio/setting/table/FORWARD_MIX.xml create mode 100644 resource/fr/model_studio/setting/table/FORWARD_MIX_CTRL.xml create mode 100644 resource/fr/model_studio/setting/table/HIS_WORK_TICKET.xml create mode 100644 resource/fr/model_studio/setting/table/HMI_TYPE_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/IA_DISPOSAL_PLAN.xml create mode 100644 resource/fr/model_studio/setting/table/INVALID_SYS_TABLE_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/LINKAGE_ACTION.xml create mode 100644 resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_BAS.xml create mode 100644 resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_MSG.xml create mode 100644 resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_PA.xml create mode 100644 resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_PIS.xml create mode 100644 resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_PSCADA.xml create mode 100644 resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_PUSH_PIC.xml create mode 100644 resource/fr/model_studio/setting/table/LINKAGE_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/LINKAGE_FUNCTION.xml create mode 100644 resource/fr/model_studio/setting/table/LINKAGE_FUNCTION_LIST.xml create mode 100644 resource/fr/model_studio/setting/table/LINKAGE_SETTING.xml create mode 100644 resource/fr/model_studio/setting/table/LINKAGE_SETTING_FOR_ADD_AND_MODIFY.xml create mode 100644 resource/fr/model_studio/setting/table/LOAD_STAT_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/MIX.xml create mode 100644 resource/fr/model_studio/setting/table/MIX_CONTROL.xml create mode 100644 resource/fr/model_studio/setting/table/MIX_MAP_TO_FES.xml create mode 100644 resource/fr/model_studio/setting/table/MIX_METHOD.xml create mode 100644 resource/fr/model_studio/setting/table/MIX_TEMP_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/OPT_CTRL_ACT_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/OPT_HANDOVER_GRP.xml create mode 100644 resource/fr/model_studio/setting/table/OPT_INTERLOCK_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/OPT_INTERLOCK_PARA.xml create mode 100644 resource/fr/model_studio/setting/table/OPT_INTERLOCK_PARA_FOR_SELECT.xml create mode 100644 resource/fr/model_studio/setting/table/OPT_SHIELD_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/OPT_TOKEN_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/PA_AREA_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/PA_AUDIO_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/PA_BROADCAST_GROUP.xml create mode 100644 resource/fr/model_studio/setting/table/PA_CTRL_PARAM.xml create mode 100644 resource/fr/model_studio/setting/table/PA_LOCATION_AREA_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/PA_LOCATION_SEQ_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/PA_OPERATOR_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/PA_OPERATOR_MAP.xml create mode 100644 resource/fr/model_studio/setting/table/PA_TIMED_AUDIO.xml create mode 100644 resource/fr/model_studio/setting/table/PIS_AREA_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/PIS_CTRL_PARAM.xml create mode 100644 resource/fr/model_studio/setting/table/PIS_DISPLAY_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/PIS_FES_LOCATION_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/PIS_LOCATION_AREA_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/PIS_MESSAGE_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/PSC3000_FES_TEMP.xml create mode 100644 resource/fr/model_studio/setting/table/REGION_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/REPORT_TYPE_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/RM_DEPT_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/RM_NORM_FUNC_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/RM_ROLE_DB_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/RM_ROLE_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/RM_ROLE_HMI_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/RM_ROLE_SPEF_REG.xml create mode 100644 resource/fr/model_studio/setting/table/RM_SECURITY_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/RM_SPCL_FUNC_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/RM_USERG_DB_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/RM_USERG_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/RM_USERG_HMI_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/RM_USERG_RSP_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/RM_USER_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/RT_COLUMN_MODE.xml create mode 100644 resource/fr/model_studio/setting/table/RT_TABLE_MODE.xml create mode 100644 resource/fr/model_studio/setting/table/SAFETY_DAY.xml create mode 100644 resource/fr/model_studio/setting/table/SAMPLE_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/SEQUENCE_ACTION.xml create mode 100644 resource/fr/model_studio/setting/table/SEQUENCE_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/SEQUENCE_FUNCTION.xml create mode 100644 resource/fr/model_studio/setting/table/SEQUENCE_SETTING.xml create mode 100644 resource/fr/model_studio/setting/table/STAT_INST_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/STAT_INST_PARA_GRP.xml create mode 100644 resource/fr/model_studio/setting/table/STAT_INST_PARA_POINT.xml create mode 100644 resource/fr/model_studio/setting/table/STAT_INST_PARA_POINT_FOR_ADD.xml create mode 100644 resource/fr/model_studio/setting/table/STAT_INST_PARA_TIME.xml create mode 100644 resource/fr/model_studio/setting/table/STAT_INST_PARA_TIME_FOR_ADD.xml create mode 100644 resource/fr/model_studio/setting/table/STAT_INST_RET_GRP.xml create mode 100644 resource/fr/model_studio/setting/table/STAT_INST_RET_PARA.xml create mode 100644 resource/fr/model_studio/setting/table/STAT_INST_RET_PARA_FOR_ADD.xml create mode 100644 resource/fr/model_studio/setting/table/STAT_LINK_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/STAT_LINK_PARA.xml create mode 100644 resource/fr/model_studio/setting/table/STAT_LINK_RET.xml create mode 100644 resource/fr/model_studio/setting/table/STAT_TEMPLATE_DEF.xml create mode 100644 resource/fr/model_studio/setting/table/STAT_TEMPLATE_PARA.xml create mode 100644 resource/fr/model_studio/setting/table/STAT_TEMPLATE_RET.xml create mode 100644 resource/fr/model_studio/setting/table/SWITCH_CFG_INFO.xml create mode 100644 resource/fr/model_studio/setting/table/SYS_MODEL_MSG_RELAY.xml create mode 100644 resource/fr/model_studio/setting/table/TBL_FES_DEV_INFO_FOR_FES_ADD.xml create mode 100644 resource/fr/model_studio/setting/table/TEMP_PLUGIN.xml create mode 100644 resource/fr/model_studio/setting/table/TEMP_PLUGIN_DEV_MAP.xml create mode 100644 resource/fr/model_studio/setting/table/TEMP_PLUGIN_FES_DEV_MAP.xml create mode 100644 resource/fr/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ACC.xml create mode 100644 resource/fr/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ANA.xml create mode 100644 resource/fr/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_DIG.xml create mode 100644 resource/fr/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_MIX.xml create mode 100644 resource/fr/model_studio/setting/table/TRIGGER_CONDITION_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/TRIGGER_FUNCTION_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/TRIGGER_PERIOD_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/TRIGGER_TIMER_DEFINE.xml create mode 100644 resource/fr/model_studio/setting/table/sample.xml create mode 100644 resource/fr/model_studio/setting/table/sys_model_app_info.xml create mode 100644 resource/fr/model_studio/setting/table/sys_model_dbconfig_domain.xml create mode 100644 resource/fr/model_studio/setting/table/sys_model_dbconfig_node.xml create mode 100644 resource/fr/model_studio/setting/table/sys_model_deploy_info.xml create mode 100644 resource/fr/model_studio/setting/table/sys_model_domain_info.xml create mode 100644 resource/fr/model_studio/setting/table/sys_model_location_info.xml create mode 100644 resource/fr/model_studio/setting/table/sys_model_node_info.xml create mode 100644 resource/fr/model_studio/setting/table/sys_model_process_info.xml create mode 100644 resource/fr/model_studio/setting/table/sys_model_sub_system_info.xml create mode 100644 resource/fr/model_studio/setting/tree/TriggerFuncTree.xml create mode 100644 resource/fr/model_studio/setting/tree/TriggerParaTree.xml create mode 100644 resource/fr/model_studio/setting/tree/alarmTree.xml create mode 100644 resource/fr/model_studio/setting/tree/app.json create mode 100644 resource/fr/model_studio/setting/tree/app.xml create mode 100644 resource/fr/model_studio/setting/tree/autoRelation.json create mode 100644 resource/fr/model_studio/setting/tree/calcFunc.xml create mode 100644 resource/fr/model_studio/setting/tree/chan.xml create mode 100644 resource/fr/model_studio/setting/tree/commonTree.xml create mode 100644 resource/fr/model_studio/setting/tree/ctrlActDefine.xml create mode 100644 resource/fr/model_studio/setting/tree/deploy.json create mode 100644 resource/fr/model_studio/setting/tree/deploy.xml create mode 100644 resource/fr/model_studio/setting/tree/devInstListTree.xml create mode 100644 resource/fr/model_studio/setting/tree/devInstTree.xml create mode 100644 resource/fr/model_studio/setting/tree/devInstTreeAll.xml create mode 100644 resource/fr/model_studio/setting/tree/devInstTreeDev.xml create mode 100644 resource/fr/model_studio/setting/tree/devInstTreeDevAndGrp.xml create mode 100644 resource/fr/model_studio/setting/tree/devInstTreeDevAndLocation.xml create mode 100644 resource/fr/model_studio/setting/tree/devInstTreeGrp.xml create mode 100644 resource/fr/model_studio/setting/tree/devInstTreeGrpAndLocation.xml create mode 100644 resource/fr/model_studio/setting/tree/devInstTreeLocation.xml create mode 100644 resource/fr/model_studio/setting/tree/devModelTree.xml create mode 100644 resource/fr/model_studio/setting/tree/devTempTree.xml create mode 100644 resource/fr/model_studio/setting/tree/expressionTree.xml create mode 100644 resource/fr/model_studio/setting/tree/fesDevInstListTree.xml create mode 100644 resource/fr/model_studio/setting/tree/fesDevTreeAll.xml create mode 100644 resource/fr/model_studio/setting/tree/fesDevTreeDev.xml create mode 100644 resource/fr/model_studio/setting/tree/fesDevTreeDevLocation.xml create mode 100644 resource/fr/model_studio/setting/tree/fesDevTreeDevRTU.xml create mode 100644 resource/fr/model_studio/setting/tree/fesDevTreeLocation.xml create mode 100644 resource/fr/model_studio/setting/tree/fesDevTreeLocationRTU.xml create mode 100644 resource/fr/model_studio/setting/tree/fesDevTreeRTU.xml create mode 100644 resource/fr/model_studio/setting/tree/fesTree.xml create mode 100644 resource/fr/model_studio/setting/tree/location.json create mode 100644 resource/fr/model_studio/setting/tree/location.xml create mode 100644 resource/fr/model_studio/setting/tree/lockDefineTree.xml create mode 100644 resource/fr/model_studio/setting/tree/mainWindow.xml create mode 100644 resource/fr/model_studio/setting/tree/optLockPara.xml create mode 100644 resource/fr/model_studio/setting/tree/pcs3000ImportData.json create mode 100644 resource/fr/model_studio/setting/tree/pcs3000ToFes.json create mode 100644 resource/fr/model_studio/setting/tree/projec.xml create mode 100644 resource/fr/model_studio/setting/tree/rt.json create mode 100644 resource/fr/model_studio/setting/tree/rtTree.xml create mode 100644 resource/fr/model_studio/setting/tree/rtuList.xml create mode 100644 resource/fr/model_studio/setting/tree/sampleTree.xml create mode 100644 resource/fr/model_studio/setting/tree/statInstInput.xml create mode 100644 resource/fr/model_studio/setting/tree/statInstOutput.xml create mode 100644 resource/fr/model_studio/setting/tree/stateTextTree.xml create mode 100644 resource/fr/model_studio/setting/tree/staticsTree.xml create mode 100644 resource/fr/model_studio/setting/tree/sysConfigTree.xml create mode 100644 resource/fr/model_studio/setting/tree/textDefine.outline create mode 100644 resource/fr/model_studio/setting/tree/textDefine.xml create mode 100644 resource/fr/model_studio/setting/tree/userTree.xml create mode 100644 resource/fr/model_studio/translate/model_common_FR.qm create mode 100644 resource/fr/model_studio/translate/model_common_FR.ts create mode 100644 resource/fr/model_studio/translate/model_linkage_EN.qm create mode 100644 resource/fr/model_studio/translate/model_linkage_EN.ts create mode 100644 resource/fr/model_studio/translate/model_plan_curve_EN.qm create mode 100644 resource/fr/model_studio/translate/model_plan_curve_EN.ts create mode 100644 resource/fr/model_studio/translate/model_sequence_EN.qm create mode 100644 resource/fr/model_studio/translate/model_sequence_EN.ts create mode 100644 resource/fr/model_studio/translate/model_studio_EN.qm create mode 100644 resource/fr/model_studio/translate/model_studio_EN.ts create mode 100644 resource/fr/model_studio/translate/model_system_config_EN.qm create mode 100644 resource/fr/model_studio/translate/model_system_config_EN.ts create mode 100644 resource/fr/model_studio/translate/model_table_EN.qm create mode 100644 resource/fr/model_studio/translate/model_table_EN.ts create mode 100644 resource/fr/model_studio/translate/model_user_FR.qm create mode 100644 resource/fr/model_studio/translate/model_user_FR.ts create mode 100644 resource/fr/model_studio/translate/model_waiting_dlg_EN.qm create mode 100644 resource/fr/model_studio/translate/model_waiting_dlg_EN.ts create mode 100644 resource/fr/model_studio/translate/plan_curve_EN.qm create mode 100644 resource/fr/model_studio/translate/plan_curve_EN.ts create mode 100644 resource/fr/model_studio/translate/tableName.json create mode 100644 resource/fr/operate_server/translate/operate_server_en.mo create mode 100644 resource/fr/operate_server/translate/operate_server_en.po create mode 100644 resource/fr/pub_widget/translate/pub_widget_fr.qm create mode 100644 resource/fr/pub_widget/translate/pub_widget_fr.ts create mode 100644 resource/fr/report/translate/report.qm create mode 100644 resource/fr/report/translate/report.ts create mode 100644 resource/fr/sequence_server/translate/sequence_server_en.mo create mode 100644 resource/fr/sequence_server/translate/sequence_server_en.po create mode 100644 resource/fr/setup/en.qm create mode 100644 resource/fr/style/dark/AlarmStatWidget.qss create mode 100644 resource/fr/style/dark/AlarmStatisWidget.qss create mode 100644 resource/fr/style/dark/BriefReport.qss create mode 100644 resource/fr/style/dark/DeviceNavWidget.qss create mode 100644 resource/fr/style/dark/SecondButtonGroupWidget.qss create mode 100644 resource/fr/style/dark/StationNavWidget.qss create mode 100644 resource/fr/style/dark/SysParamWidget.qss create mode 100644 resource/fr/style/dark/WebBrowserWidget.qss create mode 100644 resource/fr/style/dark/alarm.qss create mode 100644 resource/fr/style/dark/alarmForm.qss create mode 100644 resource/fr/style/dark/alarmShield.qss create mode 100644 resource/fr/style/dark/alarm_statistics.qss create mode 100644 resource/fr/style/dark/alarmmng.qss create mode 100644 resource/fr/style/dark/asset.qss create mode 100644 resource/fr/style/dark/breadcrumbNav.qss create mode 100644 resource/fr/style/dark/cButtonGroupWidget.qss create mode 100644 resource/fr/style/dark/constCurves.qss create mode 100644 resource/fr/style/dark/curveColor.cfg create mode 100644 resource/fr/style/dark/debug_tool.qss create mode 100644 resource/fr/style/dark/deviceRealData.qss create mode 100644 resource/fr/style/dark/duty_setting.qss create mode 100644 resource/fr/style/dark/event.qss create mode 100644 resource/fr/style/dark/explorerWnd.qss create mode 100644 resource/fr/style/dark/faultRecord.qss create mode 100644 resource/fr/style/dark/fbd_designer.qss create mode 100644 resource/fr/style/dark/hmiRoll.qss create mode 100644 resource/fr/style/dark/ipcPlus.qss create mode 100644 resource/fr/style/dark/ipcViewer.qss create mode 100644 resource/fr/style/dark/linkCtrl.qss create mode 100644 resource/fr/style/dark/media.qss create mode 100644 resource/fr/style/dark/modelStudio.qss create mode 100644 resource/fr/style/dark/orderManage.qss create mode 100644 resource/fr/style/dark/planCurvesConfigure.qss create mode 100644 resource/fr/style/dark/public.qss create mode 100644 resource/fr/style/dark/relaySetting.qss create mode 100644 resource/fr/style/dark/robot.qss create mode 100644 resource/fr/style/dark/secondNavigation.qss create mode 100644 resource/fr/style/dark/sequence.qss create mode 100644 resource/fr/style/dark/shift.qss create mode 100644 resource/fr/style/dark/sys_startup.qss create mode 100644 resource/fr/style/dark/trendCurves.qss create mode 100644 resource/fr/style/dark/usermng.qss create mode 100644 resource/fr/style/dark/workBench.qss create mode 100644 resource/fr/style/dark/workTicket.qss create mode 100644 resource/fr/style/light/AlarmStatisWidget.qss create mode 100644 resource/fr/style/light/BriefReport.qss create mode 100644 resource/fr/style/light/WebBrowserWidget.qss create mode 100644 resource/fr/style/light/alarm.qss create mode 100644 resource/fr/style/light/alarmShield.qss create mode 100644 resource/fr/style/light/alarm_statistics.qss create mode 100644 resource/fr/style/light/alarmmng.qss create mode 100644 resource/fr/style/light/asset.qss create mode 100644 resource/fr/style/light/breadcrumbNav.qss create mode 100644 resource/fr/style/light/constCurves.qss create mode 100644 resource/fr/style/light/curveColor.cfg create mode 100644 resource/fr/style/light/debug_tool.qss create mode 100644 resource/fr/style/light/deviceRealData.qss create mode 100644 resource/fr/style/light/duty_setting.qss create mode 100644 resource/fr/style/light/event.qss create mode 100644 resource/fr/style/light/faultRecord.qss create mode 100644 resource/fr/style/light/fbd_designer.qss create mode 100644 resource/fr/style/light/hmiRoll.qss create mode 100644 resource/fr/style/light/ipcPlus.qss create mode 100644 resource/fr/style/light/ipcViewer.qss create mode 100644 resource/fr/style/light/linkCtrl.qss create mode 100644 resource/fr/style/light/media.qss create mode 100644 resource/fr/style/light/modelStudio.qss create mode 100644 resource/fr/style/light/planCurvesConfigure.qss create mode 100644 resource/fr/style/light/public.qss create mode 100644 resource/fr/style/light/relaySetting.qss create mode 100644 resource/fr/style/light/robot.qss create mode 100644 resource/fr/style/light/sequence.qss create mode 100644 resource/fr/style/light/shift.qss create mode 100644 resource/fr/style/light/sys_startup.qss create mode 100644 resource/fr/style/light/trendCurves.qss create mode 100644 resource/fr/style/light/usermng.qss create mode 100644 resource/fr/style/light/workBench.qss create mode 100644 resource/fr/style/public.qsst create mode 100644 resource/fr/style/样式模板.qsst create mode 100644 resource/fr/sys_ctrl/translate/sys_ctrl_en.mo create mode 100644 resource/fr/sys_ctrl/translate/sys_ctrl_en.po create mode 100644 resource/fr/sys_login_api/translate/en.ts create mode 100644 resource/fr/sys_login_api/translate/fr.qm create mode 100644 resource/fr/sys_startup/translate/en.qm create mode 100644 resource/fr/sys_startup/translate/en.ts create mode 100644 resource/fr/workBench/translate/fr.qm create mode 100644 resource/fr/workBench/translate/fr.ts create mode 100644 resource/fr/workBench/workBench.json create mode 100644 resource/zh/apc_if_srv/translate/apc_if_srv_zh.mo create mode 100644 resource/zh/apc_if_srv/translate/apc_if_srv_zh.po create mode 100644 resource/zh/app_bio_identify_srv/translate/app_bio_identify_srv_zh.mo create mode 100644 resource/zh/app_bio_identify_srv/translate/app_bio_identify_srv_zh.po create mode 100644 resource/zh/app_fbd/translate/app_fbd_zh.mo create mode 100644 resource/zh/app_fbd/translate/app_fbd_zh.po create mode 100644 resource/zh/fbd_editor/temp/evtpushstyletemp.json create mode 100644 resource/zh/fbd_editor/translate/fbd_editor_zh.qm create mode 100644 resource/zh/fbd_editor/translate/fbd_editor_zh.ts create mode 100644 resource/zh/fbd_editor/translate/platform_zh.qm create mode 100644 resource/zh/fbd_editor/translate/platform_zh.ts create mode 100644 resource/zh/fes/translate/fes_zh.mo create mode 100644 resource/zh/fes/translate/fes_zh.po create mode 100644 resource/zh/gui/icon/alarm/back.png create mode 100644 resource/zh/gui/icon/alarm/icon_中.png create mode 100644 resource/zh/gui/icon/alarm/icon_低.png create mode 100644 resource/zh/gui/icon/alarm/icon_正常.png create mode 100644 resource/zh/gui/icon/alarm/icon_紧急.png create mode 100644 resource/zh/gui/icon/alarm/icon_高.png create mode 100644 resource/zh/gui/icon/alarm/trend_dark.png create mode 100644 resource/zh/gui/icon/alarm/trend_light.png create mode 100644 resource/zh/gui/icon/alarm/video_dark.png create mode 100644 resource/zh/gui/icon/alarm/video_light.png create mode 100644 resource/zh/gui/icon/alarm/wave_dark.png create mode 100644 resource/zh/gui/icon/alarm/wave_light.png create mode 100644 resource/zh/gui/icon/asset/record.png create mode 100644 resource/zh/gui/icon/bi/face_dark.png create mode 100644 resource/zh/gui/icon/bi/face_light.png create mode 100644 resource/zh/gui/icon/hmi/DataOpt.png create mode 100644 resource/zh/gui/icon/hmi/DevRealData.png create mode 100644 resource/zh/gui/icon/hmi/HangPanel.png create mode 100644 resource/zh/gui/icon/hmi/Media.png create mode 100644 resource/zh/gui/icon/hmi/PixelMap.png create mode 100644 resource/zh/gui/icon/hmi/PolymorphicText.png create mode 100644 resource/zh/gui/icon/hmi/accidentRecollect.png create mode 100644 resource/zh/gui/icon/hmi/alarm.png create mode 100644 resource/zh/gui/icon/hmi/alarmAnalysis.png create mode 100644 resource/zh/gui/icon/hmi/alarmManagement.png create mode 100644 resource/zh/gui/icon/hmi/alarmShielding.png create mode 100644 resource/zh/gui/icon/hmi/alarmStatistics.png create mode 100644 resource/zh/gui/icon/hmi/alignBottom.png create mode 100644 resource/zh/gui/icon/hmi/alignHorizontal.png create mode 100644 resource/zh/gui/icon/hmi/alignLeft.png create mode 100644 resource/zh/gui/icon/hmi/alignRight.png create mode 100644 resource/zh/gui/icon/hmi/alignTop.png create mode 100644 resource/zh/gui/icon/hmi/alignVertical.png create mode 100644 resource/zh/gui/icon/hmi/align_bottom.png create mode 100644 resource/zh/gui/icon/hmi/batchCreate.png create mode 100644 resource/zh/gui/icon/hmi/besselCurve.png create mode 100644 resource/zh/gui/icon/hmi/blockInformation.png create mode 100644 resource/zh/gui/icon/hmi/blq.png create mode 100644 resource/zh/gui/icon/hmi/bottom.png create mode 100644 resource/zh/gui/icon/hmi/brokenLine.png create mode 100644 resource/zh/gui/icon/hmi/browse.png create mode 100644 resource/zh/gui/icon/hmi/button.png create mode 100644 resource/zh/gui/icon/hmi/byq2.png create mode 100644 resource/zh/gui/icon/hmi/byq3.png create mode 100644 resource/zh/gui/icon/hmi/byq4.png create mode 100644 resource/zh/gui/icon/hmi/cam.png create mode 100644 resource/zh/gui/icon/hmi/cam2.png create mode 100644 resource/zh/gui/icon/hmi/cfd.png create mode 100644 resource/zh/gui/icon/hmi/checkAll.png create mode 100644 resource/zh/gui/icon/hmi/checkbox.png create mode 100644 resource/zh/gui/icon/hmi/circle.png create mode 100644 resource/zh/gui/icon/hmi/circularArc.png create mode 100644 resource/zh/gui/icon/hmi/combine.png create mode 100644 resource/zh/gui/icon/hmi/combobox.png create mode 100644 resource/zh/gui/icon/hmi/coordinationCurve.png create mode 100644 resource/zh/gui/icon/hmi/copy.png create mode 100644 resource/zh/gui/icon/hmi/curve.png create mode 100644 resource/zh/gui/icon/hmi/cut.png create mode 100644 resource/zh/gui/icon/hmi/date.png create mode 100644 resource/zh/gui/icon/hmi/db.png create mode 100644 resource/zh/gui/icon/hmi/ddzsq.png create mode 100644 resource/zh/gui/icon/hmi/delete.png create mode 100644 resource/zh/gui/icon/hmi/devInfo.png create mode 100644 resource/zh/gui/icon/hmi/discombine.png create mode 100644 resource/zh/gui/icon/hmi/dj.png create mode 100644 resource/zh/gui/icon/hmi/dkq.png create mode 100644 resource/zh/gui/icon/hmi/dl.png create mode 100644 resource/zh/gui/icon/hmi/dlq.png create mode 100644 resource/zh/gui/icon/hmi/dongzuo.png create mode 100644 resource/zh/gui/icon/hmi/dr.png create mode 100644 resource/zh/gui/icon/hmi/dr1.png create mode 100644 resource/zh/gui/icon/hmi/drdqdz.png create mode 100644 resource/zh/gui/icon/hmi/dydlq.png create mode 100644 resource/zh/gui/icon/hmi/dykg.png create mode 100644 resource/zh/gui/icon/hmi/dz.png create mode 100644 resource/zh/gui/icon/hmi/dzz.png create mode 100644 resource/zh/gui/icon/hmi/ellipse.png create mode 100644 resource/zh/gui/icon/hmi/equHorizontal.png create mode 100644 resource/zh/gui/icon/hmi/equVertical.png create mode 100644 resource/zh/gui/icon/hmi/equalLarge.png create mode 100644 resource/zh/gui/icon/hmi/equalSmall.png create mode 100644 resource/zh/gui/icon/hmi/event.png create mode 100644 resource/zh/gui/icon/hmi/faultRecording.png create mode 100644 resource/zh/gui/icon/hmi/fbdEditor.png create mode 100644 resource/zh/gui/icon/hmi/fdj.png create mode 100644 resource/zh/gui/icon/hmi/fhkg.png create mode 100644 resource/zh/gui/icon/hmi/fileSync.png create mode 100644 resource/zh/gui/icon/hmi/fldkq.png create mode 100644 resource/zh/gui/icon/hmi/gaojing.png create mode 100644 resource/zh/gui/icon/hmi/glkg.png create mode 100644 resource/zh/gui/icon/hmi/gp.png create mode 100644 resource/zh/gui/icon/hmi/grid.png create mode 100644 resource/zh/gui/icon/hmi/gzp.png create mode 100644 resource/zh/gui/icon/hmi/hgq.png create mode 100644 resource/zh/gui/icon/hmi/historicalData.png create mode 100644 resource/zh/gui/icon/hmi/horizontalMirror.png create mode 100644 resource/zh/gui/icon/hmi/hotkey.png create mode 100644 resource/zh/gui/icon/hmi/jcq.png create mode 100644 resource/zh/gui/icon/hmi/jd.png create mode 100644 resource/zh/gui/icon/hmi/jddz.png create mode 100644 resource/zh/gui/icon/hmi/jdyf.png create mode 100644 resource/zh/gui/icon/hmi/jfc.png create mode 100644 resource/zh/gui/icon/hmi/jx.png create mode 100644 resource/zh/gui/icon/hmi/kgj.png create mode 100644 resource/zh/gui/icon/hmi/kx.png create mode 100644 resource/zh/gui/icon/hmi/label.png create mode 100644 resource/zh/gui/icon/hmi/levelDown.png create mode 100644 resource/zh/gui/icon/hmi/levelUp.png create mode 100644 resource/zh/gui/icon/hmi/link.png create mode 100644 resource/zh/gui/icon/hmi/linkageControl.png create mode 100644 resource/zh/gui/icon/hmi/list.png create mode 100644 resource/zh/gui/icon/hmi/ljbyq.png create mode 100644 resource/zh/gui/icon/hmi/ljbyq1.png create mode 100644 resource/zh/gui/icon/hmi/ljbyq2.png create mode 100644 resource/zh/gui/icon/hmi/lock.png create mode 100644 resource/zh/gui/icon/hmi/menu.png create mode 100644 resource/zh/gui/icon/hmi/ml.png create mode 100644 resource/zh/gui/icon/hmi/mlbzt.png create mode 100644 resource/zh/gui/icon/hmi/mx.png create mode 100644 resource/zh/gui/icon/hmi/new.png create mode 100644 resource/zh/gui/icon/hmi/open.png create mode 100644 resource/zh/gui/icon/hmi/operationTicket.png create mode 100644 resource/zh/gui/icon/hmi/paste.png create mode 100644 resource/zh/gui/icon/hmi/pie.png create mode 100644 resource/zh/gui/icon/hmi/plugin.png create mode 100644 resource/zh/gui/icon/hmi/pollingManage.png create mode 100644 resource/zh/gui/icon/hmi/polygon.png create mode 100644 resource/zh/gui/icon/hmi/protectConsValue.png create mode 100644 resource/zh/gui/icon/hmi/publish.png create mode 100644 resource/zh/gui/icon/hmi/qybyq.png create mode 100644 resource/zh/gui/icon/hmi/qybyq1.png create mode 100644 resource/zh/gui/icon/hmi/radiobutton.png create mode 100644 resource/zh/gui/icon/hmi/rectangular.png create mode 100644 resource/zh/gui/icon/hmi/redo.png create mode 100644 resource/zh/gui/icon/hmi/report.png create mode 100644 resource/zh/gui/icon/hmi/run.png create mode 100644 resource/zh/gui/icon/hmi/save.png create mode 100644 resource/zh/gui/icon/hmi/saveAs.png create mode 100644 resource/zh/gui/icon/hmi/sc.png create mode 100644 resource/zh/gui/icon/hmi/sc_down.png create mode 100644 resource/zh/gui/icon/hmi/sc_up.png create mode 100644 resource/zh/gui/icon/hmi/scriptEditor.png create mode 100644 resource/zh/gui/icon/hmi/seqControlManage.png create mode 100644 resource/zh/gui/icon/hmi/sjbyq.png create mode 100644 resource/zh/gui/icon/hmi/sjx.png create mode 100644 resource/zh/gui/icon/hmi/spinbox.png create mode 100644 resource/zh/gui/icon/hmi/stick.png create mode 100644 resource/zh/gui/icon/hmi/straightLine.png create mode 100644 resource/zh/gui/icon/hmi/tablewidget.png create mode 100644 resource/zh/gui/icon/hmi/terminal.png create mode 100644 resource/zh/gui/icon/hmi/text.png create mode 100644 resource/zh/gui/icon/hmi/textInput.png create mode 100644 resource/zh/gui/icon/hmi/textbox.png create mode 100644 resource/zh/gui/icon/hmi/tiaozha.png create mode 100644 resource/zh/gui/icon/hmi/time.png create mode 100644 resource/zh/gui/icon/hmi/top.png create mode 100644 resource/zh/gui/icon/hmi/topo.png create mode 100644 resource/zh/gui/icon/hmi/travelBriefing.png create mode 100644 resource/zh/gui/icon/hmi/treewidget.png create mode 100644 resource/zh/gui/icon/hmi/trend.png create mode 100644 resource/zh/gui/icon/hmi/trtczhkg.png create mode 100644 resource/zh/gui/icon/hmi/txzc.png create mode 100644 resource/zh/gui/icon/hmi/tyztxs.png create mode 100644 resource/zh/gui/icon/hmi/undo.png create mode 100644 resource/zh/gui/icon/hmi/userGroupManage.png create mode 100644 resource/zh/gui/icon/hmi/verticalMirror.png create mode 100644 resource/zh/gui/icon/hmi/viewOff.png create mode 100644 resource/zh/gui/icon/hmi/viewOn.png create mode 100644 resource/zh/gui/icon/hmi/wgbc.png create mode 100644 resource/zh/gui/icon/hmi/workTicket.png create mode 100644 resource/zh/gui/icon/hmi/workforceManage.png create mode 100644 resource/zh/gui/icon/hmi/xd.png create mode 100644 resource/zh/gui/icon/hmi/xdc.png create mode 100644 resource/zh/gui/icon/hmi/xl.png create mode 100644 resource/zh/gui/icon/hmi/ybp.png create mode 100644 resource/zh/gui/icon/hmi/yc.png create mode 100644 resource/zh/gui/icon/hmi/yfjdzhkg.png create mode 100644 resource/zh/gui/icon/hmi/yichang.png create mode 100644 resource/zh/gui/icon/hmi/zlq.png create mode 100644 resource/zh/gui/icon/hmi/zlq2.png create mode 100644 resource/zh/gui/icon/ipc/camera-hovered.svg create mode 100644 resource/zh/gui/icon/ipc/camera.svg create mode 100644 resource/zh/gui/icon/ipc/down-clicked.png create mode 100644 resource/zh/gui/icon/ipc/down-hovered.png create mode 100644 resource/zh/gui/icon/ipc/down.png create mode 100644 resource/zh/gui/icon/ipc/icon+.png create mode 100644 resource/zh/gui/icon/ipc/icon-.png create mode 100644 resource/zh/gui/icon/ipc/icon_Silence.png create mode 100644 resource/zh/gui/icon/ipc/icon_camer.png create mode 100644 resource/zh/gui/icon/ipc/icon_down.png create mode 100644 resource/zh/gui/icon/ipc/icon_down_click.png create mode 100644 resource/zh/gui/icon/ipc/icon_key.png create mode 100644 resource/zh/gui/icon/ipc/icon_left.png create mode 100644 resource/zh/gui/icon/ipc/icon_left_click.png create mode 100644 resource/zh/gui/icon/ipc/icon_play.png create mode 100644 resource/zh/gui/icon/ipc/icon_right.png create mode 100644 resource/zh/gui/icon/ipc/icon_right_click.png create mode 100644 resource/zh/gui/icon/ipc/icon_suspend.png create mode 100644 resource/zh/gui/icon/ipc/icon_up.png create mode 100644 resource/zh/gui/icon/ipc/icon_up_click.png create mode 100644 resource/zh/gui/icon/ipc/icon_voice.png create mode 100644 resource/zh/gui/icon/ipc/left-clicked.png create mode 100644 resource/zh/gui/icon/ipc/left-hovered.png create mode 100644 resource/zh/gui/icon/ipc/left.png create mode 100644 resource/zh/gui/icon/ipc/pause.png create mode 100644 resource/zh/gui/icon/ipc/play-hovered.png create mode 100644 resource/zh/gui/icon/ipc/play-hovered.svg create mode 100644 resource/zh/gui/icon/ipc/play.png create mode 100644 resource/zh/gui/icon/ipc/right-clicked.png create mode 100644 resource/zh/gui/icon/ipc/right-hovered.png create mode 100644 resource/zh/gui/icon/ipc/right.png create mode 100644 resource/zh/gui/icon/ipc/up-clicked.png create mode 100644 resource/zh/gui/icon/ipc/up-hovered.png create mode 100644 resource/zh/gui/icon/ipc/up.png create mode 100644 resource/zh/gui/icon/ipc/vol-hovered.svg create mode 100644 resource/zh/gui/icon/ipc/vol-mute.svg create mode 100644 resource/zh/gui/icon/ipc/vol.svg create mode 100644 resource/zh/gui/icon/robot/charge.gif create mode 100644 resource/zh/gui/icon/robot/charge.png create mode 100644 resource/zh/gui/icon/robot/cut.png create mode 100644 resource/zh/gui/icon/robot/down_arrow.png create mode 100644 resource/zh/gui/icon/robot/free.gif create mode 100644 resource/zh/gui/icon/robot/free.png create mode 100644 resource/zh/gui/icon/robot/overhaul.gif create mode 100644 resource/zh/gui/icon/robot/overhaul.png create mode 100644 resource/zh/gui/icon/robot/overlook.gif create mode 100644 resource/zh/gui/icon/robot/overlook.png create mode 100644 resource/zh/gui/icon/robot/pause.png create mode 100644 resource/zh/gui/icon/robot/play.png create mode 100644 resource/zh/gui/icon/robot/robotbottom.png create mode 100644 resource/zh/gui/icon/robot/search.png create mode 100644 resource/zh/gui/icon/robot/up_arrow.png create mode 100644 resource/zh/gui/icon/robot/voiceClose.png create mode 100644 resource/zh/gui/icon/robot/voiceOpen.png create mode 100644 resource/zh/gui/translate/hmi_zh.qm create mode 100644 resource/zh/gui/translate/hmi_zh.ts create mode 100644 resource/zh/gui/translate/icon_zh.ts create mode 100644 resource/zh/gui/translate/plugin_zh.qm create mode 100644 resource/zh/gui/translate/plugin_zh.ts create mode 100644 resource/zh/linkage_server/translate/linkage_server_zh.mo create mode 100644 resource/zh/linkage_server/translate/linkage_server_zh.po create mode 100644 resource/zh/model_studio/icons/RTU.png create mode 100644 resource/zh/model_studio/icons/alarm.png create mode 100644 resource/zh/model_studio/icons/anquan.png create mode 100644 resource/zh/model_studio/icons/app.png create mode 100644 resource/zh/model_studio/icons/ats.png create mode 100644 resource/zh/model_studio/icons/bas.png create mode 100644 resource/zh/model_studio/icons/base.png create mode 100644 resource/zh/model_studio/icons/baseinfo.png create mode 100644 resource/zh/model_studio/icons/channel.png create mode 100644 resource/zh/model_studio/icons/collection.png create mode 100644 resource/zh/model_studio/icons/db.png create mode 100644 resource/zh/model_studio/icons/define.png create mode 100644 resource/zh/model_studio/icons/dept.png create mode 100644 resource/zh/model_studio/icons/devSame.png create mode 100644 resource/zh/model_studio/icons/devType.png create mode 100644 resource/zh/model_studio/icons/device.png create mode 100644 resource/zh/model_studio/icons/device_child.png create mode 100644 resource/zh/model_studio/icons/dict.png create mode 100644 resource/zh/model_studio/icons/fesCfg.png create mode 100644 resource/zh/model_studio/icons/forward.png create mode 100644 resource/zh/model_studio/icons/func.png create mode 100644 resource/zh/model_studio/icons/generate.png create mode 100644 resource/zh/model_studio/icons/icon2.gif create mode 100644 resource/zh/model_studio/icons/icon_add.png create mode 100644 resource/zh/model_studio/icons/init.png create mode 100644 resource/zh/model_studio/icons/main_alarm.png create mode 100644 resource/zh/model_studio/icons/main_common.png create mode 100644 resource/zh/model_studio/icons/main_dev.png create mode 100644 resource/zh/model_studio/icons/main_exit.png create mode 100644 resource/zh/model_studio/icons/main_fes.png create mode 100644 resource/zh/model_studio/icons/main_formula.png create mode 100644 resource/zh/model_studio/icons/main_linkage.png create mode 100644 resource/zh/model_studio/icons/main_plan_curves.png create mode 100644 resource/zh/model_studio/icons/main_sample.png create mode 100644 resource/zh/model_studio/icons/main_seq.png create mode 100644 resource/zh/model_studio/icons/main_template.png create mode 100644 resource/zh/model_studio/icons/main_template_bind.png create mode 100644 resource/zh/model_studio/icons/main_tools.png create mode 100644 resource/zh/model_studio/icons/main_user.png create mode 100644 resource/zh/model_studio/icons/msg.png create mode 100644 resource/zh/model_studio/icons/network.png create mode 100644 resource/zh/model_studio/icons/pa.png create mode 100644 resource/zh/model_studio/icons/pic.png create mode 100644 resource/zh/model_studio/icons/pis.png create mode 100644 resource/zh/model_studio/icons/power.png create mode 100644 resource/zh/model_studio/icons/report.png create mode 100644 resource/zh/model_studio/icons/role.png create mode 100644 resource/zh/model_studio/icons/temp.png create mode 100644 resource/zh/model_studio/icons/tempType.png create mode 100644 resource/zh/model_studio/icons/tv_icon.png create mode 100644 resource/zh/model_studio/icons/user.png create mode 100644 resource/zh/model_studio/icons/userGroup.png create mode 100644 resource/zh/model_studio/setting/fileLogic/configcheck.xml create mode 100644 resource/zh/model_studio/setting/style/fesTemp.xlsx create mode 100644 resource/zh/model_studio/setting/style/kbdTable.qss create mode 100644 resource/zh/model_studio/setting/style/psc3000Temp.xlsx create mode 100644 resource/zh/model_studio/setting/style/scrollBar.qss create mode 100644 resource/zh/model_studio/setting/style/toolBar.qss create mode 100644 resource/zh/model_studio/setting/table/ACCUML.xml create mode 100644 resource/zh/model_studio/setting/table/ACCUML_LIMIT_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/ACCUML_MAP_TO_FES.xml create mode 100644 resource/zh/model_studio/setting/table/ACCUML_TEMP_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/ACS_DEVICE_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/ADD_POINT_FROM_FES_TEMP.xml create mode 100644 resource/zh/model_studio/setting/table/ALARM_ACTION_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/ALARM_KEYWORD_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/ALARM_LEVEL_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/ALARM_LEVEL_SOUND_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/ALARM_MANNER_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/ALARM_SMS_CONFIG.xml create mode 100644 resource/zh/model_studio/setting/table/ALARM_SMS_DEVICE.xml create mode 100644 resource/zh/model_studio/setting/table/ALARM_SMS_RULE.xml create mode 100644 resource/zh/model_studio/setting/table/ALARM_STATUS_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/ALARM_STATUS_DIG_SET.xml create mode 100644 resource/zh/model_studio/setting/table/ALARM_TYPE_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/ANALOG.xml create mode 100644 resource/zh/model_studio/setting/table/ANALOG_CONTROL.xml create mode 100644 resource/zh/model_studio/setting/table/ANALOG_LIMIT_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/ANALOG_MAP_TO_FES.xml create mode 100644 resource/zh/model_studio/setting/table/ANALOG_OVER_STATISTICS.xml create mode 100644 resource/zh/model_studio/setting/table/ANALOG_TEMP_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/APC_ANALOG.xml create mode 100644 resource/zh/model_studio/setting/table/APC_DIGITAL.xml create mode 100644 resource/zh/model_studio/setting/table/ATS_FES_LOCATION_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/ATS_FES_PLATFORM_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/BACKGROUND_X_FES_ACCUML.xml create mode 100644 resource/zh/model_studio/setting/table/BACKGROUND_X_FES_ANALOG.xml create mode 100644 resource/zh/model_studio/setting/table/BACKGROUND_X_FES_DIGTAL.xml create mode 100644 resource/zh/model_studio/setting/table/BAS_CRAFT_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/BAS_MODE_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/BAS_MODE_TYPE.xml create mode 100644 resource/zh/model_studio/setting/table/BAS_TIMETABLE_CTRL_PARAM.xml create mode 100644 resource/zh/model_studio/setting/table/BAS_TIMETABLE_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/BAS_TIMETABLE_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/BAS_TIMETABLE_SCHEDULE.xml create mode 100644 resource/zh/model_studio/setting/table/CALC_FUNC_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/CALC_GROUP_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/CALC_IN_PARA.xml create mode 100644 resource/zh/model_studio/setting/table/CALC_OUT_PARA.xml create mode 100644 resource/zh/model_studio/setting/table/CALC_PARA_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/CCTV_CAMERA_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/CCTV_MONITOR_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/CCTV_ORIENTATION.xml create mode 100644 resource/zh/model_studio/setting/table/CCTV_SEPARATOR_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/DEV_GROUP.xml create mode 100644 resource/zh/model_studio/setting/table/DEV_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/DEV_INFO_FOR_EMPTY_ADD.xml create mode 100644 resource/zh/model_studio/setting/table/DEV_TEMP_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/DEV_TEMP_GROUP.xml create mode 100644 resource/zh/model_studio/setting/table/DEV_TRIGGER_FLAG.xml create mode 100644 resource/zh/model_studio/setting/table/DEV_TYPE_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/DEV_TYPE_DEF_61850.xml create mode 100644 resource/zh/model_studio/setting/table/DICT_MENU_INFO_PNT_CLASS.xml create mode 100644 resource/zh/model_studio/setting/table/DICT_POINT_TYPE.xml create mode 100644 resource/zh/model_studio/setting/table/DICT_POINT_TYPE_FOR_POINT_ADD.xml create mode 100644 resource/zh/model_studio/setting/table/DICT_STATE_TEXT_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/DICT_TEXT_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/DICT_UNIT_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/DICT_VOL_LEVEL.xml create mode 100644 resource/zh/model_studio/setting/table/DIGITAL.xml create mode 100644 resource/zh/model_studio/setting/table/DIGITAL_CONTROL.xml create mode 100644 resource/zh/model_studio/setting/table/DIGITAL_MAP_TO_FES.xml create mode 100644 resource/zh/model_studio/setting/table/DIGITAL_TEMP_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/FAULT_RECALL_COND_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/FBD_GROUP_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/FES_ACCUML.xml create mode 100644 resource/zh/model_studio/setting/table/FES_ANALOG.xml create mode 100644 resource/zh/model_studio/setting/table/FES_ANALOG_CTRL.xml create mode 100644 resource/zh/model_studio/setting/table/FES_CHANNEL_PARA.xml create mode 100644 resource/zh/model_studio/setting/table/FES_CONST.xml create mode 100644 resource/zh/model_studio/setting/table/FES_CONST_TEMP.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DATA_BLOCK.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DATA_BLOCK_TEMP.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DEV_ACCUNL_TEMP_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DEV_ANALOG_CTRL_TEMP_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DEV_ANALOG_TEMP_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DEV_DIGITAL_CTRL_TEMP_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DEV_DIGITAL_TEMP_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DEV_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DEV_INFO_FOR_ADD.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DEV_INFO_FOR_EMPTY_TEMP.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DEV_MIX_CTRL_TEMP_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DEV_MIX_TEMP_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DEV_PT_TEMP_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DEV_TEMP_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_ADD.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_IMPORT.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DEV_TYPE_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DIGITAL.xml create mode 100644 resource/zh/model_studio/setting/table/FES_DIGITAL_CTRL.xml create mode 100644 resource/zh/model_studio/setting/table/FES_MIX.xml create mode 100644 resource/zh/model_studio/setting/table/FES_MIX_CTRL.xml create mode 100644 resource/zh/model_studio/setting/table/FES_PROTOCOL.xml create mode 100644 resource/zh/model_studio/setting/table/FES_RTU_PARA.xml create mode 100644 resource/zh/model_studio/setting/table/FORWARD_ACCUML.xml create mode 100644 resource/zh/model_studio/setting/table/FORWARD_ANALOG.xml create mode 100644 resource/zh/model_studio/setting/table/FORWARD_ANALOG_CTRL.xml create mode 100644 resource/zh/model_studio/setting/table/FORWARD_DIGITAL_CTRL.xml create mode 100644 resource/zh/model_studio/setting/table/FORWARD_DIGITAL_DOUBLE.xml create mode 100644 resource/zh/model_studio/setting/table/FORWARD_DIGITAL_SINGLE.xml create mode 100644 resource/zh/model_studio/setting/table/FORWARD_MIX.xml create mode 100644 resource/zh/model_studio/setting/table/FORWARD_MIX_CTRL.xml create mode 100644 resource/zh/model_studio/setting/table/HIS_WORK_TICKET.xml create mode 100644 resource/zh/model_studio/setting/table/HMI_TYPE_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/IA_DISPOSAL_PLAN.xml create mode 100644 resource/zh/model_studio/setting/table/INVALID_SYS_TABLE_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/LINKAGE_ACTION.xml create mode 100644 resource/zh/model_studio/setting/table/LINKAGE_ACTION_FOR_BAS.xml create mode 100644 resource/zh/model_studio/setting/table/LINKAGE_ACTION_FOR_MSG.xml create mode 100644 resource/zh/model_studio/setting/table/LINKAGE_ACTION_FOR_PA.xml create mode 100644 resource/zh/model_studio/setting/table/LINKAGE_ACTION_FOR_PIS.xml create mode 100644 resource/zh/model_studio/setting/table/LINKAGE_ACTION_FOR_PSCADA.xml create mode 100644 resource/zh/model_studio/setting/table/LINKAGE_ACTION_FOR_PUSH_PIC.xml create mode 100644 resource/zh/model_studio/setting/table/LINKAGE_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/LINKAGE_FUNCTION.xml create mode 100644 resource/zh/model_studio/setting/table/LINKAGE_FUNCTION_LIST.xml create mode 100644 resource/zh/model_studio/setting/table/LINKAGE_SETTING.xml create mode 100644 resource/zh/model_studio/setting/table/LINKAGE_SETTING_FOR_ADD_AND_MODIFY.xml create mode 100644 resource/zh/model_studio/setting/table/LOAD_STAT_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/MIX.xml create mode 100644 resource/zh/model_studio/setting/table/MIX_CONTROL.xml create mode 100644 resource/zh/model_studio/setting/table/MIX_MAP_TO_FES.xml create mode 100644 resource/zh/model_studio/setting/table/MIX_METHOD.xml create mode 100644 resource/zh/model_studio/setting/table/MIX_TEMP_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/OPT_CTRL_ACT_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/OPT_HANDOVER_GRP.xml create mode 100644 resource/zh/model_studio/setting/table/OPT_INTERLOCK_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/OPT_INTERLOCK_PARA.xml create mode 100644 resource/zh/model_studio/setting/table/OPT_INTERLOCK_PARA_FOR_SELECT.xml create mode 100644 resource/zh/model_studio/setting/table/OPT_SHIELD_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/OPT_TOKEN_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/PA_AREA_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/PA_AUDIO_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/PA_BROADCAST_GROUP.xml create mode 100644 resource/zh/model_studio/setting/table/PA_CTRL_PARAM.xml create mode 100644 resource/zh/model_studio/setting/table/PA_LOCATION_AREA_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/PA_LOCATION_SEQ_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/PA_OPERATOR_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/PA_OPERATOR_MAP.xml create mode 100644 resource/zh/model_studio/setting/table/PA_TIMED_AUDIO.xml create mode 100644 resource/zh/model_studio/setting/table/PIS_AREA_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/PIS_CTRL_PARAM.xml create mode 100644 resource/zh/model_studio/setting/table/PIS_DISPLAY_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/PIS_FES_LOCATION_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/PIS_LOCATION_AREA_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/PIS_MESSAGE_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/PSC3000_FES_TEMP.xml create mode 100644 resource/zh/model_studio/setting/table/REGION_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/REPORT_TYPE_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/RM_DEPT_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/RM_NORM_FUNC_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/RM_ROLE_DB_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/RM_ROLE_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/RM_ROLE_HMI_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/RM_ROLE_SPEF_REG.xml create mode 100644 resource/zh/model_studio/setting/table/RM_SECURITY_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/RM_SPCL_FUNC_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/RM_USERG_DB_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/RM_USERG_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/RM_USERG_HMI_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/RM_USERG_RSP_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/RM_USER_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/RT_COLUMN_MODE.xml create mode 100644 resource/zh/model_studio/setting/table/RT_TABLE_MODE.xml create mode 100644 resource/zh/model_studio/setting/table/SAFETY_DAY.xml create mode 100644 resource/zh/model_studio/setting/table/SAMPLE_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/SEQUENCE_ACTION.xml create mode 100644 resource/zh/model_studio/setting/table/SEQUENCE_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/SEQUENCE_FUNCTION.xml create mode 100644 resource/zh/model_studio/setting/table/SEQUENCE_SETTING.xml create mode 100644 resource/zh/model_studio/setting/table/STAT_INST_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/STAT_INST_PARA_GRP.xml create mode 100644 resource/zh/model_studio/setting/table/STAT_INST_PARA_POINT.xml create mode 100644 resource/zh/model_studio/setting/table/STAT_INST_PARA_POINT_FOR_ADD.xml create mode 100644 resource/zh/model_studio/setting/table/STAT_INST_PARA_TIME.xml create mode 100644 resource/zh/model_studio/setting/table/STAT_INST_PARA_TIME_FOR_ADD.xml create mode 100644 resource/zh/model_studio/setting/table/STAT_INST_RET_GRP.xml create mode 100644 resource/zh/model_studio/setting/table/STAT_INST_RET_PARA.xml create mode 100644 resource/zh/model_studio/setting/table/STAT_INST_RET_PARA_FOR_ADD.xml create mode 100644 resource/zh/model_studio/setting/table/STAT_LINK_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/STAT_LINK_PARA.xml create mode 100644 resource/zh/model_studio/setting/table/STAT_LINK_RET.xml create mode 100644 resource/zh/model_studio/setting/table/STAT_TEMPLATE_DEF.xml create mode 100644 resource/zh/model_studio/setting/table/STAT_TEMPLATE_PARA.xml create mode 100644 resource/zh/model_studio/setting/table/STAT_TEMPLATE_RET.xml create mode 100644 resource/zh/model_studio/setting/table/SWITCH_CFG_INFO.xml create mode 100644 resource/zh/model_studio/setting/table/SYS_MODEL_MSG_RELAY.xml create mode 100644 resource/zh/model_studio/setting/table/TBL_FES_DEV_INFO_FOR_FES_ADD.xml create mode 100644 resource/zh/model_studio/setting/table/TEMP_PLUGIN.xml create mode 100644 resource/zh/model_studio/setting/table/TEMP_PLUGIN_DEV_MAP.xml create mode 100644 resource/zh/model_studio/setting/table/TEMP_PLUGIN_FES_DEV_MAP.xml create mode 100644 resource/zh/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ACC.xml create mode 100644 resource/zh/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ANA.xml create mode 100644 resource/zh/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_DIG.xml create mode 100644 resource/zh/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_MIX.xml create mode 100644 resource/zh/model_studio/setting/table/TRIGGER_CONDITION_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/TRIGGER_FUNCTION_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/TRIGGER_PERIOD_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/TRIGGER_TIMER_DEFINE.xml create mode 100644 resource/zh/model_studio/setting/table/sample.xml create mode 100644 resource/zh/model_studio/setting/table/sys_model_app_info.xml create mode 100644 resource/zh/model_studio/setting/table/sys_model_dbconfig_domain.xml create mode 100644 resource/zh/model_studio/setting/table/sys_model_dbconfig_node.xml create mode 100644 resource/zh/model_studio/setting/table/sys_model_deploy_info.xml create mode 100644 resource/zh/model_studio/setting/table/sys_model_domain_info.xml create mode 100644 resource/zh/model_studio/setting/table/sys_model_location_info.xml create mode 100644 resource/zh/model_studio/setting/table/sys_model_node_info.xml create mode 100644 resource/zh/model_studio/setting/table/sys_model_process_info.xml create mode 100644 resource/zh/model_studio/setting/table/sys_model_sub_system_info.xml create mode 100644 resource/zh/model_studio/setting/templateFile/PCS3000Template.csv create mode 100644 resource/zh/model_studio/setting/templateFile/devInstance.xlsx create mode 100644 resource/zh/model_studio/setting/templateFile/instPluginTemplate.xlsx create mode 100644 resource/zh/model_studio/setting/templateFile/thirdPartyDevTemplate.xlsx create mode 100644 resource/zh/model_studio/setting/tree/TriggerFuncTree.xml create mode 100644 resource/zh/model_studio/setting/tree/TriggerParaTree.xml create mode 100644 resource/zh/model_studio/setting/tree/alarmTree.xml create mode 100644 resource/zh/model_studio/setting/tree/app.json create mode 100644 resource/zh/model_studio/setting/tree/app.xml create mode 100644 resource/zh/model_studio/setting/tree/autoRelation.json create mode 100644 resource/zh/model_studio/setting/tree/calcFunc.xml create mode 100644 resource/zh/model_studio/setting/tree/chan.xml create mode 100644 resource/zh/model_studio/setting/tree/commonTree.xml create mode 100644 resource/zh/model_studio/setting/tree/ctrlActDefine.xml create mode 100644 resource/zh/model_studio/setting/tree/deploy.json create mode 100644 resource/zh/model_studio/setting/tree/deploy.xml create mode 100644 resource/zh/model_studio/setting/tree/devInstListTree.xml create mode 100644 resource/zh/model_studio/setting/tree/devInstTree.xml create mode 100644 resource/zh/model_studio/setting/tree/devInstTreeAll.xml create mode 100644 resource/zh/model_studio/setting/tree/devInstTreeDev.xml create mode 100644 resource/zh/model_studio/setting/tree/devInstTreeDevAndGrp.xml create mode 100644 resource/zh/model_studio/setting/tree/devInstTreeDevAndLocation.xml create mode 100644 resource/zh/model_studio/setting/tree/devInstTreeGrp.xml create mode 100644 resource/zh/model_studio/setting/tree/devInstTreeGrpAndLocation.xml create mode 100644 resource/zh/model_studio/setting/tree/devInstTreeLocation.xml create mode 100644 resource/zh/model_studio/setting/tree/devModelTree.xml create mode 100644 resource/zh/model_studio/setting/tree/devTempTree.xml create mode 100644 resource/zh/model_studio/setting/tree/expressionTree.xml create mode 100644 resource/zh/model_studio/setting/tree/fesDevInstListTree.xml create mode 100644 resource/zh/model_studio/setting/tree/fesDevTreeAll.xml create mode 100644 resource/zh/model_studio/setting/tree/fesDevTreeDev.xml create mode 100644 resource/zh/model_studio/setting/tree/fesDevTreeDevLocation.xml create mode 100644 resource/zh/model_studio/setting/tree/fesDevTreeDevRTU.xml create mode 100644 resource/zh/model_studio/setting/tree/fesDevTreeLocation.xml create mode 100644 resource/zh/model_studio/setting/tree/fesDevTreeLocationRTU.xml create mode 100644 resource/zh/model_studio/setting/tree/fesDevTreeRTU.xml create mode 100644 resource/zh/model_studio/setting/tree/fesTree.xml create mode 100644 resource/zh/model_studio/setting/tree/location.json create mode 100644 resource/zh/model_studio/setting/tree/location.xml create mode 100644 resource/zh/model_studio/setting/tree/lockDefineTree.xml create mode 100644 resource/zh/model_studio/setting/tree/mainWindow.xml create mode 100644 resource/zh/model_studio/setting/tree/optLockPara.xml create mode 100644 resource/zh/model_studio/setting/tree/pcs3000ImportData.json create mode 100644 resource/zh/model_studio/setting/tree/pcs3000ToFes.json create mode 100644 resource/zh/model_studio/setting/tree/projec.xml create mode 100644 resource/zh/model_studio/setting/tree/rt.json create mode 100644 resource/zh/model_studio/setting/tree/rtTree.xml create mode 100644 resource/zh/model_studio/setting/tree/rtuList.xml create mode 100644 resource/zh/model_studio/setting/tree/sampleTree.xml create mode 100644 resource/zh/model_studio/setting/tree/statInstInput.xml create mode 100644 resource/zh/model_studio/setting/tree/statInstOutput.xml create mode 100644 resource/zh/model_studio/setting/tree/stateTextTree.xml create mode 100644 resource/zh/model_studio/setting/tree/staticsTree.xml create mode 100644 resource/zh/model_studio/setting/tree/sysConfigTree.xml create mode 100644 resource/zh/model_studio/setting/tree/textDefine.outline create mode 100644 resource/zh/model_studio/setting/tree/textDefine.xml create mode 100644 resource/zh/model_studio/setting/tree/userTree.xml create mode 100644 resource/zh/model_studio/translate/qt_zh_CN.qm create mode 100644 resource/zh/model_studio/translate/tableName.json create mode 100644 resource/zh/operate_server/translate/operate_server_zh.mo create mode 100644 resource/zh/operate_server/translate/operate_server_zh.po create mode 100644 resource/zh/public/dark/icon/Error.png create mode 100644 resource/zh/public/dark/icon/Information.png create mode 100644 resource/zh/public/dark/icon/Question.png create mode 100644 resource/zh/public/dark/icon/Warning.png create mode 100644 resource/zh/public/dark/icon/arrowBottom.png create mode 100644 resource/zh/public/dark/icon/arrowLeft.png create mode 100644 resource/zh/public/dark/icon/arrowRight.png create mode 100644 resource/zh/public/dark/icon/arrowTop.png create mode 100644 resource/zh/public/dark/icon/box-down-disable.png create mode 100644 resource/zh/public/dark/icon/box-down-normal.png create mode 100644 resource/zh/public/dark/icon/box-down-select.png create mode 100644 resource/zh/public/dark/icon/box-up-disable.png create mode 100644 resource/zh/public/dark/icon/box-up-normal.png create mode 100644 resource/zh/public/dark/icon/box-up-select.png create mode 100644 resource/zh/public/dark/icon/btn_close.png create mode 100644 resource/zh/public/dark/icon/btn_max.png create mode 100644 resource/zh/public/dark/icon/btn_min.png create mode 100644 resource/zh/public/dark/icon/btn_normal.png create mode 100644 resource/zh/public/dark/icon/calendar.png create mode 100644 resource/zh/public/dark/icon/checked.png create mode 100644 resource/zh/public/dark/icon/ckb-disable.png create mode 100644 resource/zh/public/dark/icon/ckb-normal.png create mode 100644 resource/zh/public/dark/icon/ckb-ptck-disable.png create mode 100644 resource/zh/public/dark/icon/ckb-ptck-hover.png create mode 100644 resource/zh/public/dark/icon/ckb-ptck.png create mode 100644 resource/zh/public/dark/icon/ckb-select-disable.png create mode 100644 resource/zh/public/dark/icon/ckb-select-disablel.png create mode 100644 resource/zh/public/dark/icon/ckb-select-hover.png create mode 100644 resource/zh/public/dark/icon/ckb-select-normal.png create mode 100644 resource/zh/public/dark/icon/ckb-uncheck-hover.png create mode 100644 resource/zh/public/dark/icon/cut.png create mode 100644 resource/zh/public/dark/icon/min_logo.png create mode 100644 resource/zh/public/dark/icon/pause.png create mode 100644 resource/zh/public/dark/icon/play.png create mode 100644 resource/zh/public/dark/icon/radius.png create mode 100644 resource/zh/public/dark/icon/rkb-disable.png create mode 100644 resource/zh/public/dark/icon/rkb-hover.png create mode 100644 resource/zh/public/dark/icon/rkb-normal.png create mode 100644 resource/zh/public/dark/icon/rkb-select-disable.png create mode 100644 resource/zh/public/dark/icon/rkb-select-normal.png create mode 100644 resource/zh/public/dark/icon/search.png create mode 100644 resource/zh/public/dark/icon/unchecked.png create mode 100644 resource/zh/public/dark/icon/voiceClose.png create mode 100644 resource/zh/public/dark/icon/voiceOpen.png create mode 100644 resource/zh/public/light/icon/Error.png create mode 100644 resource/zh/public/light/icon/Information.png create mode 100644 resource/zh/public/light/icon/Question.png create mode 100644 resource/zh/public/light/icon/Slice 738.png create mode 100644 resource/zh/public/light/icon/Warning.png create mode 100644 resource/zh/public/light/icon/arrowBottom-normal.png create mode 100644 resource/zh/public/light/icon/arrowBottom.png create mode 100644 resource/zh/public/light/icon/arrowLeft-normal.png create mode 100644 resource/zh/public/light/icon/arrowLeft.png create mode 100644 resource/zh/public/light/icon/arrowRight-normal.png create mode 100644 resource/zh/public/light/icon/arrowRight.png create mode 100644 resource/zh/public/light/icon/arrowTop-normal.png create mode 100644 resource/zh/public/light/icon/arrowTop.png create mode 100644 resource/zh/public/light/icon/background_img.png create mode 100644 resource/zh/public/light/icon/box-down-normal.png create mode 100644 resource/zh/public/light/icon/box-down-select.png create mode 100644 resource/zh/public/light/icon/box-up-normal.png create mode 100644 resource/zh/public/light/icon/box-up-select.png create mode 100644 resource/zh/public/light/icon/btn_close.png create mode 100644 resource/zh/public/light/icon/btn_dbManager.png create mode 100644 resource/zh/public/light/icon/btn_down.png create mode 100644 resource/zh/public/light/icon/btn_left.png create mode 100644 resource/zh/public/light/icon/btn_logManager.png create mode 100644 resource/zh/public/light/icon/btn_max.png create mode 100644 resource/zh/public/light/icon/btn_min.png create mode 100644 resource/zh/public/light/icon/btn_normal.png create mode 100644 resource/zh/public/light/icon/btn_project.png create mode 100644 resource/zh/public/light/icon/btn_right.png create mode 100644 resource/zh/public/light/icon/btn_up.png create mode 100644 resource/zh/public/light/icon/calendar.png create mode 100644 resource/zh/public/light/icon/checked.png create mode 100644 resource/zh/public/light/icon/ckb-disable.png create mode 100644 resource/zh/public/light/icon/ckb-normal.png create mode 100644 resource/zh/public/light/icon/ckb-ptck-disable.png create mode 100644 resource/zh/public/light/icon/ckb-ptck-hover.png create mode 100644 resource/zh/public/light/icon/ckb-ptck.png create mode 100644 resource/zh/public/light/icon/ckb-select-disable.png create mode 100644 resource/zh/public/light/icon/ckb-select-hover.png create mode 100644 resource/zh/public/light/icon/ckb-select-normal.png create mode 100644 resource/zh/public/light/icon/ckb-uncheck-hover.png create mode 100644 resource/zh/public/light/icon/cut.png create mode 100644 resource/zh/public/light/icon/icon_add.png create mode 100644 resource/zh/public/light/icon/icon_copy.png create mode 100644 resource/zh/public/light/icon/icon_delete.png create mode 100644 resource/zh/public/light/icon/icon_edit.png create mode 100644 resource/zh/public/light/icon/icon_excel_export.png create mode 100644 resource/zh/public/light/icon/icon_excel_import.png create mode 100644 resource/zh/public/light/icon/icon_export.png create mode 100644 resource/zh/public/light/icon/icon_revoke.png create mode 100644 resource/zh/public/light/icon/icon_save.png create mode 100644 resource/zh/public/light/icon/icon_undo.png create mode 100644 resource/zh/public/light/icon/icon_wizard.png create mode 100644 resource/zh/public/light/icon/main_common.png create mode 100644 resource/zh/public/light/icon/main_event_list.png create mode 100644 resource/zh/public/light/icon/main_fes.png create mode 100644 resource/zh/public/light/icon/main_real_data.png create mode 100644 resource/zh/public/light/icon/main_real_db.png create mode 100644 resource/zh/public/light/icon/min_logo.png create mode 100644 resource/zh/public/light/icon/pause.png create mode 100644 resource/zh/public/light/icon/play.png create mode 100644 resource/zh/public/light/icon/radius.png create mode 100644 resource/zh/public/light/icon/rkb-disable.png create mode 100644 resource/zh/public/light/icon/rkb-hover.png create mode 100644 resource/zh/public/light/icon/rkb-normal.png create mode 100644 resource/zh/public/light/icon/rkb-select-disable.png create mode 100644 resource/zh/public/light/icon/rkb-select-normal.png create mode 100644 resource/zh/public/light/icon/search.png create mode 100644 resource/zh/public/light/icon/unchecked.png create mode 100644 resource/zh/public/light/icon/voiceClose.png create mode 100644 resource/zh/public/light/icon/voiceOpen.png create mode 100644 resource/zh/report/translate/report.qm create mode 100644 resource/zh/report/translate/report.ts create mode 100644 resource/zh/sequence_server/translate/sequence_server_zh.mo create mode 100644 resource/zh/sequence_server/translate/sequence_server_zh.po create mode 100644 resource/zh/setup/icons/db_manager.ico create mode 100644 resource/zh/setup/icons/debug_tool.ico create mode 100644 resource/zh/setup/icons/fbd_editor.ico create mode 100644 resource/zh/setup/icons/fes_sim.ico create mode 100644 resource/zh/setup/icons/hmi.ico create mode 100644 resource/zh/setup/icons/studio.ico create mode 100644 resource/zh/setup/icons/sys_startup.ico create mode 100644 resource/zh/setup/icons/systemConfig.ico create mode 100644 resource/zh/setup/readme.txt create mode 100644 resource/zh/setup/setup.ico create mode 100644 resource/zh/setup/安装图标ico.zip create mode 100644 resource/zh/style/dark/AlarmStatWidget.qss create mode 100644 resource/zh/style/dark/AlarmStatisWidget.qss create mode 100644 resource/zh/style/dark/BatchOperation.qss create mode 100644 resource/zh/style/dark/BriefReport.qss create mode 100644 resource/zh/style/dark/DeviceNavWidget.qss create mode 100644 resource/zh/style/dark/SecondButtonGroupWidget.qss create mode 100644 resource/zh/style/dark/StationNavWidget.qss create mode 100644 resource/zh/style/dark/SysParamWidget.qss create mode 100644 resource/zh/style/dark/WebBrowserWidget.qss create mode 100644 resource/zh/style/dark/alarm.qss create mode 100644 resource/zh/style/dark/alarmForm.qss create mode 100644 resource/zh/style/dark/alarmShield.qss create mode 100644 resource/zh/style/dark/alarm_statistics.qss create mode 100644 resource/zh/style/dark/alarmmng.qss create mode 100644 resource/zh/style/dark/asset.qss create mode 100644 resource/zh/style/dark/breadcrumbNav.qss create mode 100644 resource/zh/style/dark/cButtonGroupWidget.qss create mode 100644 resource/zh/style/dark/constCurves.qss create mode 100644 resource/zh/style/dark/curveColor.cfg create mode 100644 resource/zh/style/dark/customDialog2.qss create mode 100644 resource/zh/style/dark/debug_tool.qss create mode 100644 resource/zh/style/dark/deviceRealData.qss create mode 100644 resource/zh/style/dark/duty_setting.qss create mode 100644 resource/zh/style/dark/event.qss create mode 100644 resource/zh/style/dark/explorerWnd.qss create mode 100644 resource/zh/style/dark/faultRecord.qss create mode 100644 resource/zh/style/dark/fbd_designer.qss create mode 100644 resource/zh/style/dark/hmiRoll.qss create mode 100644 resource/zh/style/dark/ipcPlus.qss create mode 100644 resource/zh/style/dark/ipcViewer.qss create mode 100644 resource/zh/style/dark/linkCtrl.qss create mode 100644 resource/zh/style/dark/media.qss create mode 100644 resource/zh/style/dark/modelStudio.qss create mode 100644 resource/zh/style/dark/orderManage.qss create mode 100644 resource/zh/style/dark/planCurvesConfigure.qss create mode 100644 resource/zh/style/dark/public.qss create mode 100644 resource/zh/style/dark/relaySetting.qss create mode 100644 resource/zh/style/dark/robot.qss create mode 100644 resource/zh/style/dark/secondNavigation.qss create mode 100644 resource/zh/style/dark/sequence.qss create mode 100644 resource/zh/style/dark/shift.qss create mode 100644 resource/zh/style/dark/sys_startup.qss create mode 100644 resource/zh/style/dark/trendCurves.qss create mode 100644 resource/zh/style/dark/usermng.qss create mode 100644 resource/zh/style/dark/workBench.qss create mode 100644 resource/zh/style/dark/workTicket.qss create mode 100644 resource/zh/style/light/AlarmStatisWidget.qss create mode 100644 resource/zh/style/light/AutoCreate.qss create mode 100644 resource/zh/style/light/BatchOperation.qss create mode 100644 resource/zh/style/light/BriefReport.qss create mode 100644 resource/zh/style/light/WebBrowserWidget.qss create mode 100644 resource/zh/style/light/alarm.qss create mode 100644 resource/zh/style/light/alarmShield.qss create mode 100644 resource/zh/style/light/alarm_statistics.qss create mode 100644 resource/zh/style/light/alarmmng.qss create mode 100644 resource/zh/style/light/asset.qss create mode 100644 resource/zh/style/light/breadcrumbNav.qss create mode 100644 resource/zh/style/light/constCurves.qss create mode 100644 resource/zh/style/light/curveColor.cfg create mode 100644 resource/zh/style/light/customDialog2.qss create mode 100644 resource/zh/style/light/db_manager.qss create mode 100644 resource/zh/style/light/debug_tool.qss create mode 100644 resource/zh/style/light/deviceRealData.qss create mode 100644 resource/zh/style/light/duty_setting.qss create mode 100644 resource/zh/style/light/event.qss create mode 100644 resource/zh/style/light/faultRecord.qss create mode 100644 resource/zh/style/light/fbd_designer.qss create mode 100644 resource/zh/style/light/his_event_del.qss create mode 100644 resource/zh/style/light/hmiRoll.qss create mode 100644 resource/zh/style/light/hmi_designer.qss create mode 100644 resource/zh/style/light/ipcPlus.qss create mode 100644 resource/zh/style/light/ipcViewer.qss create mode 100644 resource/zh/style/light/linkCtrl.qss create mode 100644 resource/zh/style/light/media.qss create mode 100644 resource/zh/style/light/modelStudio.qss create mode 100644 resource/zh/style/light/mqtt_tool.qss create mode 100644 resource/zh/style/light/planCurvesConfigure.qss create mode 100644 resource/zh/style/light/public.qss create mode 100644 resource/zh/style/light/relaySetting.qss create mode 100644 resource/zh/style/light/robot.qss create mode 100644 resource/zh/style/light/sequence.qss create mode 100644 resource/zh/style/light/shift.qss create mode 100644 resource/zh/style/light/style_tool.qss create mode 100644 resource/zh/style/light/sys_startup.qss create mode 100644 resource/zh/style/light/trendCurves.qss create mode 100644 resource/zh/style/light/usermng.qss create mode 100644 resource/zh/style/light/workBench.qss create mode 100644 resource/zh/style/public.qsst create mode 100644 resource/zh/style/样式模板.qsst create mode 100644 resource/zh/sys_ctrl/translate/sys_ctrl_zh.po create mode 100644 resource/zh/sys_startup/CommandWindow.png create mode 100644 resource/zh/sys_startup/DatabaseCheck.png create mode 100644 resource/zh/sys_startup/DevModeling.png create mode 100644 resource/zh/sys_startup/DogCheck.png create mode 100644 resource/zh/sys_startup/EngineeringDebug.png create mode 100644 resource/zh/sys_startup/EngineeringManagement.png create mode 100644 resource/zh/sys_startup/FileSync.png create mode 100644 resource/zh/sys_startup/HmiStart.png create mode 100644 resource/zh/sys_startup/KBD_30.png create mode 100644 resource/zh/sys_startup/LogicProgramming.png create mode 100644 resource/zh/sys_startup/MonitInterface.png create mode 100644 resource/zh/sys_startup/NetMonite.png create mode 100644 resource/zh/sys_startup/PictureConfiguration.png create mode 100644 resource/zh/sys_startup/PreEmulation.png create mode 100644 resource/zh/sys_startup/ReportEdit.png create mode 100644 resource/zh/sys_startup/SysStart.png create mode 100644 resource/zh/sys_startup/SystemModeling.png create mode 100644 resource/zh/sys_startup/db_studio.png create mode 100644 resource/zh/sys_startup/icon.png create mode 100644 resource/zh/sys_startup/preset_config.png create mode 100644 resource/zh/sys_startup/push_debug.png create mode 100644 resource/zh/sys_startup/reset.png create mode 100644 resource/zh/sys_startup/restart.png create mode 100644 resource/zh/sys_startup/start.png create mode 100644 resource/zh/sys_startup/stop.png create mode 100644 resource/zh/sys_startup/sys_startup.ico create mode 100644 resource/zh/sys_startup/upgrade.png create mode 100644 resource/zh/web_server/strategyFileOnly/colorConfig.json create mode 100644 resource/zh/workBench/LocalState_background.png create mode 100644 resource/zh/workBench/background_img.png create mode 100644 resource/zh/workBench/background_img_in.png create mode 100644 resource/zh/workBench/background_img_in_in.png create mode 100644 resource/zh/workBench/buttonForm/DatabaseCheck.png create mode 100644 resource/zh/workBench/buttonForm/DevModeling.png create mode 100644 resource/zh/workBench/buttonForm/DogCheck.png create mode 100644 resource/zh/workBench/buttonForm/EngineeringDebug.png create mode 100644 resource/zh/workBench/buttonForm/EngineeringManagement.png create mode 100644 resource/zh/workBench/buttonForm/FileSync.png create mode 100644 resource/zh/workBench/buttonForm/LogicProgramming.png create mode 100644 resource/zh/workBench/buttonForm/MonitInterface.png create mode 100644 resource/zh/workBench/buttonForm/NetMonite.png create mode 100644 resource/zh/workBench/buttonForm/PictureConfiguration.png create mode 100644 resource/zh/workBench/buttonForm/PlatformTerminal.png create mode 100644 resource/zh/workBench/buttonForm/ProductTerminal.png create mode 100644 resource/zh/workBench/buttonForm/ReportEdit.png create mode 100644 resource/zh/workBench/buttonForm/SysStart.png create mode 100644 resource/zh/workBench/buttonForm/SystemModeling.png create mode 100644 resource/zh/workBench/buttonForm/add.png create mode 100644 resource/zh/workBench/buttonForm/preset_config.png create mode 100644 resource/zh/workBench/buttonForm/push_debug.png create mode 100644 resource/zh/workBench/buttonForm/systemUpgrade.png create mode 100644 resource/zh/workBench/button_background.png create mode 100644 resource/zh/workBench/checkbox.png create mode 100644 resource/zh/workBench/checkbox_checked.png create mode 100644 resource/zh/workBench/close_btn.png create mode 100644 resource/zh/workBench/company.png create mode 100644 resource/zh/workBench/dialog_background.png create mode 100644 resource/zh/workBench/downArrow.png create mode 100644 resource/zh/workBench/leftArrow.png create mode 100644 resource/zh/workBench/leftShift.png create mode 100644 resource/zh/workBench/localState/basicApp_back.png create mode 100644 resource/zh/workBench/localState/basicApp_master.png create mode 100644 resource/zh/workBench/localState/basicApp_stop.png create mode 100644 resource/zh/workBench/localState/basicApp_unknow.png create mode 100644 resource/zh/workBench/localState/energyMng_back.png create mode 100644 resource/zh/workBench/localState/energyMng_master.png create mode 100644 resource/zh/workBench/localState/energyMng_stop.png create mode 100644 resource/zh/workBench/localState/energyMng_unknow.png create mode 100644 resource/zh/workBench/localState/generalApp_back.png create mode 100644 resource/zh/workBench/localState/generalApp_master.png create mode 100644 resource/zh/workBench/localState/generalApp_stop.png create mode 100644 resource/zh/workBench/localState/generalApp_unknow.png create mode 100644 resource/zh/workBench/localState/publicApp_back.png create mode 100644 resource/zh/workBench/localState/publicApp_master.png create mode 100644 resource/zh/workBench/localState/publicApp_stop.png create mode 100644 resource/zh/workBench/localState/publicApp_unknow.png create mode 100644 resource/zh/workBench/menu_button/sys_mng.png create mode 100644 resource/zh/workBench/menu_button/sys_mng_pressed.png create mode 100644 resource/zh/workBench/menu_button/sys_process.png create mode 100644 resource/zh/workBench/menu_button/sys_process_pressed.png create mode 100644 resource/zh/workBench/menu_button/sys_set_pressed.png create mode 100644 resource/zh/workBench/menu_button/sys_setting.png create mode 100644 resource/zh/workBench/menu_button/sys_state.png create mode 100644 resource/zh/workBench/menu_button/sys_state_pressed.png create mode 100644 resource/zh/workBench/menu_button/sys_tool_pressed.png create mode 100644 resource/zh/workBench/menu_button/sys_tools.png create mode 100644 resource/zh/workBench/rightArrow.png create mode 100644 resource/zh/workBench/rightShift.png create mode 100644 resource/zh/workBench/run_state.png create mode 100644 resource/zh/workBench/run_state_hover.png create mode 100644 resource/zh/workBench/stop_state.png create mode 100644 resource/zh/workBench/stop_state_hover.png create mode 100644 resource/zh/workBench/upArrow.png create mode 100644 resource/zh/workBench/workBench.json diff --git a/resource/en/apc_if_srv/translate/apc_if_srv_en.mo b/resource/en/apc_if_srv/translate/apc_if_srv_en.mo new file mode 100644 index 0000000000000000000000000000000000000000..c351fc56cd2c1fb191b38acb6a58d81ea097cde2 GIT binary patch literal 2002 zcmb_dTW=dh6ds`5Eb-E39ww2jB*N?XlA_2_gcK)@BGSe{T5(Z{rn_T%>3Y}9&L;RR zfkts5rj$~kEteD$wNQv@DWwT6{0*KEi0sCB@&k_uiEq8RxCFvQjQ04OGvoQrWzU@b zVgJ5!1mi)-!w?Pf5act6KYoPx`cIG{NCWZ&WkBcud;WfOk`J_~*7enLP)00fi-$H@Z_ zY&U%eY!6TomBM;ZnW&5j=6rU#xxes=N5f`h}D3%8j3=XWTPa>X%Qt z<@2BlCL41Vcd>$q>ea8kkEd~VW45w>d)aq&PiFV_S@%>0IRTZQnO!{IJ4=CyMy)(D zh>V64;YRJ$Ui1qqUS%1c2IqDT&2Rf1tR+D--x_9%t$!3q{oAwd+^YB0YwItsw8O7< zZ=vSaPH((*zFw{Vc``D>dV#A_8PSxZT-ds0rf4WLraZ|fbzf5kndB*&h$VWI*a0Px zr15wv`RF6D-dHR&%515O3uf8|la|2AQD){GmgCAeXN49$MY%aKJP`4BS>@FHiH~XlHQntD5KQew$>D~FCZ!XJ)GGwC6bu*Wuy~lMK${3Dd zhH}sn1v^E}VpFyI6MZz8_IH}Jt)Irb`a(}D!`$Q|a5-afO_wwo?TPkaCs36EX7eJG z`4o*tyIUVzv2Io@8oJ6P(u27=p=T#-F}ZX2Da#QmPY3R&XyE@g_2axWWeLq5)oq!g z{(bKAeYkT*AAv0&_cD{31a3<-1&?S=DwP!c* zUxBa;Dw)V}Nt-v`ZzsB8@EkKDGS9KN*$U89sJeNez-=2Z+yAd=NgDJAY6%)Nh^_Uk zPo%XWivPz>vupTfg0}HTGZ}-yMMq3>+JVN=K^>DFH#n6RebM2fgo(yV9X2f?%~Uwp zVx~r?I6u+UB4BQ=YR>k1juZ`!l0Z#z^@JaPR?nf{{1Rv*e`^rV2-NsyW%nK-wI^3x4=T3m>Eo^renHsecFj(+0x; literal 0 HcmV?d00001 diff --git a/resource/en/apc_if_srv/translate/apc_if_srv_en.po b/resource/en/apc_if_srv/translate/apc_if_srv_en.po new file mode 100644 index 00000000..f03a1281 --- /dev/null +++ b/resource/en/apc_if_srv/translate/apc_if_srv_en.po @@ -0,0 +1,78 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2024-05-16 09:21+0800\n" +"PO-Revision-Date: 2024-05-23 11:36+0800\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.4.4\n" +"X-Poedit-Basepath: ../../../../../src/application/apc_if_srv\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: I18N;I18N_C\n" +"X-Poedit-SearchPath-0: .\n" + +#: CApcIfSrv.cpp:142 +#, c-format +msgid "" +"I18N output test:\n" +" This is src hardcode. \n" +" int = [%d] , str = [%s]\n" +msgstr "" +"I18N output test:\n" +" This is English(Great Britain). \n" +" int = [%d] , str = [%s]\n" + +#: CThreadAnalog.cpp:301 +msgid "控制目标值非法,控制消息中var_value不是DOUBLE或dValue未填充!" +msgstr "" +"Control target value is illegal,the var_value in control message is not " +"DOUBLE or dValue is not filled!" + +#: CThreadAnalog.cpp:373 CThreadDigital.cpp:341 CThreadLocalCurve.cpp:753 +msgid " 提交失败" +msgstr "Commit failed" + +#: CThreadDigital.cpp:271 +msgid "控制目标值非法,控制消息中var_value不是INT32或nValue未填充!" +msgstr "" +"Control target value is illegal,the var_value in control message is not " +"INT32 or nValue is not filled!" + +#: CThreadLocalCurve.cpp:231 +msgid "计划曲线\"%1%\"查询不到今天的年、周规则或规则重复,请检查配置!" +msgstr "" +"Plan curve '%1%' unable to query today's year rule and week rule,or rule " +"duplication,please check configuration!" + +#: CThreadLocalCurve.cpp:247 +msgid "" +"计划曲线\"%1%\"根据年规则ID = %2%,周规则ID = %3%,查询不到日规则,请检查配" +"置!" +msgstr "" +"Plan curve '%1%',according to the year rule = %2% and week rule = %3% unable " +"to find day rule,please check configuration!" + +#: CThreadLocalCurve.cpp:270 +msgid "计划曲线\"%1%\"查询不到当前值或值重复,请检查日规则(ID = %2%)配置!" +msgstr "" +"Plan curve '%1%' unable to query current value or value duplication,please " +"check the configuration of day rule(ID = %2%)!" + +#: CThreadLocalCurve.cpp:299 +msgid "计划曲线\"%1%\"输出测点\"%2%\"格式错误,请检查配置!" +msgstr "" +"Plan curve '%1%',format error of output measurement point'%2%',please check " +"configuration!" + +#: CThreadLocalCurve.cpp:312 +#, fuzzy +#| msgid "计划曲线\"%1%\"输出测点\"%2%\"格式错误,请检查配置!" +msgid "计划曲线\"%1%\"输出测点\"%2%\"不是AI量,请检查配置!" +msgstr "" +"Plan curve '%1%',format error of output measurement point'%2%',please check " +"configuration!" diff --git a/resource/en/app_bio_identify_srv/translate/app_bio_identify_srv_en.mo b/resource/en/app_bio_identify_srv/translate/app_bio_identify_srv_en.mo new file mode 100644 index 0000000000000000000000000000000000000000..1d4e77c8788087f4df2ede66ae9d11d37edb5e23 GIT binary patch literal 1192 zcma)4&ubGw6kfF|q@dtQ)WZZkDDC8Dm9QZPO&ck;8Z;GeVY)j_)^29P%%p8@t>6!8 zTOzcmP^@SxMWI2ETBX>t|AZIaWIagF-h7*tCdGpe`SQ)1d2hZq-_F+)T}v8_qkuDj z9H1L82k^!gAP)Elz<{5CF0Q*9pPkhQ&gwh&{o3yKoLm3U zcs1QvS@YK$PwP(YwX?k5{Is*XJ+rT-@v!F1uJ|>O;TL@0nsql;-TI7|-B^CpTv_|E z_{^=>z1ZJzH}5r`Y<`=*3$dpSS?}TVL{2 zvVz~ChQfm;zD0$!IMWd+m-C|*&s!#C${MTYrI-k0uj3nZ!tye3KT%Xiu}G{BM=s!4 z97Usg{9;ce5s3tbh*UTy2$MEZT<8c^SfN4+6z3=@b;LTNEHFGcJkVB-h9ZG9X9{$2 zu382WMWvs1J7h5ML&emWe9rC=?2J{-iL% zV3=(gM1eQne4lxLEwtR+J2zvKg2Yn=s=S-(2xDTJ*x;oScp%&QH+e-EH0?W}Bj19( zQ?AnLBp0R}vLu`_7)@MDdVl$J#{rZGqnL#&;0RnIpk;_5<2I+l?o5ofl=XiyvQYQXHy?MWh$tQZEBa;#$ag3lCOLk1PzD}vIFE+4j(R1k Oh!o(FA$YVDy7>(hc(Aho literal 0 HcmV?d00001 diff --git a/resource/en/app_bio_identify_srv/translate/app_bio_identify_srv_en.po b/resource/en/app_bio_identify_srv/translate/app_bio_identify_srv_en.po new file mode 100644 index 00000000..84944771 --- /dev/null +++ b/resource/en/app_bio_identify_srv/translate/app_bio_identify_srv_en.po @@ -0,0 +1,51 @@ +msgid "" +msgstr "" +"Project-Id-Version: app_bio_identify_srv\n" +"POT-Creation-Date: 2024-05-16 09:36+0800\n" +"PO-Revision-Date: 2024-05-23 11:36+0800\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.4.4\n" +"X-Poedit-Basepath: ../../../../../src/application/app_bio_identify/" +"app_bio_identify_srv\n" +"X-Poedit-Flags-xgettext: --add-comments\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: I18N;I18N_C\n" +"X-Poedit-SearchPath-0: .\n" + +#: CAcsDevice.cpp:116 +msgid "设备未连接,请检查设备是否在线!" +msgstr "The device is not connected, please check that the device is online!" + +#: CAcsDevice.cpp:130 +msgid "启用设备成功,请在设备上认证!" +msgstr "Enabling the device was successful, please certify on the device!" + +#: CAcsDevice.cpp:142 +msgid "启用设备失败,请检查设备是否在线!" +msgstr "Failed to enable the device, check that the device is online!" + +#: CAcsDevice.cpp:153 +msgid "设备被占用,请稍后再试!" +msgstr "The device is occupied, please try again later!" + +#: CAcsDevice.cpp:158 +msgid "未知错误!" +msgstr "Unknown error!" + +#: CAcsDevice.cpp:281 +msgid "认证超时。" +msgstr "Certification timed out." + +#: CBioIdentifySrv.cpp:86 +#, c-format +msgid "" +"I18N output test:\n" +" This is src hardcode. \n" +" int = [%d] , str = [%s]\n" +msgstr "" diff --git a/resource/en/app_fbd/translate/app_fbd_en.mo b/resource/en/app_fbd/translate/app_fbd_en.mo new file mode 100644 index 0000000000000000000000000000000000000000..82f6c8987e86508503a9bf962ac429da164445da GIT binary patch literal 1003 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 + + + + QObject + + + 数据库连接未打开 + Database connection not open + + + + + 获取表 + Get the table + + + + + 列信息失败 + Column information failed + + + + 无法查询表 + The table could not be queried + + + + 开始备份表: + Start backing up the table: + + + + 无法备份该表: + The table could not be backed up: + + + + 完成备份表: + Complete the backup table: + + + + iot_dbms::CHisMngApi + + + 开始转储 + Start dump + + + + iot_dbms::CHisMngApiImp + + 的列数量 + Number of columns + + + + 错误,未处理的数据类型: + Error, unprocessed data type: + + + + 该服务器备份服务未开启,请配置 + 该服务器备份服务未开启,请配置 + The server backup service is not turned on, please configure + + + + 备份历史数据失败,检查数据库是否正确配置 + 备份历史数据失败,检查iscs6000是否正确配置 + Failed to back up historical data, please check if rqeh6000 is configured correctly + + + + 备份历史数据失败,检查网络是否正常连接以及备份服务8088端口是否开启 + 备份历史数据失败,请检查网络是否正常连接以及备份服务8088端口是否开启 + Backup history data failed, please check if the network is properly connected and if port 8088 of the backup service is on + + + + + 数据库不能连接 + The database cannot be connected + + + + + 表 + Table + + + + + 删除分区 + Delete a partition + + + + + + 失败 + Failed + + + + 成功 + Success + + + + 路径不可写 + Path is not writeable + + + + 备份历史事件出错 + Backup history event error + + + + + + 无法连接influxDB + Unable to connect to influxDB + + + + 无法导出历史事件关系库 + The Historical Event Relationship Library cannot be exported + + + + 无法导出时序库内容 + Time Database was unable to be exported + + + + + 开始导出关系库历史事件 + Start exporting history events of relation database + + + + + 导出关系库历史事件错误 + cannot export history events of relation database + + + + + 关系库历史事件导出完成 + history events of relation history export completed + + + + 开始导出时序库历史事件 + Start exporting time-series library history events + + + + + 导出时序库历史事件错误 + Export history events of Time-series database failed + + + + 时序库历史事件导出完成 + Export history events of Time-series database completed + + + + 开始导出时序库采样数据 + start export sample points of time-series database + + + + 导出时序库采样数据错误 + Export sample points of time-series database failed + + + + 时序库采样数据导出完成 + Export sample points of time-series database done + + + + + 开始导入关系库历史事件 + Start import history events of relation database + + + + + 导入关系库历史事件错误 + Import history events of relation database failed + + + + + 关系库历史事件导入完成 + Import history events of relation database done + + + + 开始导入时序库历史事件 + Start import history events of time-series database + + + + 时序库历史事件导入完成 + Import history events of time-series done + + + + + 开始导入时序库采样数据 + Import sample points of time-series database + + + + 导入时序库采样数据错误 + Import sample poins of time-series database failed + + + + 时序库采样数据导入完成 + Import sample points of time-series database done + + + + + 删除 + delete + + + + + + 旧数据失败 + old data failed + + + + 的行数量 + Number of rows + + + + + 停止转储 + Stop dump + + + + 数据库测试连接失败 + Database test connection failed + + + + 时序库不存在 + Time-series database does not exist + + + + 查询数据库错误 + query db error + + + + 开始导出时序库历史 + Start exporting time-series database history + + + + + 导出时序库历史错误 + Error exporting time-series database history + + + + + 时序库历史导出完成 + Time-series database history export completed + + + + 导入时序库数据错误 + Error importing time-series database data + + + + 时序库数据导入完成 + Time-series database data import completed + + + + 通过分区删除 + Delete by partition + + + + 通过时间删除 + Delete by time + + + + 优化 + Optimize + + + + 表空间失败 + Tablespace failed + + + + 旧数据成功 + Old data successfully + + + + + 清空关系库历史事件失败 + Failed to clear history events of relational database + + + + + 清空时序库失败 + Failed to clear time-series database + + + + + 清空时序库成功 + Successfully cleared time-series database + + + + 开始清空(truncate)表 + Start truncating table + + + + + 清空表 + Truncate table + + + + + 完成 + Completed + + + + + 无法对目录 + Cannot operate on the directory + + + + + 进行读操作,请检查操作用户权限,备份失败 + Please check the operation user permissions to perform read operations, backup failed + + + + 无法初始化influx数据库连接条件,请检查软件依赖是否安装正确 + Unable to initialize the influx database connection condition, check that the software dependency is installed correctly + + + + 数据库连接失败 + Database connection failed + + + + 无法删除influxDB数据库: + The influxDB database could not be deleted: + + + + 无法销毁influx数据库连接资源 + Could not destroy the influx database connection resource + + + + 开始导入数据文件 + Start importing data files + + + + 打开导入文件失败 + Failed to open import file + + + + 导入历史事件失败 + Failed to import history events + + + + 导入已完成: + Importing done: + + + + 删除旧历史记录失败 + Failed to delete old history + + + + 删除旧历史记录成功 + Removing old history successfully + + + + 导入历史记录备份失败 + Import history backup failed + + + + 导入历史记录备份成功 + Import history backup successful + + + + + 导入采样数据备份失败 + Importing sampledata backup failed + + + + + 导入采样数据备份成功 + Import edited data backup successfully + + + + 开始导入历史事件 + Start importing history events + + + + 导入历史事件备份失败 + failed to import history events backup + + + + 导入历史事件备份成功 + Import history events backup successfully + + + + 开始导入采样数据备份 + Start importing sample data backups + + + + 开始清理表 + Start cleaning up the table + + + + + 清理表 + Clean up the table + + + + 导出历史失败 + Export history failed + + + + 删除历史失败 + Failed to delete history + + + diff --git a/resource/en/db_manager/en.qm b/resource/en/db_manager/en.qm new file mode 100644 index 0000000000000000000000000000000000000000..f38699cbead66377650d00cb04dad79a576f777d GIT binary patch literal 50161 zcmc(I33yf2wf{~+Zjzgudoc_~h7dp~LYM*~;=rha0)lAmqyB|J0!ARgBvi50hIxj_ zEJP-m93UVlkT6vHTKoEHTYYtSeYVw_bCc+6ai~u_sQ=&E>zuvMIrp5Ki_dlI z=d8WqMV;!tl9EP*G?Cv?>+asQ9^`I3n6+4amQ!44iI9>6+*On4%h31 zD5wx(U@2d3+{f43Mho$$vqF5g9M>;!{hbhhP7&gs2(IgdC<2^69~7c^q7WBv!}W|1 z9|H8ZhvS-o>pWcB3Gu^5T=RvvyBOEOxNZ^RqY*;Pe@}>yfzz%|B4ySPA^N-}TD<|d zsX@MGL`7iV9YQ>JQlxDy5~A-;5nSIzh+vKgzn3S(sPUrfo9_#;=xWis8$Qo`PxQXF zs}T2%6aA;-^XuLg1z#iy(RPU#+F`N~z5gI?Tlc&Wo&TM$`DJ3_p5sE)7Kl5W?!o6@ z@il*+xa)%-0nZ)OAu&h?6Br-8X&*pZ_|kM>%M}Wlquv!nFzJV+h?XEO>GAT-o7vC-t6~*=UYh+eYRJK!hcD6^fJ(~PoJd4 zw+sY5P9$yX2ia*eFlk5Ti}-sa=@3Xem{I9#yOhQ&<69I_EJ*x zwI_sl_E^$q-3|z`b!~Fe{8S}45ZgV5>A5q8G@o)3>JEh5OKMD&mc}jA-;3OeB<|SV-_qRe^Gc>vDm!R9@ zvy!`idQ6B(Lz1sL4>@gDp4`9llR|XumVE8g7_adChq{+}b1gkDY!ZL~>d3r@!wf#GJ#)pT9d={IGw z5ZmUY^m}y!?CzE#=cc zu7bY(Amz*BMJ(*q^s*mo-#~ zhu>>;`E@6R*fgkB?u)~PSny7(uD|{%^z5&#CjJcg?^xBUcFElW|M=Run6G`l;_JX& ze7&u*)qnkP7U=QoR=RMP^`#H52A{v3`qLAj=f?A? z?+zV_`OQmhEc_I9>d`<-&1&e=%YimajziCH479me2fdmZ$l3L!5dUHXa<}5|S3khl zF>eR*UcopSQvWR&tVs)2FC8~1-bwCz=ZCH zgm~ohK+P81ch&C#&y0ec6%_Gx_&t0be?#D3+wBx0EhX^UR~sy`27w6 zJ$Wh6@K`&1ep}!#M<0Q{{wna9P8;z! z;16G)Htv1+vb%z5B|F7SnbA^5g4{j%keFo;!`}!i?NDUkFk4TE>); z`{AeG&iHQfMcBPT8H*461#;RyW7Fl3ZGwxk?@-@GSd`wG~-yEbL){WtJq`8yfM zUcops$7THTgJkgiDZY-lov-5`;p<(^8E*{Q4*m?t_^*#J?#>Pwf2!#KyY{n;iyvMO z|8an?+rG;9EK6-<6L3voe1F!jHug0QQC!A{E^S=H^F&`GuIrW4{RIA73NH znyta>uDVZ%*LCSo@#<20aP~Pj-W#ZoWMD`bQ^( z*zi*D&A`)$E4l~Yte6J2zlA7s02hcA0(p zuYy1MJ6|_sW#<17{9S)#=1py%0R11%yt#HJY4e*TG)&Bm6`u}1o-TGHuLQ#pjXe8W&UaWI>ZH6Xa3L5G|1yWGC#j-DD2r6ng6)* zA;cTgGQYh2r?AuC54GBH6YTwOLV=Obz;0xPx*X{XKi)socM|me>QkY!0Zufcr%{_CN)eg?g|=HpPb5BS^vtYNYx99ogp^Q-9?e_B?r2LiCmFJ$#v zI39kdTUMVB0e9hqtU+5A32~q>YjFSJ;Qt@9t|`U1{qM{gdfjgk|18NGoe6&T%gws& z+<)Wq%d_su#eBk>vVQa>_;usJtlvBexn6l&)_b48Z_OE;)o^jJ5R0$PdjCV%pPl=& z{1!!L*byCQt! zV(?-2SK*^Kz`ksLG+f`lHw5yA@avJE15S4Mod@26o$3*O=V%h-;9tYBeR{`{klG47A~ zdhL9^j;-eFg5$XU4RKF5zV^G9uL~-}e}AkR@^B>lk1roU{!tSCV!(352R{mbF&*+V z>yz*og_!^S8zUmc03XsK$$1@M2lqyj-vM8$c1KdCKwricMFQ(VpGWS91b+M|;`wVM z>60NZbH0cKM{h)Y7>;BoO~?E{jkGQQ3*_x%zTVV@uM^Hk+Wr}O@IWNe_Tt}>Ck*22 zP2c6~gwOfGU5l`%|RflHJhv7a|1{f%l%1 zk*o8{U>Cm=89H$X@|0eD9nhJtdm1A*EV>u>8<88Ygnf8$OJvl$MeqxO$hcp@Ugdqv z*CR&c?l%t$@vS=|Wkd4t`Rd3+e}f;r_S49UIS<3$*GE>p5Bi7OMmBc)0qnr<_)pN`!bm zCk0asi7}!?6pFc`Ow5MLLpbRFn3BS|WwU{@Xg_*%d2wN7@wn1ia~C``X4G93#pPq> z&Q79-+lz5xlE}m3MffTg#i9aV!xWgzag&UiW5yFz7tii!30Ah4i02;!v;}}s3}_lo zB)avOQD4`%`EYdQsf1vS#&k->EKIFj%mcI{g;St$@6o2C`&&Y%pBRZL%>#f^{I3v| z091(YWw_>v`S_Wp`k?&1$cAcmHH>R*@4EL zr;TMN7@>v>d!vhL6PRnhm?;M>1y~w*rbLDaOGru~#Fh941QpM+jg>pW|LE2g4fQV= z`;RxBJV5+wJ^H4H=9iUMPA!>#cUk$I;&LgJ%Uwehi-*83;u{U<8bajbv-y%57Nus2 z`+&?$F$aGs0V;VCRr-u*N3y{5BFUJIpEblX{9GjO8z%A;^3zP@w;eDpY%^-l8Y>(V zxp;OhNE&^zD!ThXL;Zn<(`$H|(e1TH^}(in&lv0WNFr~gpO?MRP`}l@Vbvz%Y}K$l ze@f&67d>|<0kAbmE9@9{HnEZzMpsrFt9KJtr)rJ!OXI=s<)Spn6`2A%O`MF(X{xO^ zHf)XZNC~miEiqn$D8ehEI|kyJv?Mp_;$|r&^AwO)H@Z@_QW?u#>kc?O&PCSqnM8Rzb(`w1`nTFHrj3e8Pn!`Q=wHFWL@%aGQOY|1~ z%-^n3z%m~$nV;9IcRyUN@&VCWalI7$fjLwUM;b0XfzeH5s@M4d2;i}~Vy=2DU@SY_ zyu=UVu+-^U@_Pkp0w5qe6=UTo7;>L6LUv(Q&xGuv>GNccNorEo5-F0ExWfJ`D1qpP z>gMGeeV#AyFaTwE-ZGq8h4NrR7UFJAK*-rCW7*2)s#Vc7Pcg2I$Loza0kqo-6BR+f~N z-ch`uqL>s%s)^T#1iu`nvsfDB#71n~c{I9bMIs}P7k%;NbbiE1a(FZ4h?Ua7U)szs z@7ottW;Q1{^~4dm6oPcHA(A*z;@CDH#`OjXImV&LftW?!Z=5NH6jYI*IMpoFaAv!4 zbe|SMAK1ANLYNc4n-8dE5Nr+{Io7C9;uc~v({OrI!)X~m`oIeT*9Bq*AVU4s(=bxc z8q1Ey5zahuC&n+7%EjtNu^z{G(z`2IA!FsXrgH}ycRm(fe<%*b0f0y*XbxsX)Zqw$ zqAXH5qFx1=4=IRF+GQA7_g2M0>UuFn4oO;0(_08s zER-fm29U)e-Czdf;eKU@Y$Q0ks(Jf!jVJ0G>vzW)tv#ORsE!0D59tNj(sBhS!#KX7 zY4f?}ZSf|Whl!G8P&7dSBN;`9c~sy+#+eJzjYnEUD=cn;AEs$804#051JPB7n)a@Z zGof@bR&r7sTyiIk`|IL7lOsk$8p|*mMUghMuJMj;d!c#b?iTSLinNH#zPFj4A!$Q~ z+iv1yq^Cw|AFX-XWw?yGO)_ls5wj6-$Kx|WV;|)K=b9fQ~ zWpd(9xQ%^K(%NSpk2jn}VQ(v(2!-`5?G`yfB6|;eDMaq1=4&6mWjYTw>FmUy1v)FS zYUdi22^~i#7Q--*p`lQAAmtyI?4Pzz^|`Dm$Bd`rbW4~ zVg2MbV)p{^MYpF9NS9D)k+p+PKxCbCvJiGb2Y(Y6*-o(-BqX(ANC5GSc#o_`%_smd zH6B|XM^dLJO=-n9x8@zn8S zF#!{!gpJ5bITHOugHg0enG&a}*6^falxp(*q+$!CpXMj2@J9))M%Nj*ds}R4@>Z}( zP>9$x2HT$s$zlqhNXhf%D2!1#h(PS8dkH#~`pfafK9>H*_){`M$xpfHs+e~t2!`bl z6akeXgS;z$paP%99ZRFDs-iWkn)V)Utlt#fwY1@MRnv--s1l<_ZLEB};p`4npqe*7 ze(~(0IHFLRkSI7QX3>VY;}i^@p*vnBs__bv7K|=teQy0?L_O@`)r9dwJn={jWfBVS zxb*9y+$|Pmhvvq|IxKFHqC%no0agqTG*|6FC>4iAz2TEcP`DzKpeI2x-*|9Qi=L#w z%!)}^i%_H+4dJB1;{ses)$YXSq*xTklfc_cxS{54M^MLyhiN*rJP!WZ@UE13Q|WXz z=5EjRGf=;Xo;nl1^w14xv6e~F0gZ)}Z!>=|qi{UujG7Q}x4GquKs zCq3>DL&R($y%tFh-D7BI*+44=ppvFz`U*mXA*lJrfEtU)fXdAjl2c}Hd3Oyuma_2$ zBiA*gB_6!k8B65xATh-&q+h%s{Ppl~il-kIyp|k`#Q@B{M5Zj{9*J>`1^IFc?W_Q| z1g?NE)r!#0SX2`|vX7_P^ujV!QO%GeZSw6i?k}FntF!Gv=mlorLpnxv*ac#~;*?xj zSh2y_kA{MCl1=ufDUc%5YZb&fr}BogZ&$M~oJoLSrR`4b=6Ic~C{5T}OPMJr&ap%# z;fvo%((+)Y$fM~BbXVgPJXt-~;fymcG#x$PcEazE`RzB2jEq9L zL1H10TL3gEMc{@K<|oBsB)>ETa`6L%KyqkGRxyBtlY#@vsGS_8B!cV~ zuar3_Y9$r)q*sbzk&jXiD)Mn6G7B3D_rywMQ~bS zv$?lGxhpR!uLNV`>4`=Cmi2|`Zly&;N7gfXo)^5GCQk(#^3F;d*1ahw_EIa5GP-RK z)g)y^;x(Ja-{@?d>Oz*nN>!cm=TH%4=Z3_Y2Xa5izUM4sIKI)vaqc0TE$K^1DXk4V z9aX+f(Jx*8NmIzA%!XWe%DvFB=j7;#!^ZNpEcyQ&f$s@aN-@b|AVebNJ!LKQ5unt( zxyov#S`18j!J-+{W|qyHUszr&`%iLR6reIGC+beH5uvdw%UCiiK)H!b=;&p z{6otxeOFz-b`S~XsP;$Vr>OQjTTC_WH)n$<^T5#&2(A_)*eei&6saJigHS;pM5nT2!jE32rCeaZ?PJW}T}d+Kb*FkMQRJ?v{$URD+Z zJl|Z#rRmIvM$uv+^(T{VaUqckfLy`XZP4w=Bd=J_Ri?(L>bOTT7IFVh=Qc>MiQW89 zw>mqg5T|#-eq*ONIi+qs&Q_@vCy_7#Zj348B@<14vry8)OziD)8r^3P+V!nV0KUWcO3uW72?B8#ClZX9y)7zMucFq;7@!E@EL7>Le0?G(w5 zNr!E8Kr#%nqZuCGF$s?eQSU6AC@Ztk(ZJA0i!dYZXCu>=n5Rgt#X8y`Y%`zW2<^ya# z1Uugr40c?If5w@U6QVUMi_m6%9|{EXjFrnP8V||#-}s0IAaeF?Fd-H3;Z6DVD`{BX#ORD3I+@lo$3Z9b*Qyqkw=2CD91Y9Q&H7X1iUKX{6!1&KdK zjw~#jwG_ZKxfu(SE2as-OqaF+m??^7GhSxiC^we0OuY^+)T|O~aV&D+X0!$y9Hi^G zv&$sezjn*rkUVVLs8R<+N`7x&O!toIn6C9Y*t;k!0!oIc%j zXlcs;f-N=px0b#pDdmr*0}wv&kAliAvWIZe!V)23NwWRg*lTOcV91z1rFQ_JUI9O#%C- zC_kk&es+J{v_h+;?t4sPDAo^Zy0D$tCz)=@4QR&t<;I5R8tT^2wov$-6)U29PMI`H z&=}2V!5IDD%^*>G*1Lrn*pye%GRIEKOS9hjF~hm7MuGz-I=^gGvADX-xpa{&6tS|X zcBRD+`lL|VGLwG@!Z#kmPxeLk6*#jZKOl}oDkk+w=qX2@ka3H^)m#*Q5}PwrBU1GlGw)mM(tSB^kBcOS#Wcciik`V|D7 z(kPin$wcZtj53V-I}#d*B1_8CC=#ddl&jGuEBdYnYAIifGt__>L976SdHu{@j8%J{ z)$DS3*DIG`&AqRxf*fbWT)BhGt8y_OmQD9W#-xpLV73O%R)ZngPMtZLyWiNolb4DE z<&xLC%=|vh7{bGN4n1IL`(V-I>iC zwkK7d5a-FZGFajSj0o&D3=&2{hQYnxoT5r9OH(lBf{#zhJF=+r8W%6>yT|X%xekwS zUqv>KZD^=lPc`u;b|-}0vywqXVKUns8tPoYTK2d8`k>4Qs4%QE6ACD)UO`DL8B(k6 zQz-omE$~xlX=NM~sSqa_20IByX&(3T23>9x;P!zES=4(_@$gzsF)%}{p`i2GE3;VJ zbfKp4@EWcKH&^X8>JCPi?Q6k`?~hB4|7$W(0Ucta$S_2cAz>OA7oKT>20_V2-~2d^ z(onWT*^O@MjIB?G+zC`1cx@p(d_;oHGO5{z%##pQ2U#3Q>A=dV!hwX;BZ$ydK4(h= zz0>_TgNMO1A}4E@c3UB{VM0}n;=pJvHye>AnFwhzT!OZbg*m6C9joKkvPGPlDm#Z! z3SosvN4c#e#!{)#d)r5kwM53bO~$Hq36VM^?FF4#0&B0}2T;Fks9)cL$Obq;QBPS( zNgFFEDOxb^(pGhRpG-WN@dfcUR(E`1CAhHT`}{YvrsE6#pOhi^j@Lru?E74cOFwa+ zj2oW#KG{MM)AzadaG>N?7vMX)TUlXJ!XJvRT7&jet|^e>_(BR=R?%kNBCM>AQl>9} zwy+TPq88e}ZJ;iXEo|jk(YY_k>=+-S4Q93p(CTJ4E3Lk;{0y%J$5piVg>x&W#b3_D z(rD`$g+5ltDQ~`}_TM>txw_b6hFoN24XX5Yf;%0j}h+J1Q z0zBnrzVcDugRp7DzLGCN8mZSJ;aGLu{DKv*UUhYnMgW zJZqdf0D1VI#iO#|<(-p^_HTD7&2hMfNAJZ znOi)qqOyF!%*uWb&6~?d4|1oE7cL<{uYml?@fE!S^D1TolGg*5T2yUAMb*9&CiE>T z%99i^%c*WA^pqvq*dnlBvGy{8D@(!gpnfy4mK#?h8ueF^lIv!z6l@RnqF6Ti$;drX zVpS3Qj9iOzkI){F=i^Hr?uDQEfG*qFe)?Px_oH+MDh2e;^TjxB8HYYWYkvS+Fe)XG zWRcY(Tg7+K8L4F3?2B=oc*t>MkpD-IJc*4J$P>nmF{;j*F@YPAFhCNB*g4m&^`cV< z>PLp#P1U;1UU#=Pr%7&Knp`EkX$^IUj7^JV4c3hlA5le$M8O;_5#ElU>@9a04fV^S zry4zJ5aLytGVexVY7P z_pGU3jJ5{T3N|f7+ERP`M#ECAkC!HO=+~y-xCl_=FJcTfp z2TW*y<3*(o9$@$|W4*?JSrZU;dYsDhdWILk0$3FLtSy%u#~~|hv+V=<5Am8~2+}C( zDM^H%q;n5I1o=!9@;AgD@(Q+Hn)t*C(V7AWRTSg7@296pk7;W#HSdzYuv!+#nD9Ot zmO!r&hbt0X%Ov2*WA9JX!9~%nM^FXT@sm9Dg*FGtQ+xTZXiV^8Mi8YK)265qQeZp0 z?rjUKsRC~8m!RkL@};>##5*Fq9&ZhIPWnlqmdlnH%VbZYTY|k(*c7xddO`QP*VgXn z2HgQ1GP@(e39Be2&yZ7ez>KI{lI7WJ%o{NytL;Gb-U2M?vIbAAwnWc+pltgj$`|KM$K0wb_Bw%Xnhhxm`9R+ro}p(3+gA#MIcLBnC8l)|#N z@M0P5Ah&?TZ%>a{pyk%4T_C=AItgR4E(^P7dRgnCGE=9oAGi z5x2>K0%@YA`0RyR0;fv5nH7ev+UfvmxPT$Ed9P7&vFpP2h*K_Y8$`1h1Pi3x;O-v0 z8wR(RAauJF*)58KwN{zXY}@7C&{{s@I>Z?1ldjz$qEHduW$T~{rpTLn<;sbV?8HTo%wWM|+(qMz=Q`y0@6~-DE~6j4c-0Yfm)^vT0qz zxfu=K<#0t4 z*cp*pc3P*w>}s54D`zo<31vO$WUnU3V3QzL0h4LMv5hKd<@1F3R-dVMFc-G9@ty$6 z%WaiP$3i%hjSgFq+bX>@Ef&Zf0OC9k(gGsSfAj(phD1}WXiAlRbm|ObzIr{F4smgA zMM=S?1@Aj2y6z0{_6Dz;TLG-z$pDb@2tT(bcF?f{JH#blMn zPI?(tOwo2QT92s(H0A&kd@@=F+a6JXB56DG+;>ZQ{8ND;pcjwhR(989F|Jm2TWVt; z$sTEVO)6|Azf||Ocd!MF{Y!l^*N{EyQ}e?E)?pxSe)WV);AV-qdutRZt4C$|GUMnO zFQnVsF#r|ZvSr%E!B+}~h0^{* z=<@KIQzsWn_WgEtPsi=MvL(pVZ&IwtZps#0fkxbmLGnU1bt@%`g)BoiPsp7dRPQe% zPzvIy@DnppZf@|JXs&CbV;~!BtmVSCqL@i_3LvFX6#0xx(v!3cjTT!VHN_+aOL;P=%tS0H>RtZuZ=)RhG2J}RWGtqj|TYcG_Qx+L$GEDD^ul-V)p%e*p+pr>A3AhByRF`!vqpt7c)0cwX`O7 z(y?923ck2DrUSG@t4tgnlc%EaUk7HR z&FyElg+GqX$Xq{FhfNRI{ecJ#+wGJP=bH!l$R$JHI4zdYu_s~iqNA_#n+jCz8JsLZ zfnfIS8oG?(wXuWRvMrlUyA8`gNJga3rxKD^}v z5xRZL2L){8pnkWP8Tmm;X#*;ifb zb#pcZxk8+6wz`&&$njh(@IuSBjnFNBGu;!PSxZh`|= z3gu$gX*zNrud(t8Y>6}0Zsqe7{40%K2!|Mke_Tmh+{`*D1c~Zi6ugx|c-;Qo1ce=? zjpv^8BKJ@Uh|gZ8Wdbuq#ZOe8r6NCdHnUc1J7jPB?rUcMwryiDtA>2RUgMLC8h37w zR@K8@BE(6*?d-=y(H}= zLtzMD3$FokPwYzPBa-6O2|<)s{WS`Y2){-Go8y~&dum#yw(Si=Zgg5`kapir%es7S zpfUi!oOF+jJr)HO=Ao#plts6m@d-g&L)^SmoeX8ey=XoFYVUXs2qfkw+9|j#IR-ip z#65;HZn0F(UU$v0!RL}a*Vz|&O=Gaf5EO5dDWV{NYM|s;b+8m~D971wZl<+%Q%o^Q zAJ*%iXT&zbn-wg(d(tznUgznaW~e+oma;k?pyexlJSLIB3Y!Qb38ArBxvEn;l12;07){YlS0XWtv1ZHHj%;S+1ox6Hq zR8OHPFd~slb$5jlD6|wt)?;KfbvhY~=K?4cDg(_|VW=}6+vJ8kz zNq{^>T#i+1HHCK3ohM;Il)lJgH08-lZZkE}v%ASTay*0Xhe1bA4EzgEH@i)a*ZlCA z6EpW}l}@&N#`og0k<^HQ6C6kQ`ctGInMgFPwAB?amNwy5dt471rGaig0*xn_6{ z!g8oBuhmOOMuwuNnI=)KFrA}?mQdvr6$A_y>dW{HRP@J23aa- zSZfNF-LSBv8S*K#ZX9EKP`_)^QNBLHs9uj!7+PkcPgX_o78h9@^4sym>PpIX6!ts26{@t>~qanibGz6j|5y zn#~U`VKx+c+RxIb;yH;mpVwfC?bl&ISH%D<7UR7D>IErrIWff3V3F8a#>lQxDk)Qz z*RqR}IR3VW+Eh9FaN8cvSv(qWKo*_EIddzk$=9-|v<`VGy>z5!d|r|@InJ46Cyksq zpCwLNsN=08ut8lh)+AU-${=Vi^hO90Pi@1B5MfVq1dtSqu_fciNb2t6`k6I8WzBRv zhsro;QArWGh*@i|@giTu38ZLBj_uZSz2gMEe0aeL9iYzH3Wv`)G2h(RiXDVT-G+S6 zy)q*Z#UJzjmqloOtUf8;z&<|y%Bx#gB1cfUq%{1hlgVaXIy_(^Pa zzBY{B|IP3BYFfRxaq$`b@-Vmc8Rq#ucNPTa)+{c0SmhME{Q=$dOYHr3e2ul~SGwS+<_2={2x^&AEDGr1?r%_cU+xoTe2PyQ?|=Q-uf7Q{@nu<=%^9);rvtCseZC z(gi8M$vLR1U*PVZ8MzNKgVyUqtT}PQO2W|+74@9#FR}C?iASqFA;DbPwL{1vYzJg zq$=t1f)!vMt7ig;{hDg!xkWCaKo~s|jHh)RI`F(g(2;@^#*;JBE`h>k`@$#vO&=i6 z?u>#~yJKMY;|!E72N64l4%&J3fdXdTcW;j>tY__kzO`bZ`;jOT$w!br26*cYV~Mw& z&x#^qetr#=gN{6j+}vy_KXq6U-dg3Qc2l^mAT^6@c-q~Zy>YGm+-SOwOA6eCKHQ6Y z`EXNIzoN1})$_6>cyp4F2HWo8X>5i*|+ z^I3DDncvnXH`jTVwdmAJs$Wu$G!SQ4((EaMAcIHd!meZ%`%UpwGTteA-GBfqE#7-877 zE$68^RLH&Lse^*YMQ#foY?5L`Cc(kmo%S9c=9$?{@(Gx&Ox$VByjJ@y&un%Js*!W( zDD;hMO$C%|`i(nJqvg+QDt>5K<})_*b7sOZD}D|%SPVGqLqw?Gx8#axL@(q&oK_|5 zJUN+c$$1Wq3)spQ-pkpo~hw~G66y{vgu_VzF8Y>Rfjn+Bl<~F&!qkOzi_jD(OfFxy9mC3@I9Ut zL|SSi8_IFApM-jE!L=>Zsrh#`-@j??!sDJj-f`hub`;rY8|7uj(YR8XP9NhMz=l_- zg4dMj{87`XC{*H&n84k|;hxO}6(qAVoK9z#51bBzk|K<&UWa+U?&7 z4}Z@d`+8XF7N9Vg%COj$2NIK1S-sG1=UXTaZtQXc{NH|mPV(z@bepy|j#^u(0p)n)C91UPK6)cP?HrJ()wiEHxWqO145r zk6npd%hyGp-Fqovta1~QAzRwSzq>fBzbh1yACtExt)JL!7bAi}eT+$9Q( zyw4Ur!c21<%-6ivJje{2>v*$|kL97`^XzhN?dm6-{UuCOayGoLZPSKQHlkznRK2l! z53p%C{j@zjq9Gysb(&|&UbjDdM^v-{+SzDO} zw_~6&(sCx1WXolH32~oGD$aL^>nb*#smI5vXpY_qib3Y^+8X;J zl*+DECZo1Xk`u*i7*6Vd=Y|7f4*4zGddIM0vDH#&t*r6-h-GJZ1Dh4@&?<@3LQot^X(mz1Y6!QQ;yEI* z35C=SUL~-O<#XrvOk*zpIuG|*p_t2#OYMtB?HoOkFe5=6L8eT)w?^5VE9 zD^3oQ1#wY9DN|XCG-#OwHFS6~Iwi0G72RALUAu^>!%I{|BYB=7Pu9yS4~v;ANxG#K zx=>GY?vgh(4^mV!`~W&Nx-HaeKzh%y-6=U&d~D*Sz()Yy9&mU;O$SsG+WXW~0dA)D zx;avw*5`IlG+mM-}8zShW&){|@>=o|W#!CuW zVzEz}fYHcf(E8>$j86+Oe84+-CijHNN?D)L&)&(g!dF^;E5f3=SZCzxnT#?u)^;ii z*7W$ecNOmB(`)GSbuumINv9mGrqeRKCj4!Mrj{GCCMu^&q~^m!ZI%S@Vk-`=@0OCvm|DzF0Rg}cOmL%1cy#Tx=zeG&`y>ul1P8UVmU`aT6d0l($%IOX( zD77-;{TnrSi#HuSNZlVR>b$0Z>m_1Ku^bV^iZF;sRP$SC%Neh*W5Nx6*nx`*rDxkk zNUA~13KQBjjK|LT)OmB&Go=`xu(7L{&7mnMtTvuIXM)6Ed_f--mjnKrD*X;i2_P4S P(7K7d5{Ks{Cnf!VuYuZY literal 0 HcmV?d00001 diff --git a/resource/en/db_manager/en.ts b/resource/en/db_manager/en.ts new file mode 100644 index 00000000..8701d31d --- /dev/null +++ b/resource/en/db_manager/en.ts @@ -0,0 +1,2925 @@ + + + + + CCreateInfluxDBUserDlg + + + Dialog + Dialog + + + + 新建用户: + New user: + + + + 管理员用户: + Admin users: + + + + IP地址: + IP address: + + + + 管理员密码: + Administrator password: + + + + 确认 + Confirmed + + + + 请输入相关用户信息: + Please enter relevant user information: + + + + CExportZipWorker + + + 创建日志导出文件失败,请检查以下文件是否被占用或被其他文件打开: + cannot export log file, please check if other is using log folder: + + + + 读取日志路径失败 + cannot read log folder + + + + 读取日志文件失败 + cannot read log file + + + + 创建文件失败 + cannot create log file + + + + 导出日志成功,路径: + exported file: + + + + CLogMngWidget + + + Form + Form + + + + 全部 + all + + + + 刷新 + refresh + + + + 导出日志 + export + + + + + log文件夹不存在 + log folder does not exist + + + + 请出建模信息 + please export system model info first + + + + 提醒 + notification + + + + 请先选择导出类型 + please choose export type + + + + 保存文件名 + filename + + + + zip (*.zip) + zip (*.zip) + + + + CStationReuseForm + + + Form + Form + + + + 步骤1:请选择源/目标数据服务、数据库 + Step 1: Please select the source/target data service and database + + + + --请选择源数据源 + --Please select the source data source + + + + +新增加源数据源 + +Add new source data source + + + + 源数据库服务 + Source database service + + + + 源数据库 + Source database + + + + --请选择目标数据源 + --Please select the target data source + + + + +新增目标数据源 + +Add new target data source + + + + 目标数据库 + Target database + + + + 目标数据服务 + Target data service + + + + 步骤2:请选择源/目标厂(车)站 + Step 2: Please select the source/target factory (vehicle) station + + + + 源厂(车)站 + Source factory (vehicle) station + + + + 目标厂(车)站 + Target factory (vehicle) station + + + + 步骤3:请选择需复用专业 + Step 3: Please select the professional field for reuse + + + + 全部专业 + All professions + + + + 防淹门 + Floodgate + + + + 广播系统 + Broadcast system + + + + 电力监控 + Power monitoring + + + + 时钟系统 + Clock system + + + + 通用 + General + + + + 列车监控 + Train monitoring + + + + 基础 + Basic + + + + 门禁系统 + Access Control System + + + + 售检票 + Ticketing and Inspection + + + + 环控系统 + Environmental Control System + + + + 安防系统 + Security and Protection System + + + + 公共 + Public + + + + 集中告警 + Centralized Alarm + + + + 乘客信息 + Passenger Information + + + + 屏蔽门 + Screen Door + + + + 火灾报警 + Fire Alarm + + + + 闭路电视 + Closed-Circuit Television + + + + 步骤4:执行复用 + Step 4: Execute Reuse + + + + 执行 + Execute + + + + + 请下拉选择数据源 + Please select the data source from the dropdown + + + + 选择厂站复用源数据源 + Please select the source data source for station reuse + + + + 选择厂站复用目标数据源 + Please select the target data source for station reuse + + + + 提示 + Hint + + + + 请确保源数据库和目标数据库的所有表结构一致,否则会出错! + Make sure that all the table structures of the source and target databases are consistent, otherwise an error will occur! + + + + + + + + + + + + 警告 + warning + + + + 未选择源数据服务 + No source data service selected + + + + 未选择源数据库 + No source database selected + + + + 未选择目标数据服务 + No target data service selected + + + + 未选择目标数据库 + No target database selected + + + + 源数据服务未连接 + Source data service is not connected + + + + 目标数据服务未连接 + Target data service is not connected + + + + 源和目标不能相同 + The source and target cannot be the same + + + + 未选择源车站 + No source station selected + + + + 未选择目标车站 + No target station selected + + + + ConnDig + + + Dialog + Dialog + + + + 用户 + Username + + + + 密码 + Password + + + + IP地址 + IP Address + + + + 端口 + Port + + + + 数据库类型 + Database Type + + + + 数据库名称 + Database Name + + + + 连接 + Connect + + + + 取消 + Cancel + + + + 连接数据库 + Connect Database + + + + MySQL + MySQL + + + + OpenGauss + OpenGauss + + + + Oracle + Oracle + + + + KingBase + KingBase + + + + 未知的数据库服务类型! + unknown database type! + + + + 连接数据库服务%1成功! + succeed to connect database service%1! + + + + 数据库服务%1不存在%2数据库! + Database %2 did not exist in database service %1! + + + + 连接数据库服务%1失败! + fail to connect database service %1! + + + + QObject + + 全部备份 + All of Backup + + + 部分备份 + partial backup + + + + + + + + 打开服务管理器失败,请确认是否具有权限!建议以管理员权限打开 + cannot open Service Manager, pleasure ensure that you have sufficient permission + + + + 未设置服务自启动,请先设置服务自启动 + the service is not automatic startup, please make service startup + + + + + 未设置服务自启动,无需取消! + the service is not automatic startup, there is no need to cancel it! + + + + + 停止服务超时! + timeout to stop serivce! + + + + + 获取服务状态失败! + cannot get the state of the service! + + + + 文件不存在! + cannot find file! + + + + 注册服务失败,请确认是否具有权限!建议以管理员权限打开 + cannot register service,pleasure ensure that you have enough permissions + + + + 已添加并设置服务自启动 + the service is automatic startup at boot + + + + 已设置服务自启动,若需重新设置,请先取消! + the service is automatic startup at boot, if you want to reset it, please be first to cancel startup at boot! + + + + 注销成功! + unregister service! + + + + 注销服务失败! + fail to unregister service! + + + + 全量备份 + full backup + + + + 增量备份 + addtional backup + + + + db_compare + + + 合并出错,%1 + cannot merge %1 + + + + 配置出错,跳过,%1 + some error in config, continue %1 + + + + 删除表:%1数据失败 + failt to delete the data of table: %1 + + + + db_exportType + + 删除表语句 + delete statement + + + 创建表语句 + create statement + + + 插入数据语句 + insert statement + + + 创建触发器、存储过程、函数语句 + create trigger, procedure, function statement + + + 确定 + ok + + + 取消 + cancel + + + 导出类型选择 + choose export type + + + + db_restore + + 删除表语句 + delete statement + + + 创建表语句 + create statement + + + 插入数据语句 + insert statement + + + 创建触发器、存储过程、函数语句 + create trigger, procedure, function statement + + + 确定 + ok + + + 取消 + cancel + + + + db_set + + + Dialog + Dialog + + + + 数据库类型: + database type: + + + + MySQL + MySql + MySQL + + + + openGauss + openGauss + + + + Oracle + Oracle + + + + KingBase + KingBase + + + + 显 示 名 称: + Display Name: + + + + localhost + localhost + + + + IP 地 址: + IP Address: + + + + 127.0.0.1 + 127.0.0.1 + + + + 端 口 号: + Port Number: + + + + 3306 + 3306 + + + + 用 户 名: + Username: + + + + root + root + + + + 密 码: + password: + + + + ems@byd23 + ems@byd23 + + + + 测试连接 + test connection + + + relyez@2019 + relyez@2019 + + + 测试连接是否正常 + Test if the connection is normal + + + + 不准选择空路径 + No empty paths allowed + + + + 提示 + Hint + + + + 警告 + Warning + + + + 请把信息填写完整 + Please fill in the information completely + + + + + 测试结果 + Test Result + + + + 连接成功 + Connection successful + + + + 连接失败: + Connection failed: + + + + import_his_backup_dialog + + + Dialog + Dialog + + + + 常规 + General + + + + 导入服务器: + Import Server: + + + + hostname + hostname + + + + 导入数据库: + Import Database: + + + + databaseName + databaseName + + + + 备份文件信息 + info + + + + 备份名称: + Backup name: + + + + + + + + + + + TextLabel + + + + + 备份类型: + Backup Type: + + + + 备份日期: + Backup date: + + + + 来源数据库: + Source database: + + + + 来源地址: + source address: + + + + 转储截止日期: + dump enddate: + + + + 备份信息: + 部分备份信息: + partial backup info: + + + + 备注: + 注释: + comment: + + + + 信息日志 + log + + + + 导入备份 : + import : + + + + 时间 : + time: + + + + 0 s + + + + + + 开始 + start + + + + 取消 + cancel + + + + 导入备份 + import backup + + + + + yyyy年M月d日h时m分s秒 + yyyy,M,d,h,m,s + + + + 提醒 + Alert + + + + 是否恢复备份?(如果是恢复全量备份则会覆盖原始数据!) + whether to restore the backup?(if you import the full backup, the data will be override) + + + + 关闭 + close + + + + 还原备份全部历史事件和采样数据完成 + succeed to import all history event and history data + + + + 还原备份全部历史事件和采样数据错误 + fail to import all history event and history data + + + + 还原备份转储完成 + fail to import backup + + + + + 导入SQL中可能有部分重复和错误,具体请参见日志 + there are some errors in import SQL, please dig into logs + + + + 还原备份转储错误 + fail to restore backup + + + + 导入部分转储完成 + completing import partial dump + + + + 导入部分转储错误 + fail to import partial backup + + + + new_his_backup_dialog + + + 新增备份 + new backup + + + + 常规 + common + + + + 服务器: + server: + + + + 数据库: + databasename: + + + + databaseName + + + + + hostname + + + + + 恢复时会覆盖原始数据,远程连接速度快 + Recovery will overwrite the original data, and the remote connection speed is fast + + + + 恢复时不会覆盖原始数据,远程连接速度慢 + Recovery will not overwrite the original data, and the remote connection speed is slow + + + + 备注: + Remarks: + + + 注释: + comment + + + + + 增量备份 + addtional backup + + + 恢复时不会覆盖原始数据,速度慢 + The original data will not be overwritten, it is slow + + + 历史事件 + historical events + + + 历史采样数据 + sample points + + + + + 全量备份 + full backup + + + 恢复时会覆盖原始数据,速度快 + The original data will be overwritten, it is fast + + + 增量备份高级选项 + advanced + + + + 时间 + time + + + + 开始时间 + start time + + + + + yyyy/M/d HH:mm + MM/dd/yyyy HH:mm + + + + 结束时间 + End Time + + + 设定与采样数据时间同步 + Sync with sampling data time + + + 按设定的时间区间备份,若时间总选项为否,则备份全部时间的数据 + Backup within the set time range; if the time option is not selected, backup data from all times + + + 历史数据 + Historical Data + + + 类型 + Type + + + 数字量变位 + Digital Quantity Change + + + 模拟量越限 + Analog Quantity Limit Exceeded + + + soe事件序列 + SOE Event Sequence + + + 人工操作 + Manual Operation + + + 按选中的类型备份,若类型总选项为否,则选择全部类型 + Backup according to the selected types; if no type is selected, backup all types + + + 采样数据 + Sampling Data + + + 设定与历史事件时间同步 + Set to synchronize with historical event time + + + 数字量 + Digital Quantity + + + 模拟量 + Analog Quantity + + + 累积量 + Accumulative Quantity + + + 混合量 + Mixed Quantity + + + + 信息日志 + Information Log + + + + 备份信息 : + Backup Information: + + + + TextLabel + TextLabel + + + + 时间 : + Time: + + + + 0 s + 0 seconds + + + + + 开始 + Start + + + + 取消 + Cancel + + + + 保存配置文件失败 + fail to save config file + + + + yyyy年M月d日h时m分s秒 + yyyy, M, d, h, m, s + + + 全部备份 + All Backup + + + 部分备份 + partial backup + + + ,历史事件 + ,his event + + + ( + ( + + + 从 + from + + + + 到 + to + + + + 全部时间 + all time + + + , + , + + + 模拟量变位 + ai + + + 数字量变位 + di + + + 系统信息 + sys_info + + + soe事件序列 + soe + + + 人工操作 + opearate + + + 全部类型 + all types + + + ) + ) + + + ,采样数据 + sample points + + + 模拟量 + ai + + + 数字量 + di + + + 累积量 + acc + + + 混合量 + mix + + + + ,从 + , from + + + + yyyy年MM月dd日hh:mm:ss + yyyy-MM-dd hh:mm:ss + + + + + 提醒 + alert + + + + 结束时间请先设置小于当前时间 + please set end time after start time + + + + 开始时间请先设置小于结束时间 + please set start time before end time + + + + 备份全部历史事件和采样数据完成 + complte + + + + 备份全部历史事件和采样数据错误 + fail + + + + 备份完成 + backup compelte + + + + 备份失败 + fail to backup + + + + 关闭 + close + + + + new_his_dump_dialog + + + Dialog + Dialog + + + + 常规 + common + + + + 转储服务器: + server: + + + + hostname + hostname + + + + 转储数据库: + database: + + + + databaseName + databaseName + + + + 转储截止日期 : + enddate : + + + + 时间 : + time: + + + + 0 s + 0 s + + + + TextLabel + TextLabel + + + + + yyyy年M月d日h时m分s秒 + yyyy,M,d,h,m,s + + + + 手动转储 + manual dump + + + + + 开始 + start + + + + 取消 + cancel + + + + 关闭 + close + + + + 保存配置文件失败 + fail to save config file + + + + pj_manager + + + MainWindow + MainWindow + + + + + + 工程管理 + Project + + + + 连接 + Connect + + + + 备份恢复 + backup/restore + + + + 系统升级 + upgrade + + + + 历史数据 + hisdata + + + + 操作方式 + Operation method + + + + + + 数据库 + database + + + + 简单模式 + easy mode + + + + 完整模式 + full mode + + + + 选择数据库:只备份/恢复数据库 + database mode: only backup/restore database + + + 选择简单模式:包括数据库,还有data目录和报表 + 选择简单模式:包括数据库,还有data目录下的所有文件 + easy mode: database, data dir and report files + + + 选择完整模式:包括数据库,还有data,common,platform目录和报表 + 选择完整模式:包括数据库,还有data,common,platform目录下的所有文件 + full mode: database,and directory:data,common,platform and report files + + + + 备份记录 + backup history + + + + + + 备份日期 + backup date + + + + + 备份目录 + backup directory + + + + + 备份 + backup + + + + 恢复 + restore + + + + 完整升级 + System + + + + + 开始 + start + + + + + 结束 + end + + + + 导入文件(包括工程数据组态图形趋势) + import file(include project data, configuration,image,trends) + + + + 典型工程 + Typical Projects + + + + + 日志管理 + log management + + + + 选择简单模式:包括数据库,还有data目录和报表 + Choose Simple Mode: Includes database, data directory, and reports + + + + 选择完整模式:包括数据库,data,可执行文件和报表 + Choose Full Mode: Includes database, data, executable files, and reports + + + + 备份数据库 + Backup Database + + + + 导入数据库脚本 + import database scripts + + + + + 删除触发器、存储过程、函数 + delete trigger,procedure,functions + + + + + 升级数据库表结构 + upgrade the structures of database + + + + + 导入基础数据 + import basic data + + + + + 创建触发器、存储过程、函数 + create trigger,procedure,function + + + + 数据库升级 + Database + + + + 升级 + upgrade + + + + + 新增备份 + new backup + + + + + + 删除备份 + delete backup + + + + + 导入备份 + import backup + + + + 名 + name + + + + + 备份类型 + backup type + + + + + 备份大小 + backup size + + + 转储 + dump + + + 定时: + every + + + + 星期 + weekday + + + + 日 + sunday + + + + 一 + monday + + + + 二 + tuesday + + + + 三 + Wednesday + + + + 四 + Thursday + + + + 五 + Friday + + + + 六 + Saturday + + + + hh:mm + + + + 自动转储 + automatic dump + + + + 天前的数据 + day before + + + + 应用配置 + apply + + + + 自动转储服务管理 + automatic dump service management + + + + 启动服务 + start service + + + + 关闭服务 + close service + + + + 设置服务自启动 + enable auto start + + + + 关闭服务自启动 + disable auto start + + + + 开启状态: + isOpened: + + + + + + 关闭 + close + + + + 是否自启动: + isAutoStart: + + + + 否 + no + + + 手动转储 + manual dump + + + 提示:自动转储和手动转储的数据可在备份标签页(前页)查看 + results can be viewed in the previous page + + + + 请连接本地数据库 + please connect local database + + + 清理 + clean + + + + 全部删除 + delete all + + + + 将删除该数据库内的所有历史数据(事件,采样数据,趋势) + delete all historical event and sample points + + + + 部分删除 + partial clean + + + + 将删除选择日期之前的历史数据(事件,采样数据,趋势) + delete historical event and sample points before + + + + 开始清理 + start + + + + 表空间相关 + about tablespace + + + + 当前历史事件表占用磁盘总大小: + tables size about hisevents: + + + + GB + + + + + + 查询 + get + + + + 自动清理 + Automatic Cleanup + + + + 服务配置管理 + Service Configuration Management + + + + 磁盘触发 + Disk Trigger + + + + 容量大于 + Capacity Greater Than + + + + + % + % + + + + 磁盘占用 + Disk Occupancy + + + + 0 + 0 + + + + 服务启动后总会检查磁盘容量 +大于上述容量设定值后仅执行清理过程 + The service will always check the disk capacity after starting. +Only perform the cleanup process after exceeding the set capacity value + + + + 时间触发 + Time Trigger + + + + 触发 + Trigger + + + + 备份和清理 + Backup and Cleanup + + + + 仅清理 + Cleanup Only + + + + 处理 + Process + + + + 手动清理 + Manual Cleanup + + + + yyyy/M/d hh:mm:ss + MM/dd/yyyy hh:mm:ss + + + + 清理表空间 + Clean Table Space + + + + 产品 + Product + + + + 项目 + Project + + + + 开始部署 + Start Deployment + + + + + 数据库管理 + Database Management + + + + 数据库表 + Database Tables + + + + 厂站复用 + Station Reuse + + + + 厂站合并 + Station Merge + + + 数据合并 + Data Merge + + + + 步骤1:选择源数据库 + step 1:choose source database + + + + + 数据服务 + data services + + + + 步骤2:选择目标数据库 + step2: choose target database + + + + 步骤3:选择源位置 + step3: choose src location + + + + 步骤5:配置和执行 + step 5" config and execute + + + 步骤3:选择位置 + step 3: choose location + + + + + 位置 + location + + + + 步骤4:选择专业 + step4: choose applicaiton + + + + 专业 + applicaiton + + + 步骤5:执行 + step5: execute + + + + 执行 + execute + + + + 步骤5:选择目标位置 + step 5: choose destination location + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 提示 + notification + + + + + + + + + 错误 + error + + + 文件 + file + + + 帮助 + help + + + 工程管理工具 + Project Management + + + + msgtab + msgtab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 警告 + warning + + + + + 正在执行操作,请勿重新连接! + Operation in progress, do not reconnect! + + + + 新建备份 + new backup + + + + 输入备份名: + import the name of backup: + + + + 恢复提醒 + notification + + + + 请确认连接的数据库所配置的所有系统已经离线,本工具只支持离线恢复,是否继续 + please check if the system is offline, continue + + + + + + 备份失败! + Backup failed! + + + + + + 备份完成! + The backup is complete! + + + + + + + 请在备份记录中选择一项备份的工程! + Please select a backup project in the backup record! + + + + + + 恢复失败! + Recovery failed! + + + + + + 恢复成功! + Restored successfully! + + + + 升级提醒 + notification + + + 升级操作将会对当前工程数据和数据库进线覆盖,请确认是否继续? + the upgrade operation will overwrite current data and database, continue? + + + + + 升级失败! + Upgrade failed! + + + + + 升级成功! + ugrade successed! + + + rqeh6000_table_struct.xml不存在 + rqeh6000_table_struct.xml does not exist + + + rqeh6000_func.sql不存在! + rqeh6000_func.sql does not exist! + + + + 请添加一个数据服务配置 + Please add a data service configuration + + + + 文件内容不是xml格式 + File content is not in xml format + + + + 打开配置文件 + Open configuration file + + + + 失败 + fail + + + + 连接数据服务 + connect database service + + + + 断开数据服务 + disconnect database service + + + + 修改数据服务配置 + modify config + + + + 删除数据服务配置 + delete config + + + + 新建influxDB用户 + Create a new influxDB user + + + + 导入基础数据 + import basic data + + + + 更新数据库结构 + update database structure + + + + 执行SQL脚本 + execute sql script + + + + 删除数据库 + delete database + + + + 数据库脚本管理 + Database script management + + + 创建触发器 + Create trigger + + + + 删除触发器 + delete trigger + + + + 更新触发器 + update trigger + + + + + 未知的节点类型 + Unknown node type + + + + 增加数据服务配置 + add database service config + + + + 连接数据库服务%1成功 + Connecting to Database Service %1 Successfully + + + + 连接数据库服务%1失败 + fail to connect database service %1 + + + + 未知的数据库服务类型 + Unknown database service type + + + 输入备份工程名: + Enter the backup project name: + + + + 断开数据库服务成功 + Successfully disconnected from the database service + + + 增加数据配置 + Add data configuration + + + + 修改配置需要断开数据库连接,是否断开? + Modifying the configuration requires disconnecting the database connection, would you like to disconnect? + + + + 修改数据配置 + Modify data configuration + + + + 请先断开数据服务 + Please disconnect the data service first + + + + 导入基础数据将会清空原来表中的数据,是否导入? + Importing basic data will clear the data in the original table, would you like to proceed? + + + + 选择一个或多个文件 + Select one or more files + + + + 无法打开基础数据路径! + Cannot open the basic data path! + + + + + + + + 获取数据库操作对象失败 + Failed to obtain the database operation object + + + + 升级数据库将会修改表结构,确认升级? + Upgrading the database will modify the table structure, confirm the upgrade? + + + + + + + 数据库选择错误 + Database selection error + + + + 更新数据库结构失败 + Failed to update the database structure + + + + 更新数据库结构完成 + Database structure update completed + + + + 创建触发器完成 + Trigger creation completed + + + + 创建触发器失败 + Trigger creation failed + + + + 确认删除数据库? + Are you sure you want to delete the database? + + + + 请再次确认删除数据库? + Are you sure you want to delete the database? Please confirm again? + + + + 数据库删除成功! + database has been deleted! + + + + 数据库删除失败! + database delete faild! + + + + Open File + Open File + + + + Sql (*.sql) + SQL Files (*.sql) + + + + 开始初始化完整工程 + Starting full project initialization + + + + 表描述 + Table Description + + + + iscs6000_table_struct.xml读取失败 + iscs6000_table_struct.xml read faild + + + + yyyy-MM-dd hh:mm:ss + yyyy-MM-dd hh:mm:ss + + + + 检测到正在进行跨数据库恢复备份, +将只升级数据库和导入数据, +是否继续? + A cross-database recovery backup is in progress. +Only the database will be upgraded and data will be imported, +Do you want to continue? + + + + 保存配置文件失败 + Failed to save the configuration file + + + + 未选择源车站 + No source station selected + + + + 未选择源专业 + No source profession selected + + + + 未选择目标车站 + No target station selected + + + + 用户创建失败 + User creation failed + + + + 用户创建成功 + User creation was successful + + + + 已有同名数据库,创建失败 + A database with the same name already exists, creation failed + + + + 数据库名不能为汉字 + The database name cannot be in Chinese characters + + + + 数据库名不能以数字开头 + The database name cannot start with a number + + + + 数据库名不能包含中划线 + The database name cannot contain a hyphen + + + + 数据库创建失败 + Database creation failed + + + + 无法切换到数据库 + Unable to switch to the database + + + + 模式创建失败 + Schema creation failed + + + + 部署提醒 + Deployment Reminder + + + + 请确认连接的数据库所配 +置的所有系统已经离线,所 +部署的数据库将无法恢复, +请注意备份,是否继续? + Please confirm that the connected database is configured +All the systems installed have been taken offline. +The deployed database will not be recoverable, +Please pay attention to backup, do you want to continue? + + + 请确认连接的数据库所配置的所有系统已经离线, +所部署的数据库将无法恢复,请注意备份, +是否继续? + Please confirm that all systems configured with the connected database are offline, +the deployed database cannot be recovered, please ensure you have a backup, +do you want to continue? + + + + + 新建数据库 + Create New Database + + + + + + 名称 + Name + + + + 数据库类型 + Database Type + + + + IP地址 + IP Address + + + + 端口号 + Port Number + + + + 用户名 + Username + + + + 密码 + Password + + + + 表名 + Table Name + + + + 行数 + Row Count + + + + 表备注 + 参数表 + Table Comments + + + + 表空间 + 非临时表 + Table Space + + + + 表属性 + Table Attributes + + + rqeh6000_table_struct.xml读取失败 + Failed to read rqeh6000_table_struct.xml + + + + 配置文件节点为空! + The configuration file node is empty! + + + + 升级操作将会对当前工程数据和数据库进行覆盖,请确认是否继续? + The upgrade operation will overwrite the current project data and database, please confirm if you want to continue? + + + + 增加数据库配置 + Add Database Configuration + + + + 请确保源数据库和目标数据库的所有表结构一致,否则会出错! + Please ensure that all table structures in the source and target databases are consistent, otherwise an error will occur! + + + + 未选择源数据服务 + No source data service selected + + + + 未选择源数据库 + The source database was not selected + + + + 未选择目标数据服务 + Target data service not selected + + + + 未选择目标数据库 + Target database not selected + + + + 源数据服务未连接 + The source data service is not connected + + + + 目标数据服务未连接 + Target data service is not connected + + + + 源和目标不能相同 + The source and target cannot be the same + + + 未选择车站 + No station selected + + + 未选择专业 + No major selected + + + + 专业ID不正确,ID值: + Professional ID is incorrect, ID value: + + + + 请先连接数据服务 + Please connect to the data service first + + + + 数据库名: + databaseName: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 提醒 + alert + + + + + 请先连接数据库 + please connect to database first + + + + + yyyy年M月d日h时m分s秒 + yyyy,M,d,h,m,s + + + + 请选择备份 + please choose backup + + + + 请确认是否删除备份 + please ensure that whether to delete backup + + + + 对象信息 + object info + + + + + 值 + value + + + + 备份名称 + backup name + + + + 路径 + path + + + + 来源数据库 + source database + + + + 来源主机地址 + source address + + + + 备注 + comment + + + + 转储截止日期 + enddate of dump + + + + 备份内容 + 部分备份信息 + partial backup info + + + + 显示对象信息 + display object info + + + + + 重命名 + rename + + + + + 修改备注 + modify comment + + + + 显示备份所在文件夹 + show containing folder + + + + 刷新 + refresh + + + + 是否删除备份 + Whether to delete backups + + + + 请先选择备份对象 + please choose backup object + + + + 重命名备份: + renanme backup: + + + + 修改备份备注: + modify backup comment: + + + + 表空间优化已完成 + optimize tablespace done + + + + 表空间优化失败 + fail to optimize tablespace + + + + 清理全部历史数据已完成 + clean all historical event and sample points done + + + + 清理全部历史数据失败 + fail to clean all historical data + + + + 清理历史数据已完成 + clean historical data done + + + + 清理历史数据失败 + fail to clean historical data + + + + 请确认是否删除? + please whether to delete? + + + + 表 + Table + + + + 删除失败: + Deletion failed: + + + + 清空表: + Clear table: + + + + + + + 配置文件不存在,请导出 + The configuration file does not exist, please export it + + + + 服务已开启 + The service has been started + + + + 服务开启失败 + Failed to start the service + + + + 服务已启动 + The service has been launched + + + + 服务已关闭 + The service has been stopped + + + + 服务关闭失败 + Failed to stop the service + + + + 关闭服务成功 + Successfully closed the service + + + + 设置可执行权限失败! + Failed to set executable permissions! + + + + 文件不存在! + The file does not exist! + + + + 服务配置文件不可写,请确认是否具有权限!请以root用户打开db_manager程序, + The service configuration file is not writable, please confirm if you have the necessary permissions! Please run the db_manager program as the root user, + + + + 写入服务配置文件失败! + Failed to write to the service configuration file! + + + + 设置服务开机自启动失败! + Failed to set the service to start automatically on boot! + + + + 服务已注册并设置自启动 + The service has been registered and set to start automatically + + + + 服务已关闭自启动 + The service has been set not to start automatically + + + + 服务关闭自启动失败 + Failed to disable automatic start for the service + + + + + 开 + start + + + + + 关 + close + + + + + 开启 + open + + + diff --git a/resource/en/db_manager_api/en.qm b/resource/en/db_manager_api/en.qm new file mode 100644 index 0000000000000000000000000000000000000000..22d23380d812d20d7bc67b61340760d3e56af4b7 GIT binary patch literal 28021 zcmdU134B%MmH%E=@{*TCHrX0pWDy~TMWi&vK-dI|>?*inmInqx5|W_6j1CA$kS!De zK_ns~hyqe+!LZdjw*ES8ZO3ukrgqDHN!qG_cIwoHIp?1HE%)B--aZkt5wJ+ISR@}%$Kn};$squ5t#zHhnj$gA5x4|n>W|2BN?*5A>3PZ6ypH~3z9 z^Uom98s9H(h4r=*w9e0`HI(do=Nh1UeRtob6(>NBoVcVop!@BQ;yT=aiLrz`#x;Dk4EA3a_u5;q{|yJ?{?Hfn_T5u)&DX%|*$K4Xae>yt+v8fk4|4QA9QR2g z{Qi48<5MmJe(1C8_HPUdGYm^ zbK(3i$A7u|4#uwiw}kkMK(Etn38}NsGuEvr;agYof&TP_eya|H-nu7@81N8dne!6z zN5JQ&W+hDY!MP2oOPJgzow1yPgwpqbpMvuVi!WYbY-mQp z>EEXx9)lzj77tDC_zB28X;gCO)zcX3*eSXD7yICR zf0f+h+qc3wd`atFqiHRgm7G<35%gN0oO2iGX?%5Z!4E(#wmkWR-^1$vtV6;VU>CWc zcj#O7Yp}<6I}H3}I%9*kc6fJxIoNYWhl_(ipWnJECHPnX^*pv>>pWh4EX)bpSLw1^qT9R zd>;1A+u$$!5bUadUw_5XBM?{W{8ibo-?hE{kJeoU_WnEnOQ)U%dwAdf+9aSKyvP5^ zE5P@ZWdGkQKY-6?`oCHL{A3OCUr7pse==I{osk-NBOBiLU}_K39)6NK>`pkZ_z6a; zdoL|*!9K>Wej%;%z}Fz|Oit@D1lEF-v_q9M!Jpnq`$a17Km8=Fw};aH)VC4z|C_W= zFV}&c+>rKV;5XoB4+T=!RKOafb>5wU?Drv_bb33`XF~(%u{kjEkC_l(ei0}r27O+& zIjSHM>e1);@D*``5`@j3G z!0Ufr3I6bW;LQgLzz^yIA9h21yqKOe>^;VA+?^f>!u~hTN$+@dF4)Ji^o~LJ{IoC9 zyRP{=_{Gxnu20T|_09CFKZbp-nUUV>R`}fTx#|5syaap}rQh)5)u5jR=_^Np{8K(k z-!&C}esyO02cv=iaU;?%ebgK5Z)Ex><#5iU4yS)vuodFafb_2h1HIX6X}$ARS_|LF zVDX?=u%y(Ze*=ETWb~hy2XXC4#;~l#5J#@c$UF8C#M`QjF<<_WvC$JUCVUF?ZvNMd z86B3w`zB<}&WG1?k7V541oC&Cl2QIC=zH`}GtTw&!RsR#e;NG{V|R|q_~@Miu+J?S zmwyUtL1o5&CxLw9{H2U77#60D`O#6(gB%Dg1^Z@>qUH|Dl(9%0Wwa~6WDT7v@-Y&XD?e2?h1sP_N<+-yv!nODl7Zz5G>N@ zLlW#x1Z~1brrC>)2eI&Mf~*|=h58JEP^Ivb8X-tZ%(9Uz(iCFoTPIeQ#!XEYS?|i zq_jdZl#pHzmN_(%W9v3!_hAZ35e!TdlRVX`lB{MqAV1neu|u&v9V|2*-4Io` zi`Zn)XesPg3U*co|6geuHn*n=h?Y`#r*#D(0#vLX$j zlTm9D+PS{*%#Wg+eo!OI0?=a_gcH-tg%xMocYQhNWy9sIVBT)SgE7pSagL%H9VsTu z5{PRU=?0rAv)nvlG7Ks9Kw?nX{a}pI4weUDW+!@l!`AT81CY?0 zFYF6%IT$`Fz0}LfGi{p4V?jZ$1JTR#bdWTNbON!7k0lWh^P)E~f}N-UkaVLWF&-f7 z_R@pMg_akG%3?H{u`1u@F=9m4VK8^xb)wLo7VK1kXfz0#Z&Nusgd2i7i~#uK;!7j% zMYKgACh?rrdNn;GGG$SBlcMfsx z18tSVdoi8cnd_?_lwdBreRJcvy~fsq;rg`^7%hpBQI06w%&H{^rsyiO%&4)FvYpjz zEvo?Vo6c+x?~BAIhPc?QJXRE{ShvW>fJGzdYOE&@v7i9ECWLp{@IVCO3p|N018boi ziEKzL&^AZ4d3{sEAz@Xq9Mu?4PSsqbPY!k^^|Z`|x)4e_h@huAF;eFS?JNQ~>fpsf zB#xB2AOc6;`XE2Yf|zsTJTp6W%V@$Iwu55CnM5Ex+*27ScBR!appwy@3p=s@(3h@bpyiIv5&&Gvx(XR;}Bt;MJbJsQuP zF&^D-Y&+L@<{1lz<c6K|@0Fps?sbT87W!>hc zbH`MzdwSGB=qHhna+Bjkun<}RinMynYIU#rY822qB;x+ES%`jxePtnn}-cbKYerf2dgpri5qO=?dmiu2_Fx8%Nv_OVpPkiHoHR)A?CBEUvl6{JmY z9udI1g!dk4f*!?FXN|L4;kty3-YW_YVYfQ=)Sb!-Gq2gxV^5-k6zCeLVSCewGseD+ z5v*eon+hBk1HbO}tPThS+4ZKBGK}$}y&5!ttzPUGxkH3{2K~c(UoiH*2rXJd5Z4>E z>%*I$7EDJugjH?EvOVb`;z32o;tl;zIZzM}Q;9VC>)e9iB~0Tv%odFo_J>y=k0Q%I zx05UwhtUX80&LqwmP2zO=4DcSeM~~^Z6_fL!Nw7Y;^nA%EPA_)CgfoKVHpjNH9dBi z3^68YtJ+Cgx0hp7L0P52<>+M)p40s3!%Yvr9L44;+erYlH*|hH2uvz&_C5S1yte`F zwAzvP))|r>qxEsAUNM{~8vnlqS+_yx4PVc%%csf2g{eeg*>7f{m2jAqB9A3CA39)c z+31zHu#u?0s-`q)Zf2$}Oxn)U84Gx{pT+Qhy#BPOwk#rTald6_)7j^YP3xl8fB66v z)y5Ll2y%?V8wlFTcawO5?%|@LJ->Oojxx&fD5d$-apU~j2=(L;^XAT3d+V9BGniqW zZZy6IGQV=)jb4haOaxFEU_+wb&traZ>{t1%tKZ{Cp)U#S`_TfDU>c^Pvc{Z(=>@w^ z07c_%EnWc807JEzEv5YF{+7pfHy=N4Y^gV%c*?8-)lCMPwWSkJVK70nUv8QVp&q&A z)esO7S^?x~I{CD5b_d}d*WTknvD4Wtrl@$sizOPiHK@74Q5)|e;mssnIO|=j=lJQj z1gk?e<0{H)Lgh7$4Tp^Fs}+AzrJ5R*vWldr0l-}Y4FQjZLlBt<92^)gzhrDxFG5ug zI>XV(86FG2io;EvAa9GD$2uM~U&Q8{K%(4o%PM${L_Ycp43WJ7`foDzXyLp}2bkHBX8!JOT>}3b} zycr{7NEhfhG_N^FF^)eqRHVlc+@-6)V2*l@3A#udbt~l_TG!iPA(W0c7$4B{KK+}x(AD`Vs zcB+YcqdZK9Lq?ukq!-ao?C_LJcJA4x=XZPRaFUW>xmUQOA2v{N)P|>blM={35sc0` zz73M%MJ8?r0rVelHZ;DP&uGD6@NF9#hZL9c{{!{%j&~r9Yu| z9wk&G>_m+MobB({I08g7+r&Z?{p&n2R`PmndorL`^;E4h*zaa!4?&ndxB;53eU?Q6 zudZ}gBd>1c-Gr+AxzPJ?&Sr4*sv}^(8jIxutha*^f}P&*>yCEfNS$#EM&^lTA5}H! z$LGAyNNvQZ*8%)gG{fyGxhkzm$a!MC$de}FZl1XfgQBZ9l9q-uz<6eDQ{5v1lF-}} z-3`;(Q5=XiK7 zacW9l=AvdG%ZhxGMMIYAZLKQ2Gob}-v!y(tOJ9{@_-SMCOP3^dw#Jewf!xq;Sg7P^ z`HLQNaAFJo@Plk*;XaPWn9#;|EvC8I{%O@}^(GNt(tP^*2B>;+40CBVduT2xaq z!3$y>guw=Bd&^3=N!s|(Smog}y)I)P4oS;d0NAH#oheHlPw0yDl_^?EQ7$4q%yyO> z(6x*d6esN|!`jLmoYy$hB6GxDZLLwW!ak1IwjsZt)uc101w;ml7WmcqNfiuosfLg`t&h!BEI@0ZA;iV;N~TI#1|glN zS{ZbETVkGG*YuoxfB?b+K@FE;r@%w-_$(`R;5c=sGFw-k^$aUYj#3y*{hIXk#etp! zePwWmmIJO4N}UoE@`ub?r;%(+BT9UXqL;hcm@B=WBJriy)+ihPL~F#R0%B09F$tRO z&LXX}E9pZxhzHo6q*a1_)7BkCmXk2Y9{RR{-aBGtK(BL87W4|w)he71JL8uH(EW@P zTX&(UNQd+d}l);yPReI?Q_LbtYghyD}fhN}RQAGP(7d`Qg)bL?cJ6-N4Qf#mI zE`4N>C=Tfn9vI3rwjOZIl6yGLETIj_x2%(7-q2+p{WH;$uik<$kyXNGw(-E%ezO$8 z=BhNGWU@(D*@E{rd>j%D!+GK8hWqyP+lBVE?jE^sJL||X<|v8;c@)F!w?p(Zk5dvQ zTetA8r@}AopxYv&R!*xrNe+*Jq|?-@1(_}?8KM5zXvjXgI+rVqLD0zHG|U@={pQzJ zs5m;Pl|bnxi=EQ=PS_xHGMO7~8}J;#oMJJV>ZZE7ex!C|nYiuU95kdd=yxw+<$`an z0kbn>)b4V!KB83=gb@1uK?LXiy|nvVAw%q9X_w-Fa|=C-6>xus>>#>Rb2Ik<>6ez4 zo41@Yw(itvInRSf9RY_u3kfW1Mk42Td0O){EhTDpspDRFlF^>VP`i>n$dHURqSjTpB@89=AxacAEw3VKwZ-IV%M6=QsNCr zZFz=}H4Qd^fJ5v!tpUG=fj4T^o)l8`=+=&b6!Y@}ayUiY(4ge#jr^0b7dO8B1DnK$K zx`K8kx0zyNVA!bJ>^hEFE?mbq=9zvOY=~1QrmvXtNc4zgo!=%PiT6a}=H)&(5Vbx@ zu#eBKcAjZ@tNFmkzEKTDz#R@5dQTnL@vr@fEgg?0O49H++%jDr#<@oDVG?Ovq!Es5 zJ+wg~mr|C7lD?)a1UJFRDlLlI@OHzM6nmlmPr);SPmxtcG}s~H0Pq1S4B6Oz2|}-& z)QorF2#$H@UXtn3ymk*vZZ}`3GasSER=h@}9_(iLG~J@pgQ&t{h1aKuH0v}Ezw}@6 z?s!ckOq1_Zpi%<7(}k=@n%|s+*#ZY&Y3>S#&m41B;&Dt194Xs&r-3V)l%ugLob#yN z<)T&P_`(&#nXl;BM?N;e6Sr(ON+!CiNQmZz8c#Ps3(=*d@n4&&4UKuxb)&KV zY!+w~tLvqJ%1S}sQ3{%t^_$@VLQf~d$@K}s!DS=Gog5W>?5A5dTel;F2G{2=E-hb( z51pD5?3to5V^y@mLQ`hLaIATeg!ZTX@PJk`){*#vZV!b$>yAph`$!S{Wc9|8L8Ql7 zrM18?AJ%pXeAN;fW4o_K^P_0P{fA;ZMh0%0INgWO`cSTs1a05OWA(Fmb#GdzmVO?b z0ft@r&Pz3hcym(icus`hZ<(Qke3a;0C|OH5TF*;mMJPcSh|=>~chC~ngs7hOqOZ!F z4GrxVA_%J9JqE3aIok4!=WMJE6v!)xSS7ZVrm4i%Zr|73UVRQ$8Vz2P;P>K4x9ln& z+Mp9s9@^0E-q{AJ2?EO99Kc$;!!Yn6;vxvOh}YD%zW(S$>@{A%X>A4jwlAS*&f0O! zsoDQI?Yld27aAM?IB)3Yeph;kW9vyl)GAu*4>li%OEmlz+el%i13Wf>ekR8~0K#nY zwBaaNMys6v2MOEF_Z9e0XjbzGQ<{}dmaKrMD9l{amJeaLcOL+cF}2Qs11{6m?b_Ph z>XE|STjyG%j2K1n=?R375g@J5HB7I1JUZZ}agP=X%6zFp50CbM38kqCV;|B|i+F3E z*K@|-%~^Y7Z#R{1Fm=0$VumK+hkGQE$)P`TI_~`CEWOfat z8|Xu@gmlpWjGKcfaK!zAHY+DHt^8k687f~`xU9OmRrRF)(`{Bz>bGx?oTR7p4dx|1 z1K&hVsi)kIMWq)(U8~n#Rr1`&Q*bPI)_Q7fmlE{*w^>@yZ{Mn5uHT|P0(v`BQi8ai z($}df^*ef(mHPKb3FP_@#q!nX9Tt?9g~T^j^f23^_)VG|v2rjdvrs_&zC5#QF88Q~ JUSOQh_rI)+%<2FD literal 0 HcmV?d00001 diff --git a/resource/en/debug_tool/image/check.png b/resource/en/debug_tool/image/check.png new file mode 100644 index 0000000000000000000000000000000000000000..d75615e3a6f6ebeff680ce3babf8e6126f3fb77c GIT binary patch literal 651 zcmV;60(AX}P)1vF@0>e2rZZTX8nq~d0-?;1ECi`dWJy{SA{4YKBKlbrMLz^l^aI&KYEzpQ z6|;zJVVOmtP+%#6AZ0BgC`vL%z1^9)efH%hnB7Eyb(9AHR-vv6NC zNzW~fWCnCx$#?>cq~vHcOQ7RPx(8i42OOHJ1Xmv0nJe^_z5M8Lp*=}B7tU@ls?MTu&;36dm z4HCAbB%*R)gU-fs4WUhcw6s7U@?ps1Y+I84FD`g6FJEC#jZWjL0C~aG4oD01_u+cb zHRy1$J&BQk?W+a5*9i*q(l^q7fj-ptT-#fRF;mh|8DOS1ngph+FMo7@cbC^)EVXhL*<)NZ&7yKK&Z0sT$siSSp)|_^7ZOnr5+supnTsHM(4tyI z4-3LF&?sBf!UrKi=7{*njEr)~$2|Y%jsG7l6^rVuF5G+0{m%CwEUALPe72(VzAQT` zGE!-`$irz|D;lQ4arQbCM?0U;d*7ZcLV8<7Rxb|(93KE;wAh?sW9N$9d_|2{usa_S|gK)Q3!J~c^p$LPfClT-*kex<2SRmj~ zp=cs$d@4;0er89hs5yGmUntg8dxeyqF%8X~GNxvAh&+K?U`S^MkqpjE4k!0n;B)bK z_(qN2?pE$oc}r}#vC@*iaVm#8&r+qc&ilouK`#6HpnW&i3f@Kye}&SmFX$8$I838ulCO=fFCq~1uW436=4rw<;~2iu3rCA9~@g| UI{&Xswg3PC07*qoM6N<$f`#8!VE_OC literal 0 HcmV?d00001 diff --git a/resource/en/debug_tool/image/search.png b/resource/en/debug_tool/image/search.png new file mode 100644 index 0000000000000000000000000000000000000000..05160b8a2c19be05d79da83f5b64029fbe0e350d GIT binary patch literal 768 zcmV+b1ONPqP)7i3n2uBA_%&R2!-+@@FH(2E$!^xTtRqKU1TAB z5Zwq}bk{|wSrM7%EV~gy$s~xtKGt?7CfobOW?OSwx^s8V^Sr-v{^#X+2|3qR`OW1L z>rM&AaS-hUxG>qmz$}4YfpOdLIiBRMOW#v=q1ta9B*I++HZjNo_zf{;SfGFyl??1A zKmd3~LNt$d6@AKuGoaTWI}PGn4EzA&vYmhRjmXkS_5!b*FK1igA~Clx<1<(_n9?dvXeM&KWP6lilSH&Jz7XFt z7A&6pAC|6p{8k$gt}$@K)U~z@==EDoAUpu5)6gAP)`DfwfMozwl~4<1V{$_{`JB9g z=wm<}o>TF%aasI5AF#%6o#e$$Y#Pr3d?MS|0rDUy0#KH{po4R%)9eEavcZSc|m@l~ZLZnm`idlf}8M>q84;Xt5@D@YY z%JK!>!RP^-qG7N)Z}?n2i=aOm1W~6_+z^t^!F*6pz`9Pr8B%bMN^L9!)&%D^vr^Mw z8Zms1y0wB{87^mG9|!YW)92j3WR^YB>LG!%%(!a$w2sx#TFI`sh&?A@heCW`NG~y$ z9uAW29ua#j7hD}$@; yN><%1!(N-P4*+nj7 s)9R72Y7#sMQ1myor6p_ljSR;C0000)EuJ+$J=x zTemL6u;}}{yF828g2bjQPV|WU(OA;o_Ao;8B9Q$56v-ap8OQ0bP Mp00i_>zopr0O-#puK)l5 literal 0 HcmV?d00001 diff --git a/resource/en/debug_tool/image/uncheck1.png b/resource/en/debug_tool/image/uncheck1.png new file mode 100644 index 0000000000000000000000000000000000000000..31eb83b1bc81b40bc4c4dced8643a3d80d4893c7 GIT binary patch literal 432 zcmV;h0Z;ykP) z?KbE8ev{)kDVNJdL{WrfG8xG8`5dOxDU3#=PuF#g#bTkVs_HT=05lp6UJ!))OeS+) zDwQA}kFOUN#GdCtzuyPjwjUhFxnPh0KnT&(>9ky_Q~>d}sErUxDfD_hm`o-_mSqK5 z&w?O4)oQiKw#@4!R!OJRVeOnTfL1IPuL_02#*EuGhr=NZ27?<0c&%2eC#h6wC%|kr zgKoF`hJ=v!dcA%WjYf9@tX3;%wOSvC0}gKCkVmvE>lO{e$n!k^xc4{iGf1Xs!gxGp zzL5WCltX@KCK8FuY&N^qOv~l+&T*XUKV}LKfTn5rSS%({O3R2C*qKslBch3jh9pVP a;qzauuGx`KP?Sdi0000h9|9 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 literal 0 HcmV?d00001 diff --git a/resource/en/debug_tool/translate/en.ts b/resource/en/debug_tool/translate/en.ts new file mode 100644 index 00000000..010f76c4 --- /dev/null +++ b/resource/en/debug_tool/translate/en.ts @@ -0,0 +1,5344 @@ + + + + + AiMonDlg + + + Dialog + Dialog + + + + RTU刷新 + RTU refresh + + + 点配置刷新 + Point refresh + + + + + 数据刷新 + Data refresh + + + 全部 + All + + + 区间 + Interval + + + -- + -- + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + RTU名称 + RTU name + + + + 点号 + Point number + + + + 标签名 + Tag name + + + + 设备 + Device + + + + 点描述 + Point desc + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 后台标签 + Background Label + + + + 远动号 + Remote Control Number + + + + 时间 + Time + + + + 前置设备 + Front-end Equipment + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + 区域start数据非法或为负,默认为0! + The area start data is illegal or negative, the default is 0! + + + 区域end数据非法或为负,默认为0! + The area end data is illegal or negative, the default is 0! + + + 区域start 大于 区域end点数,两者默认为0! + The area start is greater than the area end points, both of which default to 0! + + + + + 停止刷新 + Stop refresh + + + + CCheckUser + + 账号 + Account + + + 姓名 + Name + + + 用户组 + User group + + + 密码 + Password + + + 验证 + Validation + + + 取消 + Cancel + + + 权限验证 + Permission to verify + + + 提示 + Prompt + + + 请输入正确的账号 + Please enter the correct account + + + 账号不能为空 + Account can not be empty + + + 账号不存在 + Account does not exist + + + 权限接口错误 + Permission interface error + + + 密码错误 + wrong password + + + + CCommTool + + + Form + Form + + + + 通讯调试工具: + Communication debugging tools: + + + + MQTT工具 + MQTT Tools + + + + CDebugTool + + CDebugTool + CDebugTool + + + 事件信息 + Event Information + + + 实时数据 + Real data + + + 测点选择 + Point selection + + + 测点监控 + Point monitoring + + + 实时库表 + Rtdb table + + + 表选择 + Table selection + + + 表内容 + Table contents + + + 筛选向导 + Screening Wizard + + + 实时报警 + Real-time alarm + + + 实时事件 + Real-time events + + + 历史事件 + Historical events + + + 节点状态 + Node status + + + 前置通道 + Fes channel + + + 前置数据 + Fes data + + + 工程调试工具 + Engineering debugging tools + + + + CEventDataCollect + + + + + + + + + + 错误 + Error + + + + + + + + + + + 打开数据库失败 + Failed to open the database + + + + 其他 + Other + + + + CEventFilterDialog + + + 过滤 + Filter + + + + 时间 + Time + + + + 开始时间 + Start Time + + + + + yyyy/MM/dd hh:mm + yyyy/MM/dd hh:mm + + + + 结束时间 + End Time + + + + 优先级 + Priority + + + + + + + 全选 + Select all + + + + 位置 + Location + + + + 责任区 + Responsibility Zone + + + + 事件状态 + Event Status + + + + 确定 + Confirm + + + + 取消 + Cancel + + + + 设备类型 + Device Type + + + + 事件内容关键字 + Event Content Keywords + + + + 复归 + Reset + + + + 已复归 + Reset Done + + + + 未复归 + Not Reset + + + + CEventFormShow + + + Form + Form + + + + CEventItemModel + + + 时间 + Time + + + + 优先级 + Priority + + + + 位置 + Location + + + + 责任区 + Responsible Area + + + + 事件类型 + Event Type + + + + 事件状态 + Event Status + + + + 复归状态 + Restoration Status + + + + 事件内容 + Event Details + + + + 未复归 + Not Restored + + + + 已复归 + Restored + + + + CFesChanData + + + Form + Form + + + + CFesChannel + + 专业通道 + Sub channel + + + 专业 + Sub + + + 通道 + Channel + + + 通道状态 + Channel status + + + + CFesCtrlSim + + + Form + Form + + + + 模拟量控制 + Analog Control + + + + 数字量控制 + Digital Control + + + + 混合量控制 + Hybrid Control + + + + 自定义控制 + Custom Control + + + + CFesData + + + Form + Form + + + 专业选择 + Sub choice + + + 通讯状态: + Communication status: + + + + 模拟量 + Analog + + + + 数字量 + Digital + + + + 累积量 + Accuml + + + + 混合量 + Mix + + + 通讯中断 + Disconnect + + + 告警 + Alarm + + + 获取进程所在目录失败 + Failed to get the directory where the process is located + + + SYS_MODEL_APP_INFO.xml 配置文件无法打开! + SYS_MODEL_APP_INFO.xml, The configuration file cannot be opened! + + + 通信连接 + Connection + + + 通信中断 + Disconnect + + + + CFesDataSim + + + Form + Form + + + + 模拟量仿真 + Analog Simulation + + + + 数字量仿真 + Digital Simulation + + + + 累积量仿真 + Accumulated Quantity Simulation + + + + 混合量仿真 + Mixed Quantity Simulation + + + + 事件仿真 + Event Simulation + + + + CFesEvent + + + Form + Form + + + + SOE事件 + SOE Event + + + + 通道事件 + Channel Event + + + + SOE内存 + SOE Memory + + + + CFesForwardData + + + Form + Form + + + + 模拟量 + Analog + + + + 单点数字量 + Single Point Digital + + + + 双点数字量 + Dual Point Digital + + + + 累积量 + Accuml + + + + 混合量 + Mix + + + + CFesParamShow + + + Form + Form + + + + 通道参数 + Channel Parameters + + + + RTU参数 + RTU Parameters + + + + CFessim + + + Form + Form + + + + 通讯状态 + Communication Status + + + + 前置数据 + Pre-stage Data + + + + 数据仿真 + Data Simulation + + + + 控制仿真 + Control Simulation + + + + 事件监视 + Event Monitoring + + + + 转发数据 + Forward Data + + + + 通道报文 + Channel Message + + + + 61850工具 + 61850 Tools + + + + 专业名称 + Professional Name + + + + IP地址 + IP Address + + + + 网络端口 + Network Port + + + + 连接/断开 + Connect/Disconnect + + + + 通讯状态: + Communication Status: + + + + + 连接 + Connect + + + + + 通讯断开 + Disconnect + + + + 警告 + Warning + + + + 网络端口错误,无法连接网络 + Network port error, unable to connect to the network + + + + 断开 + Disconnect + + + + 通讯连接 + Communication Connected + + + + CHistoryEvent + + + Form + Form + + + + 查询 + Query + + + + 打印 + Print + + + + 事件条数 + Number of Events + + + + CLoginTool + + 中文 + Chinese + + + 用户 + User + + + 密码 + Password + + + IP地址 + IP address + + + 端口 + Port + + + 数据库类型 + DB type + + + 数据库名称 + DB name + + + 登录 + Login + + + 取消 + Cancel + + + 提示 + prompt + + + 请输入正确的端口号 + Please enter the correct port number + + + 系统初始化失败 + System initialization failed + + + 数据库设置 + DB settings + + + + CMyCalendar + + + Form + Form + + + + 至 + To + + + + 取消 + Cancel + + + + CNodeStatus + + + Form + Form + + + + 关键字 + Keyword + + + + 查找 + Search + + + + 刷新 + Refresh + + + + 全部选中 + Select All + + + + 全部取消 + Deselect All + + + + CRealAlarm + + + Form + + + + + 全部确认 + Confirm all + + + + 当前页确认 + Current page confirm + + + + 所选确认 + Selected confirm + + + + 取消选择 + Cancel selection + + + + 刷新 + Refresh + + + + 停止刷新 + Stop refresh + + + + + 选中条数 + Selected number + + + + 总报警条数 + Total number of alarms + + + + 未确认条数 + Unconfirmed + + + + 级别排序 + Rank order + + + + 滚动刷新 + Rolling refresh + + + + 状态筛选 + Status filtering + + + + 当前报警条数 + Number of current alarms + + + 报警类型 + Alarm type + + + 报警状态 + Alarm status + + + 时标 + Time + + + 域ID + Domain ID + + + 位置ID + location ID + + + 报警内容 + Alarm content + + + 报警优先级id + Alarm priority id + + + 设备类型ID + Device type ID + + + 责任区ID + Responsibility area ID + + + 测点ID + Point ID + + + 设备 + Device + + + + CRealDataControl + + + Form + Form + + + + 控制测点: + Control Points: + + + + 命令类型: + Command Type: + + + + 其他参数: + Other Parameters: + + + + 控制数值: + Control Value: + + + + 执行命令 + Execute Command + + + + 状态查询 + Status Inquiry + + + + 执行状态 + Execution Status + + + + 反馈结果 + Feedback Result + + + + 设置AI限值 + Set AI limits + + + + + + + 服务点禁止刷新报文 + Service point forbids refresh message + + + 服务点禁止报警报文 + Service point prohibits alarm message + + + + + + 服务点禁止告警报文 + Service Point Prohibition Alarm Message + + + + + + + 人工置数报文 + Manual Set Message + + + + + + 遥控请求 + Remote Control Request + + + + + + 遥控选择 + Remote Control Selection + + + + + + 遥控执行 + Remote execution + + + + + + 遥控取消 + Remote cancel + + + + + + 遥控关闭 + Remote shutdown + + + + + 提示 + prompt + + + + + 请输入正确的数值 + Please enter the correct value + + + + + + + 等待返回结果中。。。。 + Waiting for results. . . . + + + + 程序猿还在写 + Program ape is still writing + + + + + + 远程查询实时数据库失败 + Remote query of real-time database failed + + + + 未查询到测点 + No query points found + + + + 限值 + Limit + + + + + 禁止刷新:未设置 + + Disable refresh: not set + + + + + + 禁止告警:未设置 + + Prohibit Alarm: Not Set + + + + + 禁止刷新:已设置 + + Do Not Refresh: Set + + + + + 禁止告警:已设置 + + Do Not Alert: Set + + + + 禁止告警:未设置 + Prohibit Alarm: Not Set + + + 禁止告警:已设置 + Prohibit Alarm: Set + + + 禁止报警:未设置 + Disable alarm: not set + + + + + 人工置数:未设置 + Manual Setting: Not Set + + + 禁止刷新:已设置 + Prohibit Refresh: Set + + + 禁止报警:已设置 + Disable alarm: set + + + + 人工置数: + Manual Setting: + + + + 解析返回结果出错 + Error Parsing Return Result + + + + 接受返回结果超时 + Timeout Accepting Return Result + + + + + + + + + 该命令无反馈结果 + No feedback results for this command + + + + + + + 取消 + Cancel + + + + + + + 设置 + Set up + + + + + + + 占用设备 + Occupied equipment + + + + + + + 不占用设备 + No equipment occupied + + + + + 程序猿还没写完 + Program ape has not finished + + + + CRealDataSelect + + + Form + Form + + + + 位置 + Location + + + + 专业 + Specialty + + + + 设备组 + Equipment Group + + + + 查询 + Query + + + 设备 + Device + + + + 测点 + Measurement Point + + + 所有位置 + All Locations + + + 所有专业 + All Specialties + + + 所有设备组 + All Equipment Groups + + + + 请输入描述信息 + Please enter description information + + + + 类型 + Type + + + + + 模拟量 + Analog + + + + + 数字量 + Digital + + + + + 累积量 + Accuml + + + 累计量 + Accuml + + + + + 混合量 + Mix + + + + 常量 + Const + + + + CRealDataWatch + + + Form + + + + 查找 + Search + + + + 测点描述: + Measurement Point Description: + + + + 状态查询 + Status Inquiry + + + + + 全选 + Select All + + + + 模拟量 + Analog Quantity + + + + 数字量 + Digital Quantity + + + + 累积量 + Accumulated Quantity + + + + 混合量 + Mixed Quantity + + + + 启用分页 + Enable Pagination + + + + 上一页 + Previous Page + + + + 下一页 + Next Page + + + + 累加式 + Cumulative + + + 常量 + Constant + + + 测点删除 + Delete Measurement Point + + + Del + Delete + + + 反选 + Invert Selection + + + + 删除 + Delete + + + + 取消选择 + Cancel selection + + + + 请输入描述信息 + Please enter a description + + + + 设备 + Device + + + + 测点 + Point + + + + 位置 + Location + + + + 专业 + Sub + + + + 类型 + Type + + + + 标签 + Tag + + + + 值 + Value + + + + 状态 + Status + + + + 设备组 + Dev group + + + + RTU + RTU + + + + SEQ_NO + SEQ_NO + + + + 是否可控 + Whether controllable + + + + + 提示 + prompt + + + + const类型测点未配置 + Const type measuring point is not configured + + + + + 否 + No + + + + 是 + Yes + + + 所有位置 + All locations + + + 所有专业 + All Subs + + + + 操作 + Operating + + + + 当前未选中任何项! + No items are currently selected! + + + + CRealDatabaseFilter + + 选择字段 + Field + + + 句内条件 + In condition + + + 筛选内容 + Content + + + 句间条件 + Inter condition + + + 添加 + Add + + + 删除 + Delete + + + 执行 + Perform + + + 提示 + Prompt + + + 条件内容为空 + Condition content is empty + + + 列为空 + Column is empty + + + 请选择一个条件行 + Please select a condition line + + + + CRealDatabaseSelect + + + Form + + + + + 位置 + Location + + + + 专业 + Sub + + + + + 表 + Table + + + + 设备组 + Equipment Group + + + + 列 + Column + + + 应用 + Application + + + 表选择 + Table Selection + + + 列选择 + Column Selection + + + + 所有列 + All Columns + + + + 实时数据库选择初始化变量失败 + Initialization of real-time database selection variable failed + + + + 模拟量 + Analog Quantity + + + + 数字量 + Digital Quantity + + + + 累积量 + Accumulative Quantity + + + + 混合量 + Mixed Quantity + + + + CRealDatabaseShow + + + Form + + + + + 设备组 + Dev group + + + + 设备 + Device + + + + RTU + RTU + + + + 前置设备 + Front-end Equipment + + + + 状态查询 + Status Inquiry + + + 专业 + Specialty + + + 设备标签 + Equipment Label + + + 提示 + Hint + + + + + 所有设备 + All Equipment + + + 所有专业 + All Specialties + + + 未知的数据类型 + Unknown Data Type + + + 第 + Incorrect conditional value input in the + + + 行条件数值输入有错 + line + + + + CRealEvent + + + Form + Form + + + + 滚动刷新 + Scroll Refresh + + + + 筛选状态 + Screen Status + + + + 筛选 + Screen + + + + 打印 + Print + + + + 事件条数 + Number of events + + + + CSelectAppDlg + + 连接 + Connect + + + 断开连接 + Disconnect + + + FES IP地址: + FES IP Address: + + + FES网络端口: + FES NET port: + + + 连接状态: + Connection Status: + + + 专业名称: + Sub name: + + + 网络端口错误,无法连接网络。 + The network port is incorrect and cannot connect to the network. + + + 网络连接 + Connect + + + 网络断开 + Disconnect + + + + CStatusDialog + + + Dialog + Dialog + + + + 类型: + Type: + + + + 值: + Value: + + + + 查询 + Query + + + + 提示 + Prompt + + + + 请输入状态值! + Please enter the status value! + + + + ChanEventDlg + + + 通道事件 + Channel Events + + + + + 数据刷新 + Data Refresh + + + + 清除事件 + Clear Events + + + + 事件总数: + Total Events: + + + + 时间 + Time + + + + 通道标签名 + Channel Label Name + + + + 通道状态 + Channel Status + + + + 错误率 + Error Rate + + + + + 告警 + Alert + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication interrupted, data cannot be read. Please connect to the FES system! + + + + + 停止刷新 + Stop Refreshing + + + + 缓冲区溢出 + Buffer Overflow + + + + 通道未使用 + Channel Not in Use + + + + 通道检测 + Channel Detection + + + + 通道运行 + Channel Running + + + + 通道停止 + Channel Stopped + + + + 通道错误率高 + High Channel Error Rate + + + + ChanMonDlg + + + 通道监视 + Channel Monitoring + + + + 通道号 + Channel Number + + + + 发送帧数 + Frames Sent + + + + 接收帧数 + Frames Received + + + + 错误帧数 + Frames Error + + + + 显示接收 + Show Received + + + + 显示发送 + Show Sent + + + + 自动保存 + Auto Save + + + + 过滤显示 + Filter Display + + + + 位置 + Position + + + + 值(0x) + Value(0x) + + + + 1 + 1 + + + + 2 + 2 + + + + 3 + 3 + + + + 4 + 4 + + + + 清除显示 + Clear Display + + + + + + + + 刷新 + Refresh + + + + 清除统计 + Clear Statistics + + + + 清除文件 + Clear File + + + + + 告警 + Alert + + + + 通信中断,无法读取数据。请连接FES系统! + Communication interrupted, data cannot be read. Please connect to the FES system! + + + + 数据刷新 + Data Refresh + + + + 停止刷新 + Stop Refreshing + + + + 请先取消自动保存! + Please cancel auto-save first! + + + + ChanParamDlg + + + 通道参数 + Channel Parameters + + + + 刷新 + Refresh + + + + 通道号 + Channel Number + + + + 通道描述 + Channel Description + + + + 使用标志 + Usage Flag + + + + 当前状态 + Current Status + + + + 通信方式 + Communication Method + + + + 通道方式 + Channel Mode + + + + 规约类型 + Protocol Type + + + + 连接等待时间 + Connection Wait Time + + + + 链接超时 + Link Timeout + + + + 重连次数 + Reconnection Attempts + + + + 接收超时 + Receive Timeout + + + + 响应超时 + Response Timeout + + + + 接收缓存区长度 + Receive Buffer Length + + + + 发送缓存区长度 + Send Buffer Length + + + + 帧错误标准 + Frame Error Standard + + + + + IP1 + IP1 + + + + PortNo1 + Port Number 1 + + + + IP2 + IP2 + + + + PortNo2 + Port Number 2 + + + + PortNo3 + Port Number 3 + + + + IP4 + IP4 + + + + PortNo4 + Port Number 4 + + + + 备用通道号1 + Backup Channel Number 1 + + + + 备用通道号2 + Backup Channel Number 2 + + + + 备用通道号3 + Backup Channel Number 3 + + + + 本地端口号 + Local Port Number + + + + 告警 + Alert + + + 通信中断,无法读取数据。请连接FES系统! + Communication interrupted, data cannot be read. Please connect to the FES system! + + + + 通信中断,无法读取通道状态数据。请连接FES系统! + Communication is interrupted and channel status data cannot be read. Please connect the FES system! + + + + 使用 + In Use + + + + + 未使用 + Not in Use + + + + 通道检测 + Channel Detection + + + + 通道运行 + Channel Running + + + + 通道停止 + Channel Stopped + + + + 接收帧错误率高 + High Frame Error Rate in Reception + + + + TCP Client + TCP Client + + + + TCP Server + TCP Server + + + + UDP Client + UDP Client + + + + UDP Server + UDP Server + + + + Serial Port + + + + + Unknown Type + + + + + 双通道通信 + Dual-channel Communication + + + + 单通道通信 + Single-channel Communication + + + + DefCmdDlg + + + 自定义命控制 + Custom Command Control + + + + RTU刷新 + RTU refresh + + + + 设备ID + Device ID + + + + 命令个数: + Number of Commands: + + + + 序号 + Serial Number + + + + 关键字 + Keyword + + + + 数值 + Value + + + + 1 + 1 + + + + 2 + 2 + + + + 3 + 3 + + + + 4 + 4 + + + + 5 + 5 + + + + 6 + 6 + + + + 控制执行 + Execute Control + + + + 清除内容 + Clear Content + + + + 自定义内容 + Custom Content + + + + RTU号 + RTU Number + + + + 使用标志 + Use Flag + + + + 描述 + Description + + + + + 告警 + Alarm + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted, and data could not be read. Please connect to the FES system! + + + + 没有选择RTU,请选择! + No RTU selected, please select one! + + + + + + 信息 + Information + + + + 控制执行失败!原因:响应消息解析失败 + Control execution failed! Reason: Response message parsing failure + + + + 控制执行成功! + Control execution successful! + + + + 控制执行失败!原因:%1 + Control execution failed! Reason: %1 + + + 控制执行失败! + Control execution failed! + + + + DiMonDlg + + + Dialog + 对话框 + + + + RTU刷新 + RTU refresh + + + 点配置刷新 + Point refresh + + + + + 数据刷新 + Data refresh + + + 全部 + All + + + 区间 + Interval + + + -- + -- + + + + 前置设备 + Front-end Equipment + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + RTU名称 + RTU name + + + + 点号 + Point number + + + + 标签名 + Tag name + + + + 设备 + Device + + + + 点描述 + Point desc + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 后台标签 + Background Label + + + + 远动号 + Remote Control Number + + + + 时间 + Time + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + 区域start数据非法或为负,默认为0! + The area start data is illegal or negative, the default is 0! + + + 区域end数据非法或为负,默认为0! + The area end data is illegal or negative, the default is 0! + + + 区域start 大于 区域end点数,两者默认为0! + The area start is greater than the area end points, both of which default to 0! + + + + + 停止刷新 + Stop refresh + + + + FwAccMonDlg + + + 转发电度量 + Forward Electricity Metering + + + + RTU刷新 + RTU refresh + + + + + 数据刷新 + Data refresh + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + + 描述 + Description + + + + 点号 + Point number + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 设备 + Device + + + + 时间 + Time + + + + 源RTU号 + Source RTU Number + + + + 源点号 + Source Point Number + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + FwAiMonDlg + + + 转发模拟量 + Forward Analog Value + + + + RTU刷新 + RTU refresh + + + + + 数据刷新 + Data refresh + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + + 描述 + Description + + + + 点号 + Point number + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 设备 + Device + + + + 时间 + Time + + + + 源RTU号 + Source RTU Number + + + + 源点号 + Source Point Number + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + FwDDiMonDlg + + + 转发双点数字量 + Forward Dual Digital Quantity + + + + RTU刷新 + RTU refresh + + + + + 数据刷新 + Data refresh + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + + 描述 + Description + + + + 点号 + Point Number + + + + 点值 + Point Value + + + + 点状态 + Point Status + + + + 设备 + Device + + + + 时间 + Time + + + + 源RTU号 + Source RTU Number + + + + 源点号 + Source Point Number + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + FwDiMonDlg + + + 转发单点数字量 + Forward Single Digital Quantity + + + + RTU刷新 + RTU refresh + + + + + 数据刷新 + Data refresh + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + + 描述 + Description + + + + 点号 + Point number + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 设备 + Device + + + + 时间 + Time + + + + 源RTU号 + Source RTU Number + + + + 源点号 + Source Point Number + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + FwMiMonDlg + + + 转发混合量 + Forward Mixed Quantity + + + + RTU刷新 + RTU refresh + + + + + 数据刷新 + Data refresh + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + + 描述 + Description + + + + 点号 + Point number + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 设备 + Device + + + + 时间 + Time + + + + 源RTU号 + Source RTU Number + + + + 源点号 + Source Point Number + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + MainWindow + + + MainWindow + MainWindow + + + + 测点选择 + Point selection + + + + 测点监控 + Point monitoring + + + + 表选择 + Table Selection + + + + 表内容 + Table contents + + + + 工程调试 + Engineering Commissioning + + + + 事件信息 + Event Information + + + + 实时数据 + Real data + + + + 实时库表 + Rtdb table + + + + 前置数据 + FES data + + + + 调试工具 + Debugging Tools + + + + MiMonDlg + + + Dialog + + + + + RTU刷新 + RTU refresh + + + 点配置刷新 + Point refresh + + + + + 数据刷新 + Data refresh + + + 全部 + All + + + 区间 + Interval + + + -- + -- + + + + 前置设备 + Front-end Equipment + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + RTU名称 + RTU name + + + + 点号 + Point number + + + + 标签名 + Tag name + + + + 设备 + Device + + + + 点描述 + Point desc + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 后台标签 + Background Label + + + + 远动号 + Remote Control Number + + + + 时间 + Time + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + 区域start数据非法或为负,默认为0! + The area start data is illegal or negative, the default is 0! + + + 区域end数据非法或为负,默认为0! + The area end data is illegal or negative, the default is 0! + + + 区域start 大于 区域end点数,两者默认为0! + The area start is greater than the area end points, both of which default to 0! + + + + + 停止刷新 + Stop refresh + + + + PiMonDlg + + + Dialog + + + + + RTU刷新 + RTU refresh + + + 点配置刷新 + Point refresh + + + + + 数据刷新 + Data refresh + + + 全部 + All + + + 区间 + Interval + + + -- + -- + + + + 前置设备 + Front-end Equipment + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + RTU名称 + RTU name + + + + 点号 + Point number + + + + 标签名 + Tag name + + + + 设备 + Device + + + + 点描述 + Point desc + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 后台标签 + Background Label + + + + 远动号 + Remote Control Number + + + + 时间 + Time + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + 区域start数据非法或为负,默认为0! + The area start data is illegal or negative, the default is 0! + + + 区域end数据非法或为负,默认为0! + The area end data is illegal or negative, the default is 0! + + + 区域start 大于 区域end点数,两者默认为0! + The area start is greater than the area end points, both of which default to 0! + + + + + 停止刷新 + Stop refresh + + + + QObject + + + 初始化消息总线失败 + Failed to initialize message bus + + + + 初始化数据库接口失败 + Failed to initialize database interface + + + + 状态正常 + Status Normal + + + + 值未更新 + Value Not Updated + + + + 点值无效 + Point Value Invalid + + + + 点值超限 + Point Value Exceeded + + + + 通信中断 + Disconnect + + + + 正常 + Normal + + + + 无效 + Invalid + + + + RtuParamDlg + + + RTU参数 + RTU Parameters + + + + 刷新 + Refresh + + + + RTU号 + RTU number + + + + 描述 + Description + + + + 使用标志 + Use flag + + + + 当前状态 + Current Status + + + + RTU地址 + RTU Address + + + + 通道号 + Channel Number + + + + 模拟量个数 + Number of Analog Quantities + + + + 数字量个数 + Number of Digital Quantities + + + + 累积量个数 + Number of Accumulative Quantities + + + + 失败计数限值 + Failure Count Limit + + + + 告警 + Alarm + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect to the FES system! + + + + 通信中断,无法读取RTU数据。请连接FES系统! + Communication is interrupted and RTU data cannot be read. Please connect the FES system! + + + + 使用 + Used + + + + + 未使用 + Not Used + + + + 通信正常 + Communication Normal + + + + 通信中断 + Communication Interrupted + + + + SimAiDlg + + + 模拟量仿真 + Analog Simulation + + + + RTU刷新 + RTU Refresh + + + + + 数据刷新 + Data Refresh + + + + 前置设备 + Front-end Device + + + + RTU号 + RTU Number + + + + + 使用标志 + Use Flag + + + + 时间 + Time + + + + 描述 + Description + + + + 当前测点 + Current Measurement Point + + + + 当前RTU + Current RTU + + + + 所有RTU + All RTUs + + + + 固定置数 + Fixed Value Setting + + + + 值: + Value: + + + + 点状态: + Status: + + + + 固定设置 + Fixed Settings + + + + + + 停止设置 + 停止设置 + Stop Setting + + + + 线性置数 + Linear Value Setting + + + + 线性设置 + Linear Settings + + + + 步长值: + Step Value: + + + + 周期秒: + Cycle Seconds: + + + + 最小值: + Minimum Value: + + + + 最大值: + Maximum Value: + + + + 随机置数 + Random Value Setting + + + + 随机设置 + Random Settings + + + + 点号 + Point Number + + + + 标签名 + Tag Name + + + + 点描述 + Point Description + + + + 点值 + Point Value + + + + 点状态 + Point Status + + + + 设备 + Equipment + + + + 后台标签 + Backend Tag + + + + 远动号 + Remote Control Number + + + + + + + + + + + + + + + + + + + 告警 + Alarm + + + + + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + + + 没有选择RTU,请选择! + Please select an RTU! + + + + + + 没有选择点,请选择! + Please select a point! + + + + + + 信息 + Information + + + + 固定设置成功! + Fixed setting successful! + + + + 线性设置成功! + Linear setting successful! + + + + 随机设置成功! + Random setting successful! + + + + 最大值小于最小值 + The maximum value is less than the minimum value + + + + SimAoDlg + + + 模拟量仿真 + Analog Simulation + + + + RTU刷新 + RTU Refresh + + + + 前置设备 + Front-end Device + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + 描述 + Description + + + + 选择 + Select + + + + 执行 + Perform + + + + 放弃 + Give up + + + + 控制值: + Control Value: + + + + 控制执行 + Control Execution + + + + 点号 + Point number + + + + 标签名 + Tag name + + + + 点描述 + Point description + + + + 设备 + Device + + + + 远动号 + Remote Control Number + + + + + + + + + 告警 + Alarm + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + 没有选择RTU,请选择! + Please select an RTU! + + + + 没有选择点,请选择! + Please select a point! + + + + + + 信息 + Information + + + + 控制执行失败!原因:响应消息解析失败 + Control execution failed! Reason: Response message parsing failure + + + + 控制执行成功! + Control execution successful! + + + + 控制执行失败!原因:%1 + Control execution failed! Reason: %1 + + + 控制执行失败! + Control execution failed! + + + + SimDiDlg + + + 数字量仿真 + Digital Simulation + + + + RTU刷新 + RTU Refresh + + + + + 数据刷新 + Data Refresh + + + + 前置设备 + Upstream Equipment + + + + RTU号 + RTU Number + + + + + 使用标志 + Usage Flag + + + + 时间 + Time + + + + 描述 + Description + + + + 当前测点 + Current Measurement Point + + + + 当前RTU + Current RTU + + + + 所有RTU + All RTUs + + + + + 固定设置 + Fixed Settings + + + + + 停止设置 + Stop Settings + + + + 值: + Value: + + + + 停止设置 + Stop Setting + + + + 点状态: + Status: + + + + + 周期设置 + Periodic Setting + + + + 周期秒: + Period in Seconds: + + + + + 随机设置 + Random Setting + + + + 点号 + Point Number + + + + 标签名 + Label Name + + + + 点描述 + Point Description + + + + 点值 + Point Value + + + + 点状态 + Point Status + + + + 设备 + Equipment + + + + 后台标签 + Background Label + + + + 远动号 + Remote Control Number + + + + + + + + + + + + + + + + + + + 告警 + Alarm + + + + + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + + + 没有选择RTU,请选择! + Please select an RTU! + + + + + + 没有选择点,请选择! + Please select a point! + + + + 最大值小于最小值 + The maximum value is less than the minimum value + + + + + + 信息 + Information + + + + 固定设置成功! + Fixed setting successful! + + + + 线性设置成功! + Linear setting successful! + + + 周期设置成功! + Periodic setting successful! + + + + 随机设置成功! + Random setting successful! + + + + SimDoDlg + + + 数字量控制 + Digital Control + + + + RTU刷新 + RTU Refresh + + + + 前置设备 + Upstream Equipment + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + 描述 + Description + + + + 选择 + Select + + + + 执行 + Perform + + + + 放弃 + Abandon + + + + 控制值: + Control Value: + + + + 控制执行 + Control Execution + + + + 点号 + Point Number + + + + 标签名 + Tag Name + + + + 点描述 + Point Description + + + + 设备 + Device + + + + 远动号 + Remote Control Number + + + + + + + + + 告警 + Alarm + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + 没有选择RTU,请选择! + Please select an RTU! + + + + 没有选择点,请选择! + Please select a point! + + + + + + 信息 + Information + + + + 控制执行失败!原因:响应消息解析失败 + Control execution failed! Reason: Response message parsing failure + + + + 控制执行成功! + Control execution was successful! + + + + 控制执行失败!原因:%1 + Control execution failed! Reason: %1 + + + 控制执行失败! + Control execution failed! + + + + SimEventDlg + + + 事件仿真 + Event Simulation + + + + RTU刷新 + RTU Refresh + + + + 前置设备 + Upstream Equipment + + + + 故障值个数: + Number of Fault Values: + + + + 1#故障类型: + Fault Type 1#: + + + + 故障值1: + Fault Value 1: + + + + 2#故障类型: + Fault Type 2#: + + + + 3#故障类型: + Fault Type 3#: + + + + 故障值2: + Fault Value 2: + + + + 故障值3: + Fault Value 3: + + + + 4#故障类型: + Fault Type 4#: + + + + 故障值4: + Fault Value 4: + + + + RTU号 + RTU Number + + + + + 使用标志 + Usage Flag + + + + 描述 + Description + + + + 点值: + Point Value: + + + + 点状态: + Status: + + + + 产生事件 + Generate Event + + + + 点号 + Point Number + + + + 标签名 + Tag Name + + + + 点描述 + Point Description + + + + 设备 + Device + + + + 后台标签 + Background Label + + + + 远动号 + Remote Control Number + + + + + + + + + 告警 + Alarm + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + 没有选择RTU,请选择! + Please select an RTU! + + + + 没有选择点,请选择! + Please select a point! + + + + 信息 + Information + + + + 产生事件成功! + Event generated successfully! + + + + SimMiDlg + + + 混合量仿真 + Mixed Quantity Simulation + + + + RTU刷新 + RTU Refresh + + + + + 数据刷新 + Data Refresh + + + + 前置设备 + Upstream Equipment + + + + RTU号 + RTU Number + + + + + 使用标志 + Usage Flag + + + + 描述 + Description + + + + 当前测点 + Current Measurement Point + + + + 当前RTU + Current RTU + + + + 所有RTU + All RTUs + + + + 固定置数 + Fixed Value Setting + + + + 值: + Value: + + + + 点状态: + Status: + + + + 停止设置 + Stop Setting + + + + 固定设置 + Fixed Setting + + + + 停止设置 + Stop Setting + + + + 线性置数 + Linear Value Setting + + + + 最小值: + Minimum Value: + + + + 最大值: + Maximum Value: + + + + 步长值: + Step Value: + + + + 周期秒: + Cycle in Seconds: + + + + 线性设置 + Linear Setting + + + + 停止置数 + Stop Value Setting + + + + 随机置数 + Random Value Setting + + + + 随机设置 + Random Setting + + + + 点号 + Point number + + + + 标签名 + Tag name + + + + 点描述 + Point desc + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 时间 + Time + + + + 设备 + Device + + + + 后台标签 + Background Label + + + + 远动号 + Remote Control Number + + + + + + + + + + + + + + + + + + + 告警 + Alarm + + + + + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + + + 没有选择RTU,请选择! + Please select an RTU! + + + + + + 没有选择点,请选择! + Please select a point! + + + + 最大值小于最小值 + The maximum value is less than the minimum value + + + + + + 信息 + Information + + + + 固定设置成功! + Fixed setting successful! + + + + 线性设置成功! + Linear setting successful! + + + + 随机设置成功! + Random setting successful! + + + + SimMoDlg + + + 混合量输出 + Mixed Output + + + + RTU刷新 + RTU Refresh + + + + 前置设备 + Pre-positioned Equipment + + + + RTU号 + RTU Number + + + + + 使用标志 + Use Flag + + + + 描述 + Description + + + + 选择 + Select + + + + 执行 + Execute + + + + 放弃 + Abandon + + + + 控制值: + Control Value: + + + + 控制执行 + Execute Control + + + + 点号 + Point Number + + + + 标签名 + Tag Name + + + + 点描述 + Point Description + + + + 设备 + Device + + + + 远动号 + Remote Control Number + + + + + + + + + 告警 + Alarm + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + 没有选择RTU,请选择! + Please select an RTU! + + + + 没有选择点,请选择! + Please select a point! + + + + + + 信息 + Information + + + + 控制执行失败!原因:响应消息解析失败 + Control execution failed! Reason: Response message parsing failure + + + + 控制执行成功! + Control execution successful! + + + + 控制执行失败!原因:%1 + 控制执行失败!原因:%1 + + + 控制执行失败! + Control execution failed! + + + + SimPiDlg + + + 电度量仿真 + Electricity Metering Simulation + + + + RTU刷新 + RTU Refresh + + + + + 数据刷新 + Data Refresh + + + + 前置设备 + Pre-positioned Equipment + + + + RTU号 + RTU Number + + + + + 使用标志 + Usage Flag + + + + 时间 + Time + + + + 描述 + Description + + + + 当前测点 + Current Measurement Point + + + + 当前RTU + Current RTU + + + + 所有RTU + All RTUs + + + + 固定置数 + Fixed Value Setting + + + + 停止设置 + Stop Setting + + + + 值: + Value: + + + + 点状态: + Status: + + + + 固定设置 + Fixed Setting + + + + 线性置数 + Linear Value Setting + + + + 线性设置 + Linear Setting + + + + + 停止设置 + Stop Setting + + + + 步长值: + Step Value: + + + + 周期秒: + Period in Seconds: + + + + 最小值: + Minimum Value: + + + + 最大值: + Maximum Value: + + + + 随机置数 + Random Value Setting + + + + 随机设置 + Random Setting + + + + 点号 + Point Number + + + + 标签名 + Tag Name + + + + 点描述 + Point Description + + + + 点值 + Point Value + + + + 点状态 + Point Status + + + + 设备 + Device + + + + 后台标签 + Background Label + + + + 远动号 + Remote Control Number + + + + + + + + + + + + + + + + + + + 告警 + Alarm + + + + + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + + + 没有选择RTU,请选择! + Please select an RTU! + + + + + + 没有选择点,请选择! + Please select a point! + + + + + + 信息 + Information + + + + 固定设置成功! + Fixed setting successful! + + + + 线性设置成功! + Linear setting successful! + + + + 随机设置成功! + Random setting successful! + + + + 最大值小于最小值 + The maximum value is less than the minimum value + + + + SoeEventDlg + + + SOE事件 + SOE Event + + + + + 数据刷新 + Data Refresh + + + + 清除事件 + Clear Events + + + + 事件总数: + Total Number of Events: + + + + 时间 + Time + + + + 标签名 + Tag Name + + + + 点值 + Point Value + + + + 点状态 + Point Status + + + + 故障个数 + Number of Faults + + + + 故障源1 + Fault Source 1 + + + + 故障值1 + Fault Value 1 + + + + 故障源2 + Fault Source 2 + + + + 故障值2 + Fault Value 2 + + + + 故障源3 + Fault Source 3 + + + + 故障值3 + Fault Value 3 + + + + 故障源4 + Fault Source 4 + + + + 故障值4 + Fault Value 4 + + + + + 告警 + Alarm + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + 缓冲区溢出 + Buffer Overflow + + + + SoeMemorydlg + + + SOE内存 + SOE Memory + + + + 数据刷新 + Data refresh + + + + 序号 + Serial Number + + + + 时间 + Time + + + + 标签名 + Tag name + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 故障个数 + Number of Faults + + + + 故障源1 + Fault Source 1 + + + + 故障值1 + Fault Value 1 + + + + 故障源2 + Fault Source 2 + + + + 故障值2 + Fault Value 2 + + + + 故障源3 + Fault Source 3 + + + + 故障值3 + Fault Value 3 + + + + 故障源4 + Fault Source 4 + + + + 故障值4 + Fault Value 4 + + + + 告警 + Alarm + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + diff --git a/resource/en/fbd_editor/translate/fbd_editor_en.qm b/resource/en/fbd_editor/translate/fbd_editor_en.qm new file mode 100644 index 0000000000000000000000000000000000000000..be23385e13f3838063d47f145248fcb1ecc6fb9d GIT binary patch literal 115053 zcmdqK2Yi%O_CI`|lu0I;%s?ncqy(fydT0Uy(iQ0hdn1s5(GX$)+v*C^J4o+cT&1hD zP}E(w*j-(B?Sh#};;s!{U0rwmf6qNnpXYgIKzu*HeMLPaGxywc&%O8D)9$%Fjud3Q z_{D~muQaZIYRuLXAM_QXS*Z}By%6=o3^yE=P)W{ZIIklh{@!39!;w`CH`bR>NnXKl z-dVs7LNt7q;l^J}sQ6MD&c6i^xEc{&z>O6WD!vki^N#>_!sm}msQCWEa6uiw&O&5U ze_a4)0A3FGC16(}8W#a}1N<6rln~beh?|A@{3gK3LiqnCL}G8yzaOv<=<6p$5zb!=a75E-LCs^Yp36&dH0|L(>&`t28chM$*E`maQc3g-x;~Bo1jJ|wA$$N<5 zO`z%X$AtLvR3W~oE5x@LC!jJ2G<>l{h?*ZtsC0Xo;qW_!_!2lTuf=f0RSdUd%=o?1 zrxLJ^P)3(Aym=5{bNmeY2;Pi-zHBGN-_`d#p;B1Muqa(5y}bzh+sANk zwMd@u7a^{FL!@kbQHaVs;otMB5S!)1gp!%Z z@UlJPrYTsf*EI*ky1woPG5*?WAs&8A+}mZE5F<{B)da7bFAn8k4bB-Njt*!k#M%hM z*Gk3lHCSKw|4zKoV24m{xQ^lNABZ=ODMEahBi##h!np zx$>{PwLVXLd`Fq5aO}P3=cF&s55YY5c_H; z)XBsCee4N_2Sz0{IEZ!FI4dE$CSa5M6PkC#ybfrS(DI5;L2rwMR&5|h#-t>)844Lw z`>zrz;v0rz=OuLf@?Ig9He~qTq=c@ULqgoMJ)v9MJRxRXnb5NjKF@lB;T2yb^!)Ny zI45>UsQB74oc~b5h|e2fyMHO6a?iU7qYM9pqvu%(mHS5~jD9IwC^gC%=F~~JwkKrb zZFLgzkADSu@p{6qdUu1o{}02!6$!KF|Ah7FPnb6j>)=mcNvJgJz_82igoVL{Li9W+ zp)%c{uoKfDS}bI^qVdbW{JnKm=w&9ON`%u^EH z{_^iaT#}gZx5=Y%4!q0o_Pm7m+vDfLx(T0rQ$r{z+Y+kUe~0~cLPDkPw+WwSZx>3F zwF#dOe@=+2HYa@D1pDvmg9%@sAvtl2gi7~~3E$qfKq&JTCVaOIeEEHggn!YQQ!+8( z$CqA2|9cX}qgW@MT1lupa46BA0e&wY&v5tn#Pshz7b5MN#F~Tehn(J?m|43m*3Tn} zwL_41PjpXga39v`$`2DS&G@qrCofBEH8D*n`O6YpU$a$+zuubIwMP-gu{p780nYM2 z?U7JvaE4)*TM~PmIW0u_wTa_~v=^e^6^VBi0RH}P;({xFhcohT5-PnvPTVvU=SiK- z5-MZ=oVdN~`$E($lu#KrBJuIP7++>E@zlPLgjo1a;vX+A#rZWq@uj}c2$6qx;;Rdv zh5X);_|`@9g);8T#J^VDf^+ssh7BW$?=67*nfhen2R*UB_xwBY^nrblyJHi-nsTQQ zeReUdc$8svM&fs`ZxrIqTN1yYbE6Q8-c3qhl`TZ+dr84Rj{qTmVdxvfuzaV4%J_#E z7Hv%mT{;nR?g0svvVx@0cIXoYeUj>44Se4}E1@#DG^yDZ?Dt1oB(+XGCB&0ICbcQU zdf7BhLM0`i;lkIG+6{kLD77jWwkk+!{|WflbZSz^X@HGxOuGI1QlTuoE$RMU!-V)v z@1zGeT!wjmI%%4Jx=^w&OPaN!80UX|36(yLl9snREfl3&((RN+yi(J@C@KnLX5r$@M*vyfLJf1 zrvn}WJd{*jjP*GB?|@hz*JcBD0K7Kos|}!M%7~=1|Ewj%iH#B}Z6Znk{O(mDejJ$e zpAKING5j>cZLcK#q}+{t(?>$(isi{EkE|17d{J`Bvo~SCZf1DN2Mqf(W>^tqSoLbM ze^IeeGUhRC^t=1A-)Sp zs0AB=9b_@|>5v{;j){;cK7!5{xWk5CHpM?14bqSRLkNJ`gV%#-`N~m;w*O&BX{2V$gq0)7rFX;?@o*<#pb*V4u zEPdWsLgn&(FZ!=IMD~m%d}5DAi-=+bN+ko`0_tMSML@G!x>6RlcDY zG4Wn|&!M zw?RHVc|0XOy9w~V%X|M8oY zNeeOl7VT3?SAB))>&URfo|J{Bi-c(VcL|lLe@S_i?Dg)WQ#QSf`M+v>%GPIV2=RyB zDceXN?zB`wJZ&#akJ@qAc_Tbia+k3WWSt!Map{gh8hx#W`gf_m9Q<6nnqljr)U-X2 zKexK++8;{qczU287EWgZn+(L^^>U=4aE8@PnA$<`KQ!|PmU7eg%J`e zvwNxVH>r*Ojo<%qkc7&rpBS#5nA)Wu}80J@%Z0O3Qov7kvcz)9fn=mD0QY^>XjUJl`y#(ssT- z`%Uy)zrMfmS1$==K^K3M+h(DCD+!fakN7X0ai>sHxBELR|4=BS+WEWQyA*c+HU8eG z3D0Q>m9}U61HXMvh~>hcceW<%w!8h;eg(Y2tNpjUjQzOk8~=hA5{1&f(!Y51aqz1J z!`$uu_50tz`S_CmvA=AEpTO^bd*vHKX*|jQ-Wl+5zyto%x!AY4zmrh8?^=IF<0S0w z+5XS#?dHT9*+SIKMwh`}OVE zUkeAPJ-ZI)aaLa1n_n~#O5GHOZRVs^jB9}NWJFq3?rO}}E(w*o=4 zuSn1AFaYc5eTMHGO224SIb475GCXsGgvtYVrDtVc41L*`-r(dwtheVFe*IH=gUVzf zB8llOW|^+75yKUCGF+wp zytY68ynaCXJ^_6uucsgCJrd5jW9f(1!+-P5Knaz8e@Q>_yVr$M^FD?- ze@=gP1N8Q+Q|W&QLa%SPi{a@85-RsBOMh*~i?9y|q`$ds7WPH5gvx-M(m(2neUjZj z{iFVOLf?p_R}EW={r8H5%7D!D>JOm*CX}atS{wVas674iPnN--@N)Wh+iJkRnw0*p z67coTtn~k!#{NkEMna|kO#wKDFi#&zs3c#{aNg*EGXG=faW@4LN7aTto)HK%ycK@U z-v?@({R8%2ABG>lC8094RiIX*hp|8F2kI{WBm4#vBvg703|!Rd7My?22eQ(C4Lt7! z>ODVJ2xSh#luU*vr%9+xXvgr*yg-8*SSR_fG2FR2(CkI*qcJA~t&(zuxMF&s>)`It z121Fv%1eRn8+r-x@0Ee>A080Oz(ox6{=x93XBg)94D{W!PlyK_1g>uK9sGe40@rl9 z3wCx#36;9L8Mf;kxT_`P|MWV6DXT%pkB6nmE>a#=hq6n^eE2X&D9KF2ui3d z9vS#^BJ`mNNr4ZCwu3$NR^X$*MK)!1t|RfZf`Y;nPh5 zKlF#3_-}*2zjJXOO+Lf$vF{ij*v|0qV1{ph&hT_3@SlS#aPI7oQ0Y0F;mEat|1P=< z_TZunu^gZ8D9lLg^q~;%jL%3}attst!@v7|_&d8YOnFU0Wx|&X@2Z_q>r6K6=vx?8 zT%Bf(D>9G3p7&++zp|MSbDL(2%)b$O%@GNeYmR4J z+qSb1x2I(kPRF>?gBgW;`@nzvNk-upjiCo95-RE2G78V)=gXHe+|ph`C2=0Z;s+U) zJk0Q+FBm>DpW#gPdvl8T=f%qzF3V%Md*GnOW`#5sIR#`Zst5#nG*#=$Jw4>dB5Mb2P8PBTosPeSF6 z^$hPimGQ#$g}{@P@!BTXyK;V(Fu@wb<84lcepa^BLZ@S4W>@c=L9^ z%kc9T3~zo9urt2@4Z~X#gDJz&e?jA5dgclE=^qZJH|P!f=x-7#m)yv(OS?*_-1nzos}CN*x*WvtyW4}EPX8A6(O)H0dOaKLa(y-Q>6Bo%KmQf}r+UHu zM~eVA1^d4VdGXoD!GVpxfZcOLFfSYO=b^5_>rOX>-t|TB_9f7(8ZQfu+4d~-iY>v? zcc#JrwkA0DlYQ7fe++JKgU_4%F8IW=ZJN~rYf6a4s1#A*CF!PD7TXT638PhZ*q@BxOmmNMM2 zF?f0e^p{)DFkJH|hOdqdo_^(H=#>kDXTHX{-R%m7W9Bj3c_+h9mj)|p-Y-PGObL~% zuMbwV?j}U)j}j{V?gxaQv)`^@#o`pK}?@E;+pkFu|VUpMXzxteHzdCJ zHSC2^A@LRHs`Z|PO81XK3ig%wX;eu0>Q2~gqeBVV_236N%kZ)=!;e!WRJt`~IP56H z($_)>yTPBcUrVU;4FF=^zHTp}(zkyo;meum_lShbpaY>qisRJIWY}z$gvu3#3`b;y z5>J8N>-&a$!ysqsyv1<-0EX+c8NR+=LZ!z@h9kZW`F@M>)y!qs>I#M*50OymHkRSA z9~hQ33#E)12l>@5lyU(4SX;{QH4#c3iGF*pWcbNKhE;t-smrl$p4%;2n!g+?wH~LmBpN$8ghNhM(jxjD#gr zeE(*cpUkjeA;a-kGb}1*SbBNL|KC%v%g=_=Ui%*Bch^w*@oV6(TN|p;ZxQ_HDH19@ zW`t^H<9z?`kx(sxbyBC1gvu3fhHAY!2y$g&sCIj-=gh+rD&79gaQKE$ZCclBdog_V zjZp2M=D{@Qp$Y`z&pEdD!0Nfc~R)pJMorW)dpXA5-Dq7(S97y87$}oR8Z>gSO(l zIeL9)*b2zCLvuspo*M~2d2Xoii?4*}@u-B#!_}cX(;FjB_Cct)419@<3O&63PuL$% zgl12KT>12e(A+in{Ep{C%W`@m?l3>J<~Z!$$`3+2`s8Du7KI-F>lU1MJ3~)A@D}`B zkA|Mx3_RfnL%)6FH;A`&l~8Gr&#?1*p_h_yPBytD^itz#&}*+?*rOZ6-#ss(lGvGH zaXW@3xeOoL!SLaA3?J#maApsNbLuc$mcsDSpBS!G7_NSw;o5gYZyaxg`MNLkX3e(| z2iYF_>$5n&4j&J_^Zm!Lb8nMSx%Z3EN0a>E;|d9t1rtMOR=f;-W1mo`LTV zt`2>fGZp%1TIiqcKZ3urBg5B@g}!~}WB9qwhQ9p<<8J=9(09G+!0%Bn^xeT)Sg%Jz z|2i=Mde7&fAK%^s`{7qO#Mi%%ohMR}chyD=6O&T$gYe!Zpn&peJqF5B_&3qLnPF2k~;nt`w`W%P8ie#VJ7+$`ZXlfn^&wsq) z#D?(FMU}huyCLa{W>e8@ECySK0ZbC(@&8fyi3U+bEReq~!T$%MgCbBk6`vSXW`=hh zsCs&5^_)fF>FXl9w?0@kesItUpkXI%qNPc7^*v`HA|6bxGXIa}o5HzoLVis+8tPZpQygw?G&G%K?D5dN)R{d7)v(aMSwi@Hy~ z%&n8&asf>NnKX%(Rd|kEu2Xe#d3e^&IC&j=WA#7hjb&-^s@#gBz@y1>>Ly?~14MzG z5#l7R(FyXWGSM2Jb->1@by|!+G}W=b-x1%xTH?3^t%rbt_u#)`{5=|XCwzAZme9R1 zzu6hz93cjY{&qb2{O0AhsW>t}yl773;Hj!zkA;^kYuy3ASx~)pk@1_3ZK|JKQ@P@q z@X@E#?{sQYabmIMH=Wyz7}TFXH7yPc54%bpT7?B|ut}m+=b8P}yTFrDo!SPuZB$`0 zeM4l=Hjv6cRvmt->eL*!e#e||zmh7N87ozNW9vldmJ*y}=I7EUbEtF+^rq}yct zXQ(M5NZCmFj_~1w;T?;@CmwY{L@JsYkwIRWoX7&5ECXTX*1c7Gceo&I;)t*Sov7n9 z@gFOJXpC&!T2U?)T?g*P6s|RlwP0G1X;_dne;9>60$+I9{Hi^V5#i2_NG7X|Fzxyh z&=CX}0nd*+n)6>h&SdpANC8>IM$&q-u{~&$lwgaIib(2sHpr)iKngf*MfyBjwATl4 zv3bQ-99aZYA-sP{#j(Zh-AB_MYRw%I_e9{kPxemge>T(}Rkg+6N!iNA;oS*;+T%}S z`lI(-FS21;c*icNycI`|<#y`SzWo=+r}Mw=9d|HwOnMm&+pS}JhjppL{Y$vRcsk2* zT(+LulozkDO`Rw2Y8&Eln6467Or(Qa_CMI?G@*qUbtxwEew~?F=8kz1!PUy&9CK%7 zwq;>oh1o2@f6l^3?vctBnp)tg3G=$RCLT(TbxLY9=@> zxANF7*m%`*mJr5(#5iK=itcBKeI$kS~VL87O&r;{fwLvg&B~xXXSw zqZo+Bq-ubxQ7EaFtX(FDaFZ^GF`O zI-NdN{haw!8%u_URR#`aYdq7N1|n;Z;q>)dqjV(cya5VBHM5-@CZv*M#*q{~_Ifs? z13({b`ZCjLoe^O)E7n%++t=86bTz;XKALDBVngUe_@LNFHlA{BcAgep^f)vVC0q0o zz4X3QBZteeWqS2;?mZx_Q6d)$Sa0O3oPQ|dCMeP{bF{v3UYZ)Lc&2LKM&~|!=wqnJ zGktmUo{CdjoxjYhcp~tV3n^Rl5IyvUsg=9RtJm)6(ZjiEn&ElUoA@gC%){~F+#ppt z!62MWUq8O8>f|!#uV-St(KaWa56P(qObqZ>!7H+NUB%IP&TWI@db#jPXEVEFebBz4 zLOVAikxZ^M5{V{WSM5C+-XZ-((TgC<+yv~qN-pK8CNGqqn^%_4bndjd6eE)%Flma( zUpN;3kslBW3^0;a3wN{5GJn<6+bhb;!wX$ROB$HWr;6#+tbSy#YTrZ;p{~&Y-I0Kq zViCmwZVZ2M^|m$6V<0M>&Yf%J8H002r#@glQJj$lr4qpNP$=%zoBFD^&8*rr*SS$l z8!e=(d?p1lj+5W9T@2ICvCTOu430QfNd<>IpxMxo%#xW-cU6euvk^3bSpRgwXJcl_ z`=}XdwAD#N7%x{B9i8-@eC#ydXC#|w1CZuWEWbl>1VdRTA12ue95S*VdzbU64ZX=C zzo9vV7o4g%wKuZjDDB(%kF#=Lxo)PRVmS^tQ#-ZLF%Us|XdiMH0=<)FIf4&f^R#i&fC zn~nQvh%-qO&T9e^L`S2;j_w_1qreD-Y1m3(VMjubM4ENd(-4G_mWy|{os4cfxp#|7 z6zG;LTG+nj&{gWRZ+4p87x_K4l=&LqMm-7SDE5H(JI7;?oP7o|E7T z>GpFhvDNy#M00vvg83TVjG#FsQ-W5jIs8P@>D)qLbvbECMu;5aVD{xZCMFRa1JjJU z$smd2bYu#0JdUj%3j5F&qezKq7`mXzGLg2pa`Ar9Sh@a4c$F#uagMj#55H(Mq!1yb4JXw_L5;0`LE+!tQ5-F=Mb6!NGoofvsj$4(wsRy5We3Ty6h zWDmeJ+p{zSd~_SRn(n9z;zJF$0Hv~xRksGxR`HWdI0v6lFoT>FlnaVE(%II62}9BV z)Aq&jg%u}eN7n4)-$yn)Q9W&5WWjHUqwX}v6$x^0-q1ncaOR@4N#fz+Xm6B`+>17e z+_@$Rap0Q#eVklt2~&geLwchiR1?{33 zI4Ru1iCKi->b&V*N_QSp2Ai=tR75d2EYZfp;ag%OkI7$yq*&aQWVv!zei|ottqU&? zvSKWBnQ@RH6!cbQlYK>3?cG+rW|p@oYALRTu)7QYQEoIje)zB=$1nv<$uncWoKOoy zS8m=(e(M99BGY!^mO{37FFhcM?gr6BEU99waFM3qevLqP{^`R~b>PU{RYvB&`#QSj z=k)2a-s-5Ty+%PiOYVpV9mET#D-;w3BMqC>QdVY(XR7vMTc9*^*}&t*-}w8O3@lE{ zNH^Q4qgS-;3vn*$`i`855*@1L6Nl(%>4nf`N;A#qDGq9V|}^MwclF>9%J){GW1ey*SRnD2&r%Ogg zhe^;v(s9lJ#i-SIr7q)q)iT+`Tb%lEij|nGg~W;@blF{`^(iUnV2T#CbTmdeeT8%& zN`+#7zu71~u{*M8n_-mNk&f^*M-9IKncC-JjLzE0U3(j&cA_qvW5Nj5I6Ed}1jpX} z{}Gpjoh;7epe<<03kuKOf_xTQF#bMMrsR*)(?4llA%VeIjGV>e@Xe-B6Vz-RO!IYe zEm1Jt5=GMS1aRvKc{-6TTdSXtz7t!&T`btFA^mYOZaoev3SF}^*k%r zy30Md4xS8|H+9|}j*#awos0#h4(mB|SUt_Hx2D+VYA#AV%+eA~T$yFYb{@r@v zI5i^`px=aB1ySZJIMxh|dT4ml^%hUmiC z>=!ioHlu{H`)vgyVlE}&oMSc@t&E~O5ivFnA}*+lRwXUUMe9TyMWn_;WrovImruU% ztfvq%Avx#k*JtdcsZ-ReRwipc2L6=x5 zk*xrK*Ahq78|L_VG+K~+BNd)HnjpzvwJ9Z# zugZ?bcL1x;rY`d8}>yu%&T6z zG(2l}c*&9M?CNRd$W5#~zN+%^1>wUx!?O-&XIIXf8`-cs`?}n=GP}dfw1F3x)<);p zf6NGHdcS`8#l<@30 z3GY#;y69u0!_q*>srV{Nk8#$qb>cDL8t_?gCu9@DzSSx9bB;b760||1Xf*gwfmWhY zMc_eKNJr^G5#6=xi+CR0RU@adwmE6blQ@9-qSIJA8~+UK+dsViWMuoa$mX5&Gm)Fx zuYXbggtGjJQux#ZGWydC|8cUSyu68@Zq`v{pk=RYzQ37$b2JW$L|l(iQZ6eQb|i%m z_Ju^E)knV}9&o~BwvM%Sc6jz$4hV;jEoXbgfxsN;CfDLVTzf(bxebth1l7}{Bd(c^ zF^6Z(fa8b*YYte+Q$z}@+7=|{;iqD#mTjbKs-^aXG)wT+UdyzGy#GiUne^ z5w(}e>-Y_c`vUYtw@|2mEsvD4OYMQ6`q@>dHboZitT;BC19KHera=*?n*Rt2X++O> zw&>~oM;}a$p0)o=Q43<5<@oy0CS3gwUHo#XU*&z{i(Nif|^Na*D- zW83uoOF6;j{cD&Xnuz8r0#vagU(POF`lK+CR)3`#4qNM%r5U~#b4#m>=312q_=$pr z%@C9|Z$#_2Nx!E$BgO&K&&+|!^5v0@n-Luh&pN=;1Pi5EE}78sRyTdJWEn!&^lJ*~ z8tw(_UZ^2%1r>(%Zmjyit=V21b{GP{v~VqrF-UV7z?~Qbp?12eW!6(Cn@lW3K;=T0 z6-`uUz^P5BZo*fxIIN5Sb@Xg&w{)e|i#|1}N6F$O>nP@?{mw}e8nO6Is59N&xL$ zhzp=?+qR7!XpX5L>k+|1p72{SXR4Ux+Nj$4xFgz@5QYUfBkW>H6S&5iVQ?xdymu1> zBF+mIS03Ead?maaCqp@n+li^v1!h2_oA6r0r z*YTCmWN{vF(Fhi0UmTa$Y^_H@FT*Vj3TY&y!_x|;f=sY=FpkzzZQ?69W%7Vhub7!6 zc+;wV<+@nV1j53wtU`p!BUM`$I4z-g#Bq zXOSU&Y>DIG19CNy9S?b<&$`b@_OVV?j0l4D%cD$#qQEZS{bBW#WSTZ$yO^b5B;TE7 znZ^nXvDUCenv#ydGK*8aC{J$TQMxs=ZYGDN*g(n9jGVl2sAQnJS(?irG%jfABTi`^ zd2~nhifMG{xilGtIkPq~ibFXx@nK@kYLpf;arkO|giTn?%O)5oW#-ze=Y&`kBlN-( z?m}u;G&j_N8-R)ym$8hge%?6zktR2OPgb71aHjL(qU`%77OVT76@$4;!}B*wnHMB& zaAP?`VY6IVgLMC&tzTZutZAwX z*olNR(HujeqtU2CmeRcPRC(2j-NYxSHqkefoW4aNiXmc%&YZ+PLx#9vqzVn>Y%3P6 zL_fWSuiuoi;#U3QX*A5%XjnXrM%o&UjHgkatq~WibeLT8n69%mx-OocZm>1F!M)K{ zQs$N7urgeSzN^aeOYe|gKd0#l$g97U_I-!x!WlPWf3f43jGm0}8#j{SwpcxNG{z*! zlb4=iH8O51aZmEfQmjVCbt7&h?;OQyWLzHNM)C%cdn3|MO06uPG_^Da%ej%^vPVy7 z6ocj5$ii|oa%FiIOg%a@NQtuexpejihL;wWWUFp0w}q7|eW$oit2av;kw2l(?du6* zl>S9!l-sw`pze`l3#E_rZzqq=ADivU0;7e&0NKKI{ARoEd<1#jbCcus;8G+%B`GF+ zI?x$yyZwthU2x4Bw|||M6*;&`QDrm++fhYk56%@gme!L_G1C3amb0`CbrxsBLZy;40i@;(;!lp6(RrILNf zT^?eL(BGh^s`X%;mJC(7(LDolT(qK%F|Y-M6|FN##Z1PfEFor42zvN zILY_p#*9p;$ZCXJ4c+Gth%>*N$Yz#g!4+#hJI4tN*L;rIayluNX zu)sut6pGe^1Mz9v%}B$o_2EB-H_Vv)c}S*w=LPRXFgHPQ44Y$ zL+R6R`#O=_+L6;%^7Q4UcZ?fQlvNn>Fd#3l#t==db8<-sRD7N%i&oK>LOmKXhciVd zQbp=5etVfHr0r~DHGV@4OWdBWfooAng4UyZ#u%|H_y1ti7T zdlSufZAg2F^=?OknNKt%*0V_OQY-#3_w0N!>I*wjNpT`;&|Fi6NGuX>%AoL)s%|JF zpq66il`9ukZ`|fatq;eEH9c$I6XCh8b_$s{j#=7IdIfDKKGlQ0OP6cdELA}jl9?QOX_t8qducqsK!@y;zVT2VM>u@&De8mwFYa*{Yjol@>p8; zzqaD-;-?M_z{sJwMubLBHFo06H6}G$Q(`GHk}bTHY5t}g1&zZ?9)me*5rFbHI!$iN zE@-7jXPuuhLVZHxlEX$Fl)QPHWnRkW_ZaHHvQkNgR4y)SSLd3L}N$1=foxG z+$Nu59t?G{;i+2k9av{nD~W52{rLY>K*}@Y+l1_=qAJ5O#E8$x zN-+Y=Es5$A+c3Las1VmESVm#>qx?X4>0`Y5)yT2a#Qa_~LDnJ3adH&%rY4PvL|%VaPWO2B1LTxz0>hg!qj;D(NY1~$l~y=yh)F5vc}Yc-vSdYWZ0KkMEVKE zviTbt``B{flNu>G`ZDSPmPBNxCM8D8>sb{?R#5H6m2=fw^hb`tiUfP$mqQkex_V`- z&TY-4;&>&AWGsCjJrAKiGv;vk*U%a`SlF_mmxbLyZ>&uS*S(HU(~;=o(R7OS1+8Te zMH|TGtQeEtA0@(RrEq3}L9!(jug_0M-KVSDwU`0c@mXeb@SSrGIQZ^1Ep%1qK1_=i z@#aJ42BdQi!Fo{-ExqT=@V?`+fXgx6v+stui4C#0l_Jr4TPakbY6||4?BZ%8w8I8q zk6=UV6bAT)HnR8C`oc~dHi&8Cs{^FY89o?4r~5~?$m-!vEo*}jUJf zB2BvpNj|DMrIU`{5Ar5+<7ra_NSJPN`fzHGJ=@NZ$AR#X8R7ja_{|$Pl&N@7jPzY2 zZ0!pl*&CiO3#~YDpoZ2!Zp*7J=7(&U)BI{z^CL?RfM$`i5}j14V=KK`NXcH5w89x0 zR{5qWSysEW4s;pRDp4KH@(lN|MSJUe+MX9;mef{BN|K*~aU@=h#MMmB4Lx6Mrv_v90cjOMklI1gm7aTeJ=spKKA&fF=b;HN4wV0*EPF9vvHz~PE`-rVkX{>MCVvR zbZ=3@UhO3g+qt2MIocjHrFiQTlxarEnuXhB)ii?fA~l>Ivck9+X_pm7o+FjFr9y}#Bk0(0vJ3R2cavFmNo3wh%Bh>XpSKjU z8exA#wr=;ZKa7Wqj9G}czgl{KRr_|brPJ7rowrE!ipE1yVJh}5Ne?3&%(9}Ll+?7) z?4Qu}6VAA%Z`!hl_0^ISSvbA2T#Z_{Q}ZZg$X!=}yaPj{UC1OcL-9lsI8MaTdZVMM zjT|6b=GtB~(sG-{AkW+BTwkY6I>tbcDK|i80g9c|Q@k9ecbko%xCxE**uPxvA$ z5U7-oGB};&tE3d-mt;ugq*0SfMUGxFSBr5Mh!g9G7tE6aSXi{Nwaik@oH3_UYMfG~ zmZPFeUPp5qqff&xF)*@nR`t3KkuA%(0%Z4Qxkv!ky;|_zkit~HBs%L9r9<$59k+5_ z!&G&XR4}sJwA^*tE9CoQ;m8l}*iX0sCc}1b0>Dl-+mRr+X{L@R}`arB5raBmgdu5#m~$3G&sVu#a1Aj7&c``&K`+R zn&tTH)nWR)y4kC$YCdMve11?AJimtb6`Trb`BLA6Q4M^`Ile^&TLZoh^E|8mOse#jzZxvA(ZlJ}O zkQ#GN^MS6$1Vx;=G0C7wphdH{NLCuht2}^p>T0o8MoOW)3)4NVnQOA=BerQZ^g);D z#4$~ujKx{VGC(szESv&$Bw5V&zufQ{2YD-|TaCWRye8V-OO{p~+rfnu5T)l;<9b@( zsc&v$BwnW$ol5<|S$CJPcCGbZtOFV`ol67_*KlK%Zk$At-$b#NvMp(0;Zph{-MaLYh`nd$=FoAT#YY{z5NHcLx#QG4Ju{(-_!=fnnz&+!F0;=Y@S6Ns!iS-Inww;59d`UTaVx)+n! z2WU-EbZ#D=^?3CRSKF8BG*~Ipwsv&NlAb$-t|(4PAqaG=uaqpcLz%+G!Jf(|R;!h+ zon&x#*UruQr<$khXB1hi?Fg$&N7H0T*79RQbT@;_7s;Kk)1DjIaulyljLx4> zR5E@Nv!9(ikZg{JY9>#od)M-_Xkb9ht8Ev09J;30dF-E(G_$xg}I?YY!F$vt>-u9$9tV-8V zU}&$|myKJOZX@XtMb!BaP~VY&7+v@M8C~BF4s;39P6-6-e_WWX9)Flp=7-`GbtEF0>yS?GOUGGIZI zsmZ}LRZlNY0Whsn#o70QxRZPTu#M}mL~F! zN_?7vU)K@bu+`84@p4=PEaQ@)_?+egT*pw&77>rlFn4;?r1gCL)xo2-W#7k+$I3l89Dc57Axg$BvQxmS+*I`gQjcFl&@ zGN<`{4~ks%>b-6R-63s$K28i9Q%j80vY3nnNyFrA4T(peM|&$& zm5eqz_L7=JuM^Z#4}Gb%4rB}+HFe40l*M%DK7r?Dq)s+xIEVd6yQNdrF1}Q)L?<8< zl`|;VGi#@=g1B*q901X(G|6^Ojy6)>ZI8Bt5WC+Yi!TuJo3CtZds_odWyqd8(n5LE zAq!_(pM|DSW*tJW-9zR2P98x_N=eev<=g^?jdhM$aBD8X>26HRGS%>FhnO&>(aVZ{ zIzIV+)2yA|5jP)(k0NDyBOj+)x%JvsjrCbHb4-I-ho_`W=AR+{GFe+^%^m(ScnaLQ zAOTE4IldKegIN?+Pn(9Et(@jJxQZgmJ|X8+8!R0Xfyi-|tCcK_`19tntg797s*B>8 z9NpKF4Rk>}Ul6nN-k3ryxBKUHUB^7`m>J={^bE2K*=wx4v!-&bsbzLBr{rQblK#lv zfX1&c=S++UZ*6h1A72`DTX$I)j!~)C(Oltrw%!NuFbFfM`ls8ips_F3B3asG;gSc- zT&0kA3!i`!A$6oyjPKDpHeWNrNbJRY-9{3lw2;$ToT=^`O4e2Pjm|@V_0~h)%b(v! zwLiCN#5?@_^qFceW>D7HsKO~_MTPeimdUy|nUeS9TUF07VQws60CR7g2Hl0IhUZ16 zIS~b~i9HT|1&ptodhwxwR~MewTpfDJl7fCkCVt}gP{P*loruKHn{hWD&?Zy3L~#G%)Q@&vWGTCje31DOY$!ETqx zs-w8a)ZKM<`hZ_Fo!E=|u*uUBS+LoC06z3rBm!^67n*yY_jFmmGPV*Qq}XWnPVRlh}JT z>Ie)jqY+Q4>umPNn!g8AW4TGl58`;XtcRtnx5RR~N-7oP=rXZbeORY_raOy+Xi17I zsjcQM;lncq2*0?{onWfrqiE%OCQcb$c;6IL_3=#69*V{wU?(M!yzfRjUn(BBU-@)+ z(*o)N5;v-`W6i9nZw2Lx_52kQ5%uH5}t#gT&^-NdX7?>sgwLa&F- zby_L;2_9@q`JE`TDf&sSs)<-T6n~)@AfY0qgWc=oARK_t=_NOFBEc4V&jfEuk~@6E zZp(G3s9sve=*3C7ufvak=sj4p{HPwB$HB)7Sx`2+N@r3??}ZI2x5aEWMo7Bo&t>bF zRAYqwq;6<#0&7`QckdV+bvE z4Hyp!JE0h5q7YjOGj7Z%Z8>dJ_E?r-1Mp_$3urXn^C)#0>?e!S6^)x5f2~WmHlr{A z1ln|_rZlHG%ycz$65S7#NgO8n>)+R^T{_`E|8kd3*itn)r1zaPa8lVs+O0k?1oh>l zvYv!VHpojD)ZhMv^QwMk?jfLRk94cj5UQx1vp2FrR?atnxi;i4-|H}G3Hk{9+z5_6 zJC!kt<(Rt|55`10sH`PxCS$Ei7drNuOS~Gtr;-X3oZ-;bBG){pJD*LqbN6hnUqYwP-~3 z>ZhyMt+3BPD%QCaO?t0BPKdRCkskh`9284TgP*0ff7Sin>_BARG`Nk~6ty>_QcH9x zl~UQrKG%+VatWBsQk_r@nKVu9$bPv?G3H6AD>Y>Imt=jBB}=MK?Y9$0*W~1E>0`kc zHGiBHzdhlA3L_aNc7UV){Fa8jmlDSvv^gc?B#I#k#vO#~1#Sudo& zF~NKQ>!j-BHB?hR_UwQ_;-qk7M^HRN&;2k@!9n$;r*oQQ2SY0%uAQo+&{{SZy^jty zn8T#}WR*1u-u$^SA66=8=TH)=aoD#(wmS`S_ADygzd@~7!J|bC0?`2~$DkD+vag@# zWxSepAw3;PM<~fw;(%EPAdSx!PsX>ck~kl`nkAD~4@RCUa@y!3xu#FFfR~PLiV#N5 zccD-7r2a7u-zJv?=_4)hTWgGpa((!&KfNjvJ?U3Ro_aho6Gg+<>1PqxK)23K0*T5( zsxLAxuHG=M>apphB`n>?QE@&A>`Wp}!R5_I^D3g7y7-zSZGL_x(&2cl4>uXfbM0az zg`uL=dcT_Wy5z8(xZdcM*Q-{^;M@ZCMtDBtQ1;$DzVna&nz7vACFm10OHSL^f`%+KU^6EA1;ShP&HL zRSv@2^k_OcNJ+4e(~xSmlf0%>Gur$G`1@r#mulvqwjc6`v3n!?o~+#Us0=-&u{u1U zpopIv^w6B`U+n>zG7|1?T0tbyNH&pm#`${WSRg_unx{>plX_MsZ{(1weS5-7c1Gsy z!gCD9`C;$RNf}qYmHHq9_EN-lB+jSg&sTtn^Lk>bPELI4ubswdrF4*FY8*)HQ5Ykvf2DkG{We>q*%-cu}nH3Ryp$}v@KwPW}{tyJ2HO+rk5u(5VHoy%$M7zGn_)d9kRVj%3a zadLHW@`c6YNV=9|0VX?PBhK-lqq9SRKy&Q4N{ z(-;IhHE|Je{qjr36&BMXt=VtHq@t23Bg!U~7M4x9Kd+F_IdU_w!efrk`S5B$@uUeJ z?HbCQ4hqiG`Pxp6jgm=UN+++rO+o|iE6pz{XxDF2adCd>Wcjdw3n{d}jF&kRhTrAU zJypCY!F-UWo`>_5TptvlhuNlg9T;9xjByqhj+;_g;DL)CJSPiO%TObnbdsxa4fzvi zW0R#qhYx+*5b>9&YQ7%xm^(W>@1RjZ!ezL>oSb&)@M+!4Otl3_Qz5O_WCP$QwtC1u zR6~5=1pSsW#7KCNznPPC4Go9DF%FfuQhOKHk#d6V5J6o zPoK^9YKU>}s>m}75GIRED@VKs&u~^8nUDG{lmsW;0{nZmKBNmLV(c%MR{X}QK|9-w zn(vP|Fu_)>BM{y(vvTQdT%AzsbY%9!{+m!%IC*m4{4(BS(g8~^7}KJn^MVXxW7x>v zS|2|47%gA7#&w~4UJKjIc+y(xo;v6JL$2+^h4%@IpGc4*K=#}eO-WOx`-t~q2&BQ3 zsX~slEo%Z=7AgfH#)>!1!gH2Tt?2oiIU~>kbGC|^d`@v=-L@$P*1C{8Bwn?+ceLUw zYZ)0qK-+jJEtgAcP=XtewGh7>ZhDj`#N|A~vu0JUcqVUnKgYpoX!!mb#U?zFq1=TB zGR+xHcjzVn5iKUuJLCFPW>Qsw-CNl<;PfE};_3p6Ia$f>lSO@7T%g=wcxG)piq?Hi zUR>LEDes#EC2wsi9Y&5VzD|Zsu2ZhnZrpo9UClN;J!C!rXY=#57ZOebq+mBh4KtgB zF<)P_k1UfMZ?k5ock-n2f8DWfQe!^b&~1rP9L7z?GJuijgLv&{WG$ZC$m02Hww(?7{87^$zq9S4bMh z!Ik|>;@}G5iXMsN3fg;dg<8hVmHkU%a3x0_*C1dezNld~c(W+gl)YIKaWWfzs|GZ4 z`+aYFIb$Fv=Pj)rJ=c+(-krI;9Yv>T7sUx9Fj>dbiJjfEE zqse_5FHasx^D!Q4YI#PiYO=1zl~RYrU|%^r;PK`=~s;P$uHr7}O++ zY&y4za58YMeqW139IqEv0 zbleq9)Dy&BI%F7#o(Q&LE1H;kg37G8uKx2#lCn)p4@-K@d7owKwH#>}IiF?cn8#xy zGXVWK`Z|iwNKvzWp9&=E-^Z3@_qhE;408LCLtHhQXgt>fn;V{MUGb2+z)a7L4p=gn znj7Or;=E#TL2Ax1*A-LOMu>eVGNEeDF;^Ps)kpI{)b^(2R&^MRK_M) zg{FZ$mLS=9`znkiwEmLdYVs92*Og2Ao>Z{)Rj58ieAR}YN?A`NKZ`)8c z&&d`cTZuIQio{cViS-Ur-i#c#K=rnbbQOK?Q8ks{wh~P+4%+ zp|(O~!73^jD>EYCojWsagU2vWLeJseII>)dzDWNj2P{FOU(#XNl2ps@Mo~tNN6P21 zXZX->DIuiAxw2Fyj995Cl>$N^y{Uk7aKa|79$D%k#g9WyeIfj7qS9NxHdR!?L&WzJq1|w)Os$rkNNqFh5;x(Jv%< zw^r>j^VJ}(~Q88 zGBMp09Z90pL7ioZc=m=S)bXpeO>X39Lm?gRVbpKxM6zF126Rg6kT=>C!H+S_4i?(APB}k~x*)TkG$e9KlF^QMo8DDO?mww`w8tOjnUh4buJIH(*Mh4{EVhtkK(9*RvR7+R`tQEc8! zha+d0>gBap?uXt)&wG_`RqHZ1&RVRq5XJb7TyZt@?uf|i;>d$Nx^*p$=grRY_*9k{Z802fG#zOVE%RTcdkL|)o`Vd@c{pCXRj;n^B6t?d_Vhc$l z=hqqZydl$mYG^A?&q9`OEPCxB;NYNtSHd~9doz2#oVaJ)z6!T@Ynw(;dZ9J&IkrM0JDLr6H=nbS+ zvrJZ=!l%|F%Xkch(x8Y89QHbY>u`N4l()bEi_?kiSJ#C_nwJR;I*V2kGa03RV0)be zM%gP8lUl7iUSOKF8M~mCBe%$_McbTWr(_({)Tla#KKc;MSLhQ|k9gS$Xfm$jz5|hZ z_p(TucEHnN*%;`UbOT!nVttZqg;q^cqXk!m;t&#-BsC}CTZ%0?j=vx-lF3>!ADwV`Q5-uFjb0 zoSFUdib^IF7iwO@xbr#P8aifQx_vpz>5zjcG0KC`3|k^rES@1(E8)h(dFqTrG;>Mo(`U z6QqbTiBxS}ljlaGQPY!+?X4BGum*B3;TyHA0Q1&`UKQE19l7gX1Nr6jUbivxRRS&N z)Sr1IkNiUT8LX$)H8EJydIU}LS zhDG7|Tk&>Yc*Fki#%Z)>?U>ryFp-x;$K)}%IyT(yqpSgKoOGlzOpNt%yC1o*k+~>K zB{d^EWlikuJg5ojnB3_YD2o%ZsH3ENk_Hrrp_k-F0FuP8RanPwbMPIqq&3HmDWM1j zjn?i(v~G025nRmii{o>v%h#Z;@E6DD5wCGHO`K9XG{30Wv{JKW0i!&yeTZ|X`uagh zqrAK!MpbtgbRAG~X*7`KNow;Dj_CvIf3*5LgWgbwHlv5+<>U?RGio&cB2%6mQDy?w zP&6l|kQ^|l5T)e}9X-Mb^*XkXxp^I1#j%4O+fm6d+VeC`M(T+_ykwcNeH{-~2AV{CUFlMmK~ap0!tO+$A&LDQAkFD7WpKJ|Z)zSh zTP&)DQ-^sD9kS48g3a1fru4gz`bbhV2M35jtPjtz<@Ax1ru8qn$2v~lS>%$Uj8XeI zeYoYK4$_aNrXkupG;>FG$gHuoY6zzoT~DVuC9P)^AjNU$h=Q9;pPUe!o{{n$h}jHGScPYSe78}=p9 z#%1K((8Rn|7(n^Ne&Z*Yc4UI7s+V#zA&&k|rpz{`YXh3U)-d;QmwSzxVH4eu5`<(X zKbUSX$*o3SfV2FK0(sF0$)ifMM!_woGJ>%?v6uVv>WwZU&~ui?EF@NL*zC-sAk-dO zO|%&-uZmS~n_0DMu5+XQ*fCT!felKnB%i7~VTn=@l8|!cdUCU{;X%$ZnhaXd#$v0V zP1Rv$JykV*1wt{n(8cMghSn7rR8l(CB60d#@?dH0I^F58rU4OITBw=S72{;Ao6S9P zLJf#vm#Z9mRM!J-nTQvrb1fw?M(3oxlf#MP23o~VlKzxhHHajyzVFidPMTDVXCDWZ zOmQAZZOFjkXvRyAM4GwSbZYM9m*{ov)Yx)XP-8wTq8nd_UCH|H znE)!aN5nagj@naD3CW52$S(;$@;I_D_+kd%yM&h)f=GR=KAIv58mKptfX{iQ;dbHX z%EfcMR@<<19+RChhV~9L#5+cbImQ@km~>eC*kr|Z*SRE5xM7GV;;Cn6!O$EMn{s{W zElN6ncvDW6Isxg-oOo*F+65vD=fSZZSune5*LG)=7wlEw=&gI6@3%!GB9ExL1a(Q` zk1-kN^%zog*ELL9f^AOuz;~U~hNhO*iV;?ixmwVctvBa6%CzVU4rJgx6E-)Z2Vie& z*)V+n#B^bIDK&1AP6!c+Dc3fYvxTv^#3rp+R|}BvXkmBn$4sH>~zv zsCv!8$oy5fe}Fq%t^`_VCu(T3cB(CLU_<*e8B;ASlVh@0K@y)aWF$#LR9|tKJmJhU zBVX5w`zQRPw`kkrjwut1d-b@ZFu$N(uO4G372MyeM`jJnP1kD;YHiSPf z|DM8Z7|ycnjCnTEa3DBAx(ro~yIE%0-KwXSX|H@}pLGzo;#)@8jdU#1uggps360Ap z-P`@ckTKy~C{>dgCZ|WBZZ<5j~`}MmHSEz#^rMb{|2FB+aku^(JVI ziX-LKEA~?7M*631xGoW8qXJsg_sRCRU(xsLmHizC(**mNTvfyuG9#!|j8Pm}=6&kx z2(cyFEBvy$11@@K%lr(G11=NqGx#|m(>v|9(FAqtinfO7aV&lf!GQo0)s$jGmKl3( zjCF-H&gJ3b)A%tmhqj&-d7~&}1IPZ{gwJ?v!q%ca=+VnNgF3brxqgxPY7F^-$Y0r5 zXL>EB*!+aM)1qt%i-&TJD5%GZc5HVBlI6C9_s=xE7&fA_r1fD=lZ%Rvb7~y#7zd{I zh{C`MG0`|qt~v5ha1w~IQ`K#xv!Ic=7pQi;HMvvTKMoz&1HY*&_Vthk9=-W9*dOM; z(OW`Ur-u;Oi^8s5a$cy9(P9!cmzFVI0e;r6SuQRKIL%WU2vd!AeSEm)WqL%!HVIUU zf%SgMbTihoFLG!u9@%ynJL$rXHSeM@UylKhA44t~og81)p2v`c;DEUoBp6u!Sb$_Mp+f=@E)3O6amZCw5a315Z0?dD+6aNL-hx!CPKT3frZ8qu9!k zF*--wde;If+TzmcG13w=79C|N(k9^rX`)}}kmn;Bek)ZD?+)P$Q;MKjnl#|}-yL#j z?C|c8!?!qWuL}%aw39=J7-qPIqFy3$z?NW|BK0LAhi{$JOGFOs6GTUy>FP^F4&SPA zPA?HTAV?6MjBYy7!VWroD`r-JQzK7Jz^MTRmdF{Ej};kxLfRiVav*cOz73o%_|O?f z2RkQaQ+lKN#;Du^RI#5-t!$V9v^6Q6)a)B0xy&21z0R;keDJd&#zG@}YF72ua`r^Y z3It9Ay&y`46XI*4v=`D2D91SJRU{12DjRv&(V0+LX6=Rrk&#Q`M8r(nVPhwOxT~FV zPV;1+8R9zS`cU0QRwFo66IBcx-{JTl=24%c#yGITD7-yu5#Cxh&lI_Bj2D9)R?~$O z>Bfq27U`}F9%s#S?c_SowR9CMp<(FAx`tSUI$Z$k4Axmy%}c>sv!2OEM(6f+ zJ=0@8C{56PxqFdFdc9rmv=i9GPN0lDoC|$p;K-p_x({wDvLZ^QC&}<1nN|kY579*R zKP@W;9xA$vU_OXx%=Ux$a(aJ6mcZ3Yfl*04dWB@#aqSw#LcE|Fd1@togF6eR1KNYZ zcgO+IA{&JNI7-HgnOtJOp1uUiP zu^%r`S!ItNav)N*`ruAwq4g91{U{5e=(f2gG@ZsC9Z)uw)`7h`v^#RGG;|E)wN1#Q zk@=}SxU5?p0}W-MXf*0*;DIc~2}^6#oJT>!XQW(@D0>-!}s18$QPi{c?{&_ zXN;zMG^8G7g^(vJS}(}d>91VB7fHpjwU6eeUPv67%V7?XI*;`cH{uY>L*q8J#{xNr z^0gjV&av>U2PUG2PC$LO^pzh~IMxHpFH!QXn8_7-kU+o)Y2L_7&KP8 z4EQ0VXm-@*)SG6xoJSPbPHXGXA8myasW)l0=)L+fRilr&JJggReQdGik1;0n6Q>Zm zI%-Uu$)zRk=+*$}U~e#|A8Yl~OQkS?a-}b{i!{!vd0KlnRj-{Dd!zP^A|y`=0khh9 zo+QwXJk+(Dc02~pxj+IX%4q9}G-2{_k+X?Tet6mSan{tv$@ezZTWlW7wRO}8;}J;u zq@IIRqAL+xnpqpj00>nM1G^4GjW6+KJda_-U4YpGhsowc1%9%MsBShXjT9v^U#yFx z7_&z|wWTfNHiQ0nXYL$|8G8`(vkDt~;Qb|w9D8*8|4pG#4+74sXs8FiU!s7hM|YW~ z@T`4P`s3Y<7s_=sqF>(s3D=R8j$g=iWbNbzXo&89nGujnc{mT^bsgoxb!7L=G)0He z&ZFG+-rgB2mEPVXFDm2m9@#03!+T_1mhhL|4e58)A0qVjnhFHopxkjlI^TUEZxIxwT1U*Rm z1^n+;cA6c~vHf3~bKlkVWkr78{&y>y3+jKjqBaj-cPqm4exCk!EAn5;|8DK&g8SdC z=+EaNL5~G}{*MZJBIU5USuxdTQ&&!0p3C#VdjTH6^T7UdViMLl`dJU-c~D5>r&tFo zsb;b0!rkbn?mV#n;xP~_lj4toSliW&a`jpTx%w<#v)t_1;{2D7r&wwKf6ZO}kCoLC zUZB0Q%XL9SLZ~6s7&XRKK2}NzAtKt^R;3nfV$(D(yQ^#iEZMtTV}G($#DJnGf(nXN zaj6QZL0uQYU;B5My?1y2i_UZAea|^_-g!Uny}OrdLPYO7bLPzXm~&?4JaZjm4^of^ ztP(kl)Pl%^6kyIH50d?SMjm8Ka~ye)%o~e5NFMVSd64Zi9C?sz8jUKomQ*S+-?$6?M ze>SJOz>yPLE`*Alpeg`9nVE44HNuP!37xscg@FrY6X;@zegN*v&wBXHb)-W}S+2c1 z35*}3JC%N!kzRusEIDMsgp9Z*@Z(L!OGnlwwiHGw!Ue)TKPfQ|m)bhePi;1cmD;P@ zm1r5Io-s4Hrr!?gIU$#MlqbHKxnznwCn!tQ)?*#Jyl>B5pyw~DTwUZ42!X&$6q=%? zuYQl`_565>mXvLwbLQ}8lq56ty@AtB2n3S>C=~!pMGCZ}B}Tkf8(Wj4BgI?5dds6T zLd|B}`$Y3G03ouC>cPrRFajhDrXamHw{4eZ|9z1FY*qPJyYESE9o@9d^bX@R(P{yt zy97;(f$na2V&|T}5B855w8oZU+=*6O2yZ9a1sMKL8eJq|U}Hd@l$#xkw|j7Of(~Kl zh7j=tmpZ`k1YP|&c!Jy)o}WwLnIB@}IS_b)OEc(qf>AxdcY+Y`xPEo{MN<>Uu#&|` z8n&GPUUk5DxpY2SP|0E93A*bIhbM$t8Espb*fDgh=scif83rnsPITTu&I&q|s|2vU z#G5Krk9?@L;=Y!=>1)Pg6TGh%9G?(ER^hNHRo0$FG4I}%4IuAdye>U55i$;ebPR|syoX`DRQ$$}2>tXejw|LiW0&r)s^;EG*fIj=2hZw{ z{y6pH#oCGQane6>o)o3`ikw2;rEJ*up<% zk|ks&GDYUO!)pwrL3l654-U>04lh5G#_xd#c`sTg!EvQzb&h%4i1eNE>qrYMdJN3TnJIncQ*gei%#uY5He7J}xM@Om4Ut&NMo78Tg{K;V$3})FiCq z9^bWVY>!_(=0Q_(8h6h7XkPQNaWDNH0AASW0R#h2))x8|8zT;)gY;j>gWzq`mCU&L zdHUzR#~!m3>B5M~mVct^X;|zB%~9aM5X(qT}al zXU=+;BA-Wd*DIe>9Jc2WMHt*D6O?Lo{HP0Yh)$PSpRT*LQ|A(z0nD0Fw*Q&&Jqun? zAjS!`^Sq6&_Rd+-!qkMRFDM9>(>qF7b=(pvX=KK?FUY!$4>O%)(pW1&Ql_UpVM(-tSkGQVlG2;%>C=gpu=|arX-ylAF1H-K@i=2@&j@i= zQ5=8)FtJ{|Rbt6HYnNWfTk<0Ypq@-%GA3&OlM20xgGLt)BuwwZoqxbg&^~O1&C=S)GRaa*TR7c+SpWf9A#(G@j-I&CpKsL>WNhZ(dkt!O@Rc(8-1i;Sv9yiy2l z?W|}!vauSuRCf@uXn!?U4VYn#OSH zYl;kuX`@59%S*GH{^8`zH51%aTI#0j5_}aI6&e((+am2CQL|EvMXN zm`1pUI>ni+91o1UmXL(ATZ>47G(=?Zk=N38q_cMXrRs}x!!#F`G+`QwprtWmFE>{& z&~q_6sSGS>mt5;vs$EQ|A3cCsww?Lex}L{(f~32ze{^X0!1kR7_l-R}biib`br~>X zn0W`~{PXoaPd&UVjUspKv}TYZVwV|B!pB+ZRz|8kd4B5Znd%#_O^>r%Sdn$J>T?Ff zK^zuAPzTp@xGTBNj!AK~%`C5e^3}}cb8t=m>pjm0tu*$K42crU+^kvp23rc!LJ@L0m6;sGtYi2WTi1DRAwlo-0pmBRy$r<{+g=5DB zwVc039;$nd2#TU>L=ZK)Mg)`jUL&HhmaP%dYIAEuuxfCP2p;pdMnp3$SR(2M-L6^oe{=zC{3Obe6yL| zk;aTBo;F&`Ib)q!7a6mGVhyNcm(ouXEo}@p`r;)=(*L#KDv%EvlCKG4UE4Q>=>sR< z23S@(nl_A!X!>cP=@j<4diLq^v}{C6)w21upqAy+jYJ8qXxzTKQvKj)_I!q?%Po$G zQI3WU+aenNYd-T_{W_8Iv}?pl)vo!qpmy&z7j?gCFWVG9pEdNt+)TWu&z?gL{8t~; zUKl5L%-U?#Z>0?*cm_*~XLQ+I>u+t>Qhw}8HGSFqXSezLX4*`d7PkZv6qy+l8FIj( zh-zNO{bbyW@NdWrUp~|ixLTpD8omKY~;k+X11=pUi$udx2j~fpj3P1voA7|`-(Rbj1iyKv^C&FOkMN7m}#nK z9Tn939VR4Eq02O!pg7F#p+7i}jGDB@?R3O=gj4gr>>yNRrZRzSK*8Kga>qn zBmGSqh^3Z)kx>|}uN8G9;0%`i59Lf7jUFqjG8D0z3XTI_;zZ>otgcIpV4tn%*!dYc zU3SobB9G5Sj1-s40pW6Kiz?GyeNw0vU$VpI=jx8#WIfVQtR_aid(Y5l<>0;{zk24} zl@Z<4(HoR~G!@3RGNPM$!^)4EXzno%#}i_&pYQ8JfH4eeV-bf1A01S^sY-izlIq#` zg~ko+ye7mR>uyUIqL{<2;5>*#J2rjnOOkQ=^hEUylSQlvS0>~ITiMxd9tdw7HoNqa z{^0`^f4Flg%7()C#T6u}c+Q-roPnJKL;vu2wV5|KkgmmhRM7fdZBcmgg*AiYB@Ui; zh1ofkSu#10s;SZMqS5zfUz-hoC|--lKWx5DCO|0GR+E<<@7K9kJDPFYtIefRnD(2a zl*JIe-CQzs;NY0Qq0L`YWz&>D7n_>cHyL)7=Y~f6_qOl$mLg?~r+JDLZ8F3?I;dk-%+4<;`+a1nC zFf40K_$Mk=O9O%1;9AN7#1k`moNi?(S5IH79(u8Q@oIJQQ$_a8_MrP*OiO&^`5NGd zaMF-lh<@W@U2f8^WZu!S`jhdg$zxQdOIryK6ljYRRJF5wueZ=vh&B!SO0U-9a`P+< z0EBCk4kmhBTzl=Jb1(%O1`r{flsFjyaR@L_E?KKQ{rRQp>mSowpPBCr9AQB1ZZUAQ zFc&x-43~t4x!1@O#fglc^W%oImSz@}Mzf>&3)?EaZ}K(Xt18^>-^GQ{RKLDslNDjL zB7zx!^_!IGwMrZbyyxJSUzyE4mwHn;wAo287-pwo?1k~s#~!3p23pgx8)S1;J#;R( zs%q1_O)O)elNDmjqeT>sH_swvyjS~|Thd?ZoQXXQ3Xhcm4^@W4lc_Q^b>i#XKeo>^ z|JgMN-K;@cDqs^TX2XGB9~+O{dYejU3gnu*nd{8DK6BaDORdb+%q{3$iB{9G(7O`o zq^WW5q8|F!hBn){Lh)KW{$cZTH36FRVT58eH3K?_N7^`{F_5ms;~%u%Cc_^{wJoq4 zO}Q`*Pl`x>iqZ*?PN7Z7Ee#qu)im d{HfGt!yk&*;_(lgZ<7h&i}eb*r4}w&@PBZGlAizo literal 0 HcmV?d00001 diff --git a/resource/en/fbd_editor/translate/fbd_editor_en.ts b/resource/en/fbd_editor/translate/fbd_editor_en.ts new file mode 100644 index 00000000..6f0354d2 --- /dev/null +++ b/resource/en/fbd_editor/translate/fbd_editor_en.ts @@ -0,0 +1,6128 @@ + + + + + ActionAOPlugin + + AO控制 + AO Control + + + 目标值 + Target Value + + + 使能 + Enable + + + 0-NO + 0-No + + + 1-YES + 1-Yes + + + 动作名称 + Action Name + + + 超时时间(单位:s) + Timeout Time (unit: s) + + + 控制测点串 + Control Measurement String + + + 失败重做次数 + Number of Retries on Failure + + + 输入控制测点串 + Enter Control Measurement String + + + 测点 + Measurement Point + + + + ActionDOPlugin + + 1-上升沿触发,2-下降沿触发,3-高电平触发,4-低电平触发,5-PID触发 + 1-Rising Edge Trigger, 2-Falling Edge Trigger, 3-High Level Trigger, 4-Low Level Trigger, 5-PID Trigger + + + 1-动作停止,2-动作跳过,3-动作自动重做 + 1-Action Stop, 2-Action Skip, 3-Action Auto Redo + + + 1-动作停止,2-动作跳过 + 1-Action Stop, 2-Action Skip + + + 目标值 + Target Value + + + 使能 + Enable + + + 0-NO + 0-No + + + 1-YES + 1-Yes + + + 动作名称 + Action Name + + + 超时时间(单位:s) + Timeout Time (unit: s) + + + 控制测点串 + Control Measurement Point String + + + 失败重做次数 + Number of Retries on Failure + + + 输入控制测点串 + Enter Control Measurement Point String + + + 测点 + Measurement Point + + + + Add2FPlugin + + 加(A) + Add(A) + + + 运算模块 + Arithmetic Module + + + + AlarmDelayDlg + + + 延迟配置 + Delay Configuration + + + + 延迟时间(s) + Delay Time (s) + + + + s + s + + + + 过滤条件 + Filter Conditions + + + + 过滤已确认 + Filter Confirmed + + + + 过滤已复归 + Filter Reset + + + + OK + OK + + + + Cancel + Cancel + + + + AlarmDelayPlugin + + + + 告警 + Alarm + + + + + 使能 + Enable + + + + 过滤配置 + Filter Configuration + + + + 延迟时间(s) + Delay Time (s) + + + + 最大值为14400!!! + The maximum value is 14400!!! + + + + 最小值为0!!! + The minimum value is 0!!! + + + + 过滤配置不能为空 + Filter configuration cannot be empty + + + + 延迟时间不能小于0 + Delay time cannot be less than 0 + + + 告警延迟 + Alarm Delay + + + + AlarmGeneratePlugin + + 告警生成 + Alarm Generation + + + + AlarmPushDlg + + + 告警推送 + Alarm Push + + + + OK + OK + + + + 智能推送 + Smart Push + + + + Cancel + Cancel + + + + 收件人 + Recipient + + + + 移除<< + Remove << + + + + 添加>> + Add >> + + + + 附加用户 + Additional Users + + + + 多个附加用户请用分号分开 + Separate multiple additional users with semicolons + + + + 编辑 + Edit + + + + 推送格式 + Push Format + + + + 推送方式 + Push Method + + + + 邮件 + Email + + + + 短信 + SMS + + + + 电话 + Phone + + + + 邮件标题 + Email Title + + + + 格式配置 + Format Configuration + + + + 预览 + Preview + + + + 自定义 + Customize + + + + 模板 + Template + + + + 数量 + Quantity + + + + 1级数量 + Level 1 Quantity + + + + 时间 + Time + + + + 2级数量 + Level 2 Quantity + + + + 5级数量 + Level 5 Quantity + + + + 4级数量 + Level 4 Quantity + + + + 3级数量 + Level 3 Quantity + + + + 应用 + Apply + + + + 位置 + Location + + + + 等级 + Level + + + + 域 + Domain + + + + 内容 + Content + + + + 状态 + Status + + + + 专业 + Professional + + + + 责任区 + Responsibility Area + + + + 设备组 + Device Group + + + + 测点 + Measurement Point + + + + 设备 + Device + + + + 循环 + Cycle + + + + + 警告 + Warning + + + + + 格式错误! + Format Error! + + + + AlarmPushPlugin + + + 告警 + Alarm + + + + + 使能 + Enable + + + + + 收件人 + Recipient + + + + 内容 + Content + + + + 推送类型 + Push Type + + + + 推送类型配置不能为空 + The push type configuration cannot be empty + + + + 收件人配置不能为空 + The recipient configuration cannot be empty + + + + + + 标题 + Title + + + 告警推送 + Alarm Push + + + 循环内格式错误!请勿修改自动生成的内容 + Loop format error! Please do not modify the automatically generated content + + + + AlarmSplitPlugin + + + 告警 + Alarm + + + + + 使能 + Enable + + + + 输出个数 + Number of Outputs + + + + 输出端口 + Output Port + + + + 数据 + Data + + + + 拆分个数必须大于0 + The number of splits must be greater than 0 + + + + 输出个数不能超过32个!!! + The number of outputs cannot exceed 32!!! + + + + 输入值不能小于0 + The input value cannot be less than 0 + + + + 输入值与现值相同 + The input value is the same as the current value + + + + + 时间 + Time + + + + 0-时间 + 0-Time + + + + 1-域ID + 1-Domain ID + + + + 2-位置ID + 2-Location ID + + + + 3-应用ID + 3-Application ID + + + + 4-优先级ID + 4-Priority ID + + + + 5-内容 + 5-Content + + + + 6-状态ID + 6-Status ID + + + + 7-专业ID + 7-Professional ID + + + + 8-责任区ID + 8-Responsibility Area ID + + + + 9-设备组标签 + 9-Device Group Label + + + + 10-测点标签 + 10-Measurement Point Label + + + + 11-设备标签 + 11-Device Label + + + + 0 + 0 + + + + 5 + 5 + + + + 内容 + Content + + + + 9 + 9 + + + + 设备组标签 + Device Group Label + + + + 10 + 10 + + + + 测点标签 + Measurement Point Label + + + + 11 + 11 + + + + 设备标签 + Device Label + + + + 1 + 1 + + + + 域ID + Domain ID + + + + 2 + 2 + + + + 位置ID + Location ID + + + + 3 + 3 + + + + 应用ID + Application ID + + + + 4 + 4 + + + + 优先级ID + Priority ID + + + + 6 + 6 + + + + 状态ID + Status ID + + + + 7 + 7 + + + + 专业ID + Professional ID + + + + 8 + 8 + + + + 责任区ID + Responsibility Area ID + + + 告警拆分 + Alarm Split + + + 映射 + Mapping + + + + AlarmSubscribePlugin + + 告警订阅 + Alarm Subscription + + + 告警类型使能 + Alarm Type Enable + + + 告警类型 + Alarm Type + + + 告警状态使能 + Alarm Status Enable + + + 告警状态 + Alarm Status + + + 告警等级使能 + Alarm Level Enable + + + 告警等级 + Alarm Level + + + 位置使能 + Location Enable + + + 位置 + Location + + + 专业使能 + Professional Enable + + + 专业 + Professional + + + 设备类型使能 + Equipment Type Enable + + + 设备类型 + Equipment Type + + + 责任区使能 + Responsible Area Enable + + + 责任区 + Responsible Area + + + 设备或测点使能 + Equipment or Measurement Point Enable + + + 设备或测点 + Equipment or Measurement Point + + + 错误 + Error + + + 初始化失败 + Initialization Failed + + + 未知的属性名 + Unknown Property Name + + + 告警类型已使能,但是告警类型未选择 + Alarm Type Enabled, but No Alarm Type Selected + + + 告警状态已使能,但是告警状态未选择 + Alarm Status Enabled, but No Alarm Status Selected + + + 告警等级已使能,但是告警等级未选择 + Alarm Level Enabled, but No Alarm Level Selected + + + 位置已使能,但是位置未选择 + Location Enabled, but No Location Selected + + + 专业已使能,但是专业未选择 + Professional Enabled, but No Professional Selected + + + 设备类型已使能,但是设备类型未选择 + Equipment Type Enabled, but No Equipment Type Selected + + + 责任区已使能,但是责任区未选择 + Responsible Area Enabled, but No Responsible Area Selected + + + 设备或测点已使能,但是设备或测点未选择 + Equipment or measurement point is enabled, but no equipment or measurement point is selected + + + + And2Plugin + + 与 + And + + + 转换个数 + Number of Conversions + + + 输入个数不能超过32个!!! + The number of inputs cannot exceed 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the current value + + + + AttachDlg + + + 附加用户 + Additional Users + + + + 添加 + Add + + + + 删除 + Delete + + + + 邮件校验 + Email Verification + + + + 电话校验 + Phone Verification + + + + 邮箱格式校验:未通过! + Email format check: Failed! + + + + 邮箱格式校验:通过! + Email format check: Passed! + + + + 电话格式校验:未通过! + Phone format check: Failed! + + + + 电话格式校验:通过! + Phone format check: Passed! + + + + BitSplitPlugin + + 转换个数 + Number of Conversions + + + 输出个数不能超过64个!!! + The number of outputs cannot exceed 64!!! + + + 输出值不能小于1 + The output value cannot be less than 1 + + + 输出值与现值相同 + The output value is the same as the current value + + + + CAbout + + + 关于 + About + + + + 逻辑编程工具 版本 V1.0 + Logic Programming Tool Version V1.0 + + + 深圳市远信储能技术有限公司 逻辑编程工具 版本 V1.0 + Shenzhen Kangbida Control Technology Co., Ltd. Logic Programming Tool Version V1.0 + + + + 关闭 + Close + + + + CCallPlugin + + + 收件人 + Recipient + + + + 内容 + Content + + + + 使能 + Enable + + + + 服务器地址 + Server Address + + + + 用户名 + Username + + + + 密码 + Password + + + + 服务器地址为空 + The server address is empty + + + + 用户名为空 + The username is empty + + + + 密码为空 + The password is empty + + + + CDiagram + + + + 错误 + Error + + + + 一个输入不能连入多个输出! + One input cannot join multiple outputs! + + + ====================FBD图检查====================== + ====================FBD Diagram Check====================== + + + + 当前FBD图中没有模块! + There are no modules in the current FBD diagram! + + + > 模块 [ + > module [ + + + ] 的输入 + ] input + + + + + ================ + ================ + + + + FBD图检查 + FBD Diagram Check + + + + 图元自检失败 + Element Self-inspection Failed + + + + > + > + + + + 图元的输入 + Input of the Element + + + + 连接了超过一个节点 + More than one node was connected + + + + FBD图检查结束,共检查了%1个模块,发现了%2个错误 + FBD diagram check is over,a total of %1 modules were checked,%2 errors were found + + + + 读文件模块错误,模块不存在,请重新安装程序! + Error reading file module, module does not exist, please reinstall the program! + + + + 最后刷新时间: + Last Refresh Time: + + + 读实时库错误,停止运行! + Error reading rdb,stop running! + + + 实时库连接错误! + Rdb connection error! + + + 保存模块表... + Save module table... + + + 写数据库错误 + Write database error + + + 保存操作完成... + Save operation completed... + + + 数据库保存失败 + Save database failed + + + 数据库已保存 + Database saved + + + 数据库保存失败 + Save database failed + + + 选择 + choose + + + 文件中存在输出参考模块,可能被其它fbd图引用,确认删除? + There is an output reference module in the file, which may be referenced by other FBD diagrams,delete? + + + 当前文件中的模块没有库信息! + The module dose not have library infomation in the current file! + + + 从数据库中删除数据错误! + Delete data from database error! + + + + CDiagramScene + + &撤销 + &Undo + + + &重做 + &Redo + + + 没有与模块 + Not and mudule + + + 的当前端口相匹配的类型 [ + the type that the current port matches [ + + + 与 + and + + + + CFBDMainWindow + + + 逻辑编程工具 + Function Block Diagram Programming Tool + + + + 文件(&F) + File(&F) + + + + 编辑(&E) + Edit(&E) + + + 帮助(&H) + Help(&H) + + + + 视图(&V) + View(&V) + + + + 工具栏 + Toolbar + + + 模块库 + Module Library + + + + 属性编辑 + Attribute Edit + + + 帮助 + Help + + + + 连接检查提示 + Connection Check Prompt + + + 打开(&O) + Open(&O) + + + 打开 + Open + + + + + 保存 + Save + + + 保存Xml文件,保存数据库 + Save the Xml file,save database + + + 另存为 + Save as + + + 另存Xml文件,另存数据库 + Save as the Xml file,save as database + + + + 退出(&X) + Exit(&X) + + + + 运行 + Run + + + 持续读取/停止读取实时库信息 + Continuous reading/Stop reading Rdb infomation + + + 显示信息 + Display infomation + + + + 新建(&N) + New(&N) + + + + 新建 + New + + + + 关闭(&C) + Close(&C) + + + + 关闭 + Close + + + + + 关于(&A) + About(&A) + + + + Tab 1 + Tab 1 + + + + Tab 2 + Tab 2 + + + + 图元列表 + Primitives + + + + + 业务类型 + Business type + + + + Page + Page + + + + 图列表 + Graphs + + + + 1 + 1 + + + + Group0 + Group0 + + + + Graph0 + Graph0 + + + + Graph1 + Graph1 + + + + Graph2 + Graph2 + + + + Graph3 + Graph3 + + + + Graph4 + Graph4 + + + + Group1 + Group1 + + + + Graph5 + Graph5 + + + + Group2 + Group2 + + + + Graph6 + Graph6 + + + + 组信息 + Group information + + + + 模板列表 + Templates + + + + Ctrl+S + Ctrl+S + + + + Ctrl+Q + Ctrl+Q + + + + 持续读取/停止读取实时数据 + Continuous or Stop reading real-time data + + + + R + R + + + + Ctrl+N + Ctrl+N + + + + 放大 + Zoom In + + + + 缩小 + Zoom Out + + + + 恢复 + Restore + + + + 显示全部 + Show All + + + + 显示图元列表窗口 + Display the primitive list window + + + + + 设置图属性 + Set graph properties + + + + 显示图列表窗口 + Display the graph list window + + + + + 打开xml文件 + Open XML file + + + + + 保存为模板 + Save as template + + + 显示模块库窗口 + Show Module Library Widget + + + + 显示属性编辑窗口 + Show Attribute Edit Widget + + + 设置组信息 + Set group infomation + + + + 检索器 + Retriever + + + + 打开检索器 + Open retriever + + + 根据Taginfo更新当前文档中数据库的点 + Update the database point in the current document based on Taginfo + + + 删除 + Delete + + + 删除Xml文件,删除数据库中数据 + Delete the Xml file,delete the data in the database + + + 只保存Xml文件 + Only save the Xml file + + + + + 检查连接 + Check the connection + + + 从内存库读取 + Read from Rdb + + + 从实时库中读取每个模块输出端口信息 + Read the output port information of each module from the Rdb + + + 数据库中删除,Xml文件删除 + Delete from database,delete the Xml file + + + + + 左对齐 + Left align + + + + 复制(&C) + Copy(&C) + + + + 复制 + Copy + + + + Ctrl+C + Ctrl+C + + + + 粘贴(&P) + Paste(&P) + + + + 粘贴 + Paste + + + + Ctrl+V + Ctrl+V + + + + 剪切(&U) + Cut(&U) + + + + 剪切 + Cut + + + + Ctrl+X + Ctrl+X + + + + + 顶对齐 + Top align + + + + + 右对齐 + Right align + + + + + 底对齐 + Bottom align + + + + + 刷新界面 + Refresh the interface + + + 只删除数据库中数据 + Only delete the data in the database + + + 中文 + Chinese + + + 英文 + English + + + + 状态 + Status + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 错误 + Error + + + 同名文件已经打开,请先关闭已打开文件! + The file with the same name has been opened,please close the open file first! + + + %1 内容为空,请检查! + %1 content is empty,please check! + + + 数据库保存成功 + Save database successfully + + + 数据库保存失败 + Failed to save database + + + xml文件保存成功 + Save Xml file successfully + + + 文件无法保存在位置' + File cannot be saved in location' + + + 数据库初始化不成功,请保存成xml文件,或者重新运行程序 + The database initialization failed,please save it as an XML file or rerun the program + + + 开始保存文件... + Start saving file... + + + 故障树标签:%1在数据库中已经存在,请重新设置标签! + Fault tree label:%1 already exists int the database,please reset the label! + + + 同名文件已经打开,请先关闭已打开的文件! + The file with the same name has been opened,please close the open file first! + + + 打开文件错误 + Open file error + + + 文件不存在: +%1 + File does not exist:%1 + + + 实时库初始化不成功,请重新运行程序 + The Rdb initialization failed,please rerun the program + + + 读实时库错误! + Error reading Rdb! + + + 读实时库完成! + Read Rdb complete! + + + + 确认 + Confirm + + + + 图形的修改未保存,是否关闭? + The modification of the diagram is not saved,do you want to close it? + + + &翻转 + &flip + + + + 现在被选中模块是 %1 + Now the selected module is %1 + + + + 现在被选中模块是 %1_%2 + Now the selected module is %1_%2 + + + + 现在被选中模块个数是 %1 + Now the number of selected module is %1 + + + + 找不到当前fbd文档! + The current FBD document cannot be found! + + + + 打开检索器... + Open retriever... + + + 找不到该文件! + The file cannot be found! + + + 数据库初始化不成功,请重新运行程序 + The database initialization failed,please rerun the program + + + 删除数据库的相关数据... + Delete database related data... + + + 数据库删除错误: + Database deletion error: + + + 取消数据库删除 + Cancel delete database + + + 文件删除成功,提交版本库成功! + Delete file successfully,submit the version library successfully! + + + xml文件保存成功 + Save Xml file successfully + + + + 加载样式文件失败 + Failed to load style file + + + + 初始化所有图元失败 + Failed to initialize all primitives + + + + 读取配置文件失败 + Failed to read configuration file + + + + 输入输出 + Input/Output + + + + 数学运算 + Mathematical operations + + + + 比较模块 + Compare Module + + + + 数据类型转换 + Data Type Conversion + + + + 布尔运算 + Boolean operations + + + + 逻辑模块 + Logic Module + + + + 控制输出 + Control output + + + + 功率控制 + Power Control + + + + 脚本模块 + Script Module + + + + 告警模块 + Alarm module + + + + ALL + ALL + + + + 监控 + Monitoring + + + + 其他 + Other + + + + + + + + + + 打开数据库失败 + Failed to open the database + + + + 已生效 + Activated + + + + 未生效 + Not activated + + + + 初始化图元菜单失败 + Failed to initialize primitive menu + + + + 初始化图列表失败 + Failed to initialize graph list + + + + 初始化模板列表失败 + Failed to initialize template list + + + + 从数据库中读取图【%1】失败 + Failed to read graph [%1] from the database + + + + + 删除确认 + Delete confirmation + + + + 确定删除图 %1 吗? + Are you sure you want to delete graph %1? + + + + 删除图失败 + Failed to delete graph + + + + + 更新组信息失败 + Failed to update group information + + + + 当前用户无编辑权限 + Current user has no editing permissions + + + + + 创建路径【%1】失败 + Failed to create path [%1] + + + + Open Diagram + Open Diagram + + + + 数据库中已包含此图,请修改名称后再打开 + This graph already exists in the database. Please rename it before opening + + + + 打开文件失败 + Failed to open the file + + + + 图检查有错误且生效状态为【是】时不能保存 + "When there are errors in the graph check and the effective status is 'Yes', saving is not allowed. + + + + + 保存图失败 + Failed to save graph + + + + 保存图成功 + Graph saved successfully + + + + + 警告 + Warning + + + + 当前图未保存 + The current graph is not saved + + + + 当前图未使能 + The current graph is not enabled + + + + 请输入模板名 + Please enter template name + + + + 模板名: + Template name: + + + + 名称不能为空 + Name cannot be empty + + + + 模板名称重复 + Template name is duplicated + + + + 查询数据库失败 + Failed to query the database + + + + + 保存模板失败 + Failed to save template + + + + + + 信息 + Information + + + + 保存模板成功 + Template saved successfully + + + + 从数据库中读取图失败 + Failed to read graph from the database + + + + 导出为xml文件 + Export as XML file + + + + 删除此图 + Delete this graph + + + + 选择导出路径 + Choose export path + + + + 询问 + Inquire + + + + 文件已存在,是否覆盖? + The file already exists. Do you want to overwrite it? + + + + 文件打开失败 + Failed to open the file + + + + 从数据库读取文件内容失败 + Failed to read file content from the database + + + + 导出成功 + Export successful + + + + 确定删除模板 %1 吗? + Are you sure you want to delete template %1? + + + + 删除成功 + Deletion successful + + + + 删除失败 + Deletion failed + + + + 选中模块左对齐 + Left-align the selected modules + + + + 选中模块上端对齐 + Top-align the selected modules + + + + 选中模块右对齐 + Right-align the selected modules + + + + 选中模块下端对齐 + Bottom-align the selected modules + + + + 复制选中模块 + Copy the selected modules + + + + 粘贴操作 + Paste operation + + + + 剪切选中模块 + Cut the selected modules + + + 文件被占用,无法保存在位置' + The file is occupied,cannot be saved in location' + + + 该文件没有保存过,没有库信息 + This file has not been saved, no library information + + + 数据库删除成功 + Delete database successfully + + + 数据库删除失败 + Failed to delete database + + + + CFBDRetriever + + + 检索器 + Retriever + + + + + 专业: + Profession: + + + + + 位置: + Location: + + + + 设备组: + Device Group: + + + + 表名: + Table Name: + + + + 检索方式: + Retriever Mode: + + + + 设备检索 + Device + + + + 表检索 + Table + + + + 点类型: + Point Type: + + + + 值: + Value: + + + + 点名: + Point Name: + + + + 列名: + Column Name: + + + + + 数字量 + Digital + + + + + 模拟量 + Analog + + + + + 混合量 + Mix + + + + + 累积量 + Accuml + + + + + 常量 + Const + + + + + + 通用 + General + + + + + + 其他 + Other + + + + 值 + Value + + + + 状态 + Status + + + + CFmtTextPlugin + + + + 使能 + Enable + + + + 格式化文本输出 + Formatted Text Output + + + + 输入个数 + Input Number + + + + 格式化配置 + Formatted Configuration + + + + 输入端口 + Input Port + + + + 数据类型 + Data Type + + + + 格式化文本为空 + Formatted Text is Empty + + + + 0 + 0 + + + + 1 + 1 + + + + 2 + 2 + + + + 3 + 3 + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于0 + The input value cannot be less than 0 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + 0-整型 + 0-Integer + + + + 1-浮点型 + 1-Float + + + + 2-布尔型 + 2-Boolean + + + + 3-字符串型 + 3-String + + + + CGraphicsScene + + + &撤销 + &Undo + + + + &重做 + &Redo + + + + 没有与模块 + Not and mudule + + + + + 的当前端口相匹配的类型 [ + the type that the current port matches [ + + + + 与 + AND + + + + CGroup + + + Form + Form + + + + 注意:修改组的【所属专业】属性后需要重启监控系统 + Note: Restart the monitoring system after modifying the 'Belonging Specialty' property of a group + + + + 添加 + Add + + + + 修改 + Modify + + + + 删除 + Delete + + + + 关闭 + Close + + + + 组信息 + Group information + + + + ID + ID + + + + 名称 + Name + + + + 描述 + Description + + + + 刷新间隔 + Refresh interval + + + + 业务类型 + Business type + + + + 所属位置 + Affiliated Location + + + + 所属专业 + Location + + + + 更新时间 + Update time + + + + 版本号 + Version number + + + + + + + + + + + 错误 + Error + + + + 创建系统信息访问库失败 + Failed to create system information access database + + + + 获取所有位置信息失败 + Failed to retrieve all location information + + + + 获取所有专业信息失败 + Failed to retrieve all specialty information + + + + + 打开数据库失败 + Failed to open the database + + + + 查询fbd_group表最大id失败 + Failed to query the maximum ID from the fbd_group table + + + + 添加组 + Add group + + + + + 告警 + Alarm + + + + + 请先选择一条记录 + Please select a record first + + + + 修改组 + Edit Group + + + + 查询此组包含的图失败 + Failed to query the graphs contained in this group + + + + 警告 + Warning + + + + 此组内有未删除的图,请先删除图 + There are graphs in this group that have not been deleted. Please delete the graphs first + + + + 提示 + Hint + + + + 确认删除? + Are you sure you want to delete? + + + + 删除失败 + Delete failed + + + + CGroupEdit + + + Form + Form + + + + 名 称 + Name + + + + 描 述 + Description + + + + 刷新间隔 + Refresh Interval + + + + (单位:毫秒) + (Unit: Milliseconds) + + + + 业务类型 + Business Type + + + + 所属位置 + Affiliated Location + + + + 所属专业 + Major + + + + 确定 + OK + + + + 取消 + Cancel + + + + + + + + + + 错误 + Error + + + + 创建系统信息访问库失败 + Failed to create system information access library + + + + 获取所有位置信息失败 + Failed to retrieve all location information + + + + 获取所有专业信息失败 + Failed to retrieve all major information + + + + 组名称不能为空 + The group name cannot be empty + + + + 打开数据库失败 + Failed to open the database + + + + 查询fbd_group表最大id失败 + Failed to query the maximum ID from the fbd_group table + + + + SQL语句执行失败 + SQL statement execution failed + + + + CPluginManager + + + 错误 + Error + + + + 存在同名插件: + There is a plugin with the same name: + + + + CPointPropertySet + + + Dialog + Dialog + + + + OnlySelected + Only Selected + + + + Expand/Collapse + Expand/Collapse + + + + Ok + Ok + + + + Cancel + Cancel + + + + + + + 错误 + Error + + + + + 打开数据库失败 + Failed to open the database + + + + 设备或测点总数超上限,最大总数为 + The total number of devices or measurement points exceeds the limit, the maximum number is + + + + 属性字符串分割错误 + Property string split error + + + + CProgressBarDialog + + 进度 + Progress + + + 处理中... + In the processing... + + + + CProperty + + 名称 + Name + + + 输出 + Output + + + 输出名称 + Output Name + + + 输入测点串 + Input Measurement Point String + + + 输出测点串 + Output Measurement Point String + + + 控制测点串 + Control Measurement Point String + + + 动作名称 + Action Name + + + 使能类型 + Enable Type + + + 超时时间(单位:s) + 超时时间 + Timeout(unit:s) + + + 控制动作串 + Control Action String + + + 失败逻辑 + Fail Logic + + + 重做次数 + Retry Number + + + 再次失败逻辑 + Fail Again Logic + + + 转换个数 + Conversion Number + + + 输入个数 + Input Number + + + 输出个数 + Output Number + + + 输出Y名称 + Output Y Name + + + 输出QU名称 + Output QU Name + + + 输出QL名称 + Output QL Name + + + 输出名称1 + Output Name1 + + + 输出名称0 + Output Name0 + + + 进程逻辑 + Process Logic + + + 输出名称2 + Output Name2 + + + 文本 + Text + + + 颜色 + Color + + + 字体 + Font + + + 大小 + Size + + + 页数 + The Number of Page + + + 机组个数 + UnitCnt + + + 调节死区 + Deadband + + + 最大调节步进 + MaxStep + + + 最小调节周期(单位:ms) + MinInterval(unit:ms) + + + 通讯超时时间(单位:ms) + CommTimeout(unit:ms) + + + 通讯异常延迟复归时间(单位:ms) + CommRecovDelay(unit:ms) + + + 调节异常延迟复归时间(单位:ms) + RegulateRecovDelay(unit:ms) + + + 停止充电SOC + StopChargeSOC + + + 恢复充电SOC + ReChargeSOC + + + 恢复放电SOC + ReDischargeSOC + + + 停止放电SOC + StopDischargeSOC + + + 机组通讯异常数据策略 + ValueWhenComloss + + + 实例名称 + InstanceName + + + LUA内容 + LUA Content + + + 端口间距 + Port Space + + + 图元宽度 + Primitive Width + + + 输入端口 + Input Port + + + 输出端口 + Output Port + + + 类型 + Type + + + 机组 + Unit + + + 最大功率 + MaxPower + + + 最小功率 + MinPower + + + 最大放电功率 + MaxDischargePower + + + 最小放电功率 + MinDischargePower + + + 最大充电功率 + MaxChargePower + + + 最小充电功率 + MinChargePower + + + 额定容量 + Rated Capacity + + + 调节超时时间(单位:ms) + RegulateTimeout(unit:ms) + + + 调节精度 + RegulatePrecision + + + 通讯精度 + CommPrecision + + + 使用可增有功输入 + UseUpMarginInput + + + 使用可减有功输入 + UseDownMarginInput + + + + + 端口 + Port + + + + + 显示名称 + Display Name + + + + 图元显示名称 + Graphical Element Display Name + + + + CPropertyTreeView + + + 测点串 + Measurement Point String + + + + 请把检索器中的点拖到属性中含“测点串”的行里 + Drag a point in the retriever to the line containing 'Measurement Point String' in the property + + + + 点被拖到属性为“ + The point is dragged to the property' + + + + ”中 + ' + + + + CRetriever + + 检索器 + Retriever + + + 专业: + Profession: + + + 位置: + Location: + + + 设备组: + 设备: + Device Group: + + + 表名: + Table Name: + + + 检索方式: + Retriever Mode: + + + 设备检索 + Device + + + 表检索 + Table + + + 点类型: + Point Type: + + + 值: + Value: + + + 点名: + Point Name: + + + 列名: + Column Name: + + + 数字量 + Digital + + + 模拟量 + Analog + + + 混合量 + Mix + + + 累积量 + Accuml + + + 常量 + Const + + + 通用 + General + + + 其他 + Other + + + 值 + Value + + + 状态 + State + + + + CSetGroupDialog + + 设置FBD图的属性 + Set the properties of the FBD diagram + + + 设置图名称: + Diagram Name: + + + 图名称不能重复 + Diagram names cannot be repeated + + + 选择故障组: + Failure Group: + + + 所属组,组类型,刷新等级,复杂度 + Group, Group type, Refresh level, Complexity + + + 所属域: + Domain: + + + 所属位置: + Location: + + + 所属专业: + Profession: + + + + 设置图属性 + Set Graph Properties + + + + 是 + Yes + + + + 否 + No + + + + + + + + + 错误 + Error + + + + + 打开数据库失败 + Failed to open the database + + + + 获取组ID失败 + "Failed to retrieve the group ID + + + + 请重新命名 + Please rename + + + + 图名称重复 + Graph name already exists + + + + 查询数据库失败 + Failed to query the database + + + 读取数据库的分组信息错误! + Error reading the grouping infomation of database! + + + 未知位置 + Unknown Location + + + 读取数据库的位置信息错误! + Error reading the location infomation of database! + + + 未知专业 + Unknown Profession + + + 读取数据库的专业信息错误! + Error reading the profession infomation of database! + + + 所属组:%1,扫描速度:%2,复杂度:%3,位置:%4,专业:%5 + Group:%1,Scan speed:%2,Complexity:%3,Location:%4,Profession:%5 + + + 故障树标签不能为空! + Fault tree tag cannot be empty! + + + 故障树标签长度不能超过40字节! + The length of fault tree tag cannot more than 40bytes! + + + 读取数据库错误! + Error reading database! + + + 当前域的组内故障树数量已满! + The number of fault trees in the group of the current domain is full! + + + + 图 名 称 + Graph Name + + + + 不能重复 + Cannot be duplicated + + + + 选 择 组 + Select Group + + + + 是否使能 + Is it enabled? + + + + CSinglePropertySet + + + Dialog + Dialog + + + + Ok + Ok + + + + Cancel + Cancel + + + + + 错误 + Error + + + + 打开数据库失败 + Failed to open the database + + + + 告警类型 + Alarm Type + + + + 告警状态 + Alarm Status + + + + 告警类型信息不正确 + Incorrect alarm type information + + + + 告警等级 + Alarm Level + + + + 位置 + Location + + + + 专业 + Professional + + + + 设备类型 + Device Type + + + + 责任区 + Responsible Area + + + + CSmsPlugin + + + 收件人 + Recipient + + + + 内容 + Content + + + + 使能 + Enable + + + + 服务器地址 + Server Address + + + + 用户名 + Username + + + + 密码 + Password + + + + 服务器地址为空 + Server address is empty + + + + 用户名为空 + Username is empty + + + + 密码为空 + Password is empty + + + + CSmtpMailPlugin + + + 收件人 + Recipient + + + + 标题 + Subject + + + + 内容 + Content + + + + 使能 + Enable + + + + 0-普通TCP连接(默认) + 0-Standard TCP connection (default) + + + + 1-SSL连接 + 1-SSL connection + + + + 2-TLS(SMARTTLS) + 2-TLS (SMARTTLS) + + + + 发送(SMTP)服务器地址 + SMTP server address + + + + SMTP端口 + SMTP port + + + + 连接方式 + Connection method + + + + 发件人 + Sender + + + + 用户名 + Username + + + + 密码 + Password + + + + 服务器地址为空 + Server address is empty + + + + 发件人为空 + Sender is empty + + + + 用户名为空 + Username is empty + + + + 密码为空 + Password is empty + + + + CStringListDialog + + 添加 + Add + + + 删除 + Delete + + + 选择 Plugin 路径 + Select Plugin path + + + + CTemplateWidget + + + 删除此模板 + Delete this template + + + + ConstFPlugin + + 输出 + Output + + + + ConstPlugin + + 常量(D) + Constant(D) + + + 输出 + Output + + + + ConstsPlugin + + 常量(S) + Constant(S) + + + + DivFPlugin + + 除(A) + Divide(A) + + + + DivPlugin + + 除(D) + Divide(D) + + + 减(D) + Subtract(D) + + + + FilterStyleDlg + + + 过滤格式 + Filter Style + + + + 过滤已确认 + Filter Confirmed + + + + 过滤已复归 + Filter Restored + + + + FmtCfgDialog + + + Dialog + Dialog + + + + 文本配置 + Text Configuration + + + + 预览 + Preview + + + + 变量 + Variables + + + + 格式化文本配置 + Formatted Text Configuration + + + + 真 + True + + + + [ + [ + + + + InputFPlugin + + 输入(A) + Input(A) + + + 常量(A) + Const(A) + + + 或 + Or + + + 大于(D) + Greater Than(D) + + + 比较模块 + Compare Module + + + 小于(D) + Less Than(D) + + + 大于等于(D) + Greater Than or Equal To(D) + + + 小于等于(D) + Less Than or Equal To(D) + + + 等于(D) + Equal + + + 大于(A) + Greater Than(A) + + + 小于(A) + Less Than(A) + + + 乘(A) + Multiply(A) + + + 乘(D) + Multiply(D) + + + Float转Int + Float to Int + + + 数据类型转换 + Data Type Conversion + + + Int转Float + Turn Int to Float + + + Int转Bool + Turn Int to Bool + + + Bool转Int + Turn Bool to Int + + + 输出(D) + Output(D) + + + 输出(A) + Output(A) + + + 防抖延时(D) + Delay of Anti Shake(D) + + + 逻辑模块 + Logic Module + + + 输入选择 + Input Selection + + + 按位拆解 + Bitwise Dismantling + + + 储能机组有功分配器 + Active Power Divider of Energy Storage Unit + + + 功率控制 + Power Control + + + 发电机组有功分配器 + Active Power Divider of Generating Unit + + + DO控制 + DO Control + + + LUA脚本 + LUA Script + + + 脚本模块 + Script Module + + + 输入测点未设置 + Input measurement point is not set + + + 输出测点未设置 + Output measurement point is not set + + + 未关联所有输入端口 + All input ports are not associated + + + + InputPlugin + + 输入(D) + Input(D) + + + 输入输出常量 + Input Output Constant + + + + MapCfgDlg + + + 映射配置 + Mapping Configuration + + + + 请输入搜索内容 + Please enter the search content + + + + <html><head/><body><p>检索器</p></body></html> + <html><head/><body><p>Retriever</p></body></html> + + + + <html><head/><body><p>添加</p></body></html> + + + + + <html><head/><body><p>删除</p></body></html> + + + + + <html><head/><body><p>导出</p></body></html> + + + + + <html><head/><body><p>导入</p></body></html> + + + + + 确定 + OK + + + + 取消 + Cancel + + + + 整型 + Integer + + + + 浮点型 + Float + + + + 布尔 + Boolean + + + + 字符串 + String + + + + 未知类型 + Unknown Type + + + + + + + + + 警告 + Warning + + + + + + + + 格式错误! + Format Error! + + + + 请选择需要删除的行! + Please select the row to delete! + + + + 打开文件 + Open File + + + + + + 消息 + Message + + + + 文件打开失败! + Failed to open the file! + + + + 导入成功 + Import successful + + + + Save File + Save File + + + + + + + 提示 + Hint + + + + 导出成功! + Export successful! + + + + 没有%1表! + There is no %1 table! + + + + 主键[%1]重复 + Primary key [%1] is duplicated + + + + 未知类型或错误类型[%1] + Unknown or incorrect type [%1] + + + + row:[%1],column:[%2]类型错误! + Row: [%1], Column: [%2] type error! + + + + MulPlugin + + 转换个数 + Number of Conversions + + + 输入个数不能超过32个!!! + The number of inputs cannot exceed 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + MultiMapPlugin + + + + 使能 + Enable + + + + + 0-整型 + 0-Integer + + + + + 1-浮点型 + 1-Floating Point + + + + + 2-布尔型 + 2-Boolean + + + + + 3-字符串型 + 3-String + + + + 输入类型 + Input Type + + + + 输出个数 + Number of Outputs + + + + 映射配置 + Mapping Configuration + + + + 输出端口 + Output Ports + + + + 数据类型 + Data Type + + + + 提示 + Hint + + + + 请先配置输出个数等信息 + Please configure the number of outputs and other information first + + + + 映射输出个数必须大于0 + The number of mapped outputs must be greater than 0 + + + + 映射配置不能为空 + Mapping configuration cannot be empty + + + + + 0 + 0 + + + + + 1 + 1 + + + + + 2 + 2 + + + + + 3 + 3 + + + + 输出个数不能超过32个!!! + The number of outputs cannot exceed 32!!! + + + + 输入值不能小于0 + The input value cannot be less than 0 + + + + 输入值与现值相同 + The input value is the same as the current value + + + + 4 + 4 + + + + NotPlugin + + 非 + Not + + + + PowerControlGENPlugin + + + 总有功目标值 + TotalPowerTargetValue + + + + 总有功上限 + TotalPowerUpLimit + + + + 总有功下限 + TotalPowerLowLimit + + + + 总调节使能 + TotalRegulateEnable + + + + 总有功 + TotalPower + + + + 总可增有功 + TotalUpMarginPower + + + + 总可减有功 + TotalDownMarginPower + + + + 状态码 + StatusCode + + + + 错误码 + ErrorCode + + + 0-使用0值,1-保持最后值 + 0-Use 0 value,1-Hold final value + + + + GEN个数不能小于0个!!! + The number of GEN cannot be less than 0!!! + + + + GEN个数不能大于50个!!! + The number of GEN cannot be more than 50!!! + + + + 机组%1有功实际值 + Unit %1 Actual value of active power + + + + 【调节死区】值错误,合法值:大于0 + [Deadband] error value,legal value:Greater Than 0 + + + + 【最大调节步进】值错误,合法值:大于0 + [MaxStep] error value,legal value:Greater Than 0 + + + + 【最小调节周期】值错误,合法值:大于0 + [MinInterval] error value,legal value:Greater Than 0 + + + + 【通讯超时时间】值错误,合法值:大于0 + [CommTimeout] error value,legal value:Greater Than 0 + + + + 【通讯异常延迟复归时间】值错误,合法值:大于0 + [CommRecovDelay] error value,legal value:Greater Than 0 + + + + 机组%1有功设定值 + Unit %1 Set value of active power + + + + 0-使用0值 + 0-Use Zero Value + + + + 1-保持最后值 + 1-Maintain Last Value + + + + 机组个数 + UnitCnt + + + + 调节死区 + Deadband + + + + 最大调节步进 + MaxStep + + + + 最小调节周期(单位:ms) + MinInterval(unit:ms) + + + + 通讯超时时间(单位:ms) + CommTimeout(unit:ms) + + + + 通讯异常延迟复归时间(单位:ms) + CommRecovDelay(unit:ms) + + + + 机组通讯异常数据策略 + ValueWhenComloss + + + + + + + + + + 机组 + Unit + + + + 最大功率 + MaxPower + + + + 最小功率 + MinPower + + + + 通讯精度 + CommPrecision + + + + 调节精度 + RegulatePrecision + + + + 调节超时时间(单位:ms) + RegulateTimeout(unit:ms) + + + + 使用可增有功输入 + UseUpMarginInput + + + + 使用可减有功输入 + UseDownMarginInput + + + + 机组%1可增有功 + Unit %1 UpMarginPower + + + + 机组%1可减有功 + Unit %1 DownMarginPower + + + + + 机组%1调节使能 + Unit %1 RegulateEnable + + + + 机组%1分配有功 + Unit %1 DistributionPower + + + + 机组%1状态码 + Unit %1 StatusCode + + + + 机组%1错误码 + Unit %1 ErrorCode + + + + PowerControlPCSPlugin + + + 总有功目标值 + TotalPowerTargetValue + + + + 总有功上限 + TotalPowerUpLimit + + + + 总有功下限 + TotalPowerLowLimit + + + + 总调节使能 + TotalRegulateEnable + + + + + 停止充电SOC + StopChargeSOC + + + + + 恢复充电SOC + ReChargeSOC + + + + + 恢复放电SOC + ReDischargeSOC + + + + + 停止放电SOC + StopDischargeSOC + + + + 总有功 + TotalPower + + + + 总可增有功 + TotalUpMarginPower + + + + 总可减有功 + TotalDownMarginPower + + + + 总SOC + Total SOC + + + + 状态码 + StatusCode + + + + 错误码 + ErrorCode + + + + 0-使用0值 + 0-Use Zero Value + + + + 1-保持最后值 + 1-Maintain Last Value + + + + 机组个数 + UnitCnt + + + + 调节死区 + Deadband + + + + 最大调节步进 + MaxStep + + + + 最小调节周期(单位:ms) + MinInterval(unit:ms) + + + + 通讯超时时间(单位:ms) + CommTimeout(unit:ms) + + + + 通讯异常延迟复归时间(单位:ms) + CommRecovDelay(unit:ms) + + + + 机组通讯异常数据策略 + ValueWhenComloss + + + + + + + + + + + 机组 + Unit + + + + 最大放电功率 + MaxDischargePower + + + + 最小放电功率 + MinDischargePower + + + + 最小充电功率 + MinChargePower + + + + 最大充电功率 + MaxChargePower + + + + 额定容量 + Rated Capacity + + + + 通讯精度 + CommPrecision + + + + 调节精度 + RegulatePrecision + + + + 调节超时时间(单位:ms) + RegulateTimeout(unit:ms) + + + 0-使用0值,1-保持最后值 + 0-Use 0 value,1-Hold final value + + + + PCS个数不能小于0个!!! + The number of PCS cannot be less than 0!!! + + + + PCS个数不能大于100个!!! + The number of PCS cannot be more than 100!!! + + + + 机组%1有功设定值 + Unit%1 Set value of active power + + + + 机组%1有功实际值 + Unit %1 Actual value of active power + + + + 【调节死区】值错误,合法值:大于0 + [Deadband] error value,legal value:Greater Than 0 + + + + 【最大调节步进】值错误,合法值:大于0 + [MaxStep] error value,legal value:Greater Than 0 + + + + 【最小调节周期】值错误,合法值:大于0 + [MinInterval] error value,legal value:Greater Than 0 + + + + 【通讯超时时间】值错误,合法值:大于0 + [CommTimeout] error value,legal value:Greater Than 0 + + + + 【通讯异常延迟复归时间】值错误,合法值:大于0 + [CommRecovDelay] error value,legal value:Greater Than 0 + + + 【停止充电SOC】值错误,合法值:大于等于0,小于等于1 + [StopChargeSOC] error value,legal value:Greater than or equal To 0, less than or equal to 1 + + + 【恢复充电SOC】值错误,合法值:大于等于0,小于等于停止充电SOC + [ReChargeSOC] error value,legal value:Greater than or equal To 0, less than or equal to StopChargeSOC + + + 【恢复放电SOC】值错误,合法值:大于等于0,小于等于恢复充电SOC + [ReDisChargeSOC] error value,legal value:Greater than or equal To 0, less than or equal to ReChargeSOC + + + 【停止放电SOC】值错误,合法值:大于等于0,小于等于恢复放电SOC + [StopDisChargeSOC] error value,legal value:Greater than or equal To 0, less than or equal to ReDisChargeSOC + + + + 机组%1 SOC + Unit %1 SOC + + + + + 机组%1调节使能 + Unit %1 RegulateEnable + + + + 机组%1分配有功 + Unit %1 DistributionPower + + + + 机组%1状态码 + Unit %1 StatusCode + + + + 机组%1错误码 + Unit %1 ErrorCode + + + + PushTypeDlg + + + 推送格式 + Push Format + + + + 推送方式 + Push Method + + + + 邮件 + Email + + + + 短信 + SMS + + + + 电话 + Phone Call + + + + 邮件标题 + Email Subject + + + + 文本配置 + Text Configuration + + + + 预览 + Preview + + + + 自定义 + Custom + + + + 模板 + Template + + + + 数量 + Quantity + + + + 1级数量 + Level 1 Quantity + + + + 2级数量 + Level 2 Quantity + + + + 3级数量 + Level 3 Quantity + + + + 4级数量 + Level 4 Quantity + + + + 5级数量 + Level 5 Quantity + + + + 时间 + Time + + + + 域 + Domain + + + + 位置 + Location + + + + 应用 + Apply + + + + 等级 + Level + + + + 内容 + Content + + + + 状态 + Status + + + + 专业 + Professional + + + + 责任区 + Responsible Area + + + + 设备组 + Equipment Group + + + + 测点 + Measurement Point + + + + 设备 + Equipment + + + + 循环 + Cycle + + + + 智能推送 + Smart Push + + + + QObject + + + 加(D) + Add(D) + + + + 输入测点未设置 + Input measurement point is not set + + + + 输出测点未设置 + Output measurement point is not set + + + + 未关联所有输入端口 + All input ports are not associated + + + + 加(A) + Add(A) + + + + 除(D) + Divide(D) + + + + 减(D) + Subtract(D) + + + + 除(A) + Divide(A) + + + + 减(A) + Subtract(A) + + + + 非 + Not + + + + 与 + And + + + + AO控制 + AO Control + + + + DO控制 + DO Control + + + + 输入(D) + Input(D) + + + + 常量(D) + Constant(D) + + + + 输入(A) + Input(A) + + + + 常量(A) + Const(A) + + + + 常量(S) + Constant(S) + + + + 或 + Or + + + + 大于(D) + Greater Than(D) + + + + 小于(D) + Less Than(D) + + + + 大于等于(D) + Greater Than or Equal To(D) + + + + 小于等于(D) + Less Than or Equal To(D) + + + + 等于(D) + Equal + + + + 大于(A) + Greater Than(A) + + + + 小于(A) + Less Than(A) + + + + 乘(A) + Multiply(A) + + + + 乘(D) + Multiply(D) + + + + Float转Int + Float to Int + + + + Int转Float + Turn Int to Float + + + + Int转Bool + Turn Int to Bool + + + + Bool转Int + Turn Bool to Int + + + + 输出(D) + Output(D) + + + + 输出(A) + Output(A) + + + + 防抖延时(D) + Delay of Anti Shake(D) + + + + 输入选择 + Input Selection + + + + 按位拆解 + Bitwise Dismantling + + + + LUA脚本 + LUA Script + + + + 储能机组有功分配器 + Active Power Divider of Energy Storage Unit + + + + 发电机组有功分配器 + Active Power Divider of Generating Unit + + + + 告警订阅 + Alarm Subscription + + + + 告警延迟 + Alarm Delay + + + + 告警推送 + Alarm Push + + + + 循环内格式错误!请勿修改自动生成的内容 + Loop format error! Please do not modify the automatically generated content + + + + 告警拆分 + Alarm Split + + + + 映射 + Mapping + + + + 定时触发 + Scheduled Trigger + + + + 视频控制 + Video Control + + + + 告警生成 + Alarm Generation + + + + QPropertyEditorWidget + + 测点串 + Measurement String + + + 请把检索器中的点拖到属性中含“测点串”的行里 + Please drag a point from the retriever to the line in the properties containing 'Measurement String' + + + 点被拖到属性为“ + The point is dragged to the property ' + + + ”中 + in the middle + + + + RepeatStyleDlg + + + 重复格式配置 + Repeat Format Configuration + + + + 最大循环次数 + Maximum Number of Iterations + + + + 循环体 + Loop Body + + + + 预览 + Preview + + + + 时间 + Time + + + + 域 + Domain + + + + 位置 + Location + + + + 应用 + Apply + + + + 等级 + Level + + + + 内容 + Content + + + + 状态 + Status + + + + 专业 + Professional + + + + 责任区 + Responsible Area + + + + 设备组 + Equipment Group + + + + 测点 + Measurement Point + + + + 设备 + Equipment + + + + SubFPlugin + + 减(A) + Subtract(A) + + + + TimeDlg + + + 配置 + Configuration + + + + 触发方式 + Trigger Method + + + + 定时触发 + Scheduled Trigger + + + + 周期触发 + Cyclic Trigger + + + + 间隔触发 + Interval Trigger + + + + + + yyyy/MM/dd HH:mm:ss + Year/Month/Day Hour:Minute:Second + + + + 触发时间 + Trigger Time + + + + 开始时间 + Start Time + + + + 结束时间 + End Time + + + + 每年 + Annually + + + + 每月 + Monthly + + + + 每周 + Weekly + + + + 每天 + Daily + + + + 每时 + Hourly + + + + 每分钟 + Every Minute + + + + 每秒 + Every Second + + + + 月 + Month + + + + 星期日 + Sunday + + + + 星期一 + Monday + + + + 星期二 + Tuesday + + + + 星期三 + Wednesday + + + + 星期四 + Thursday + + + + 星期五 + Friday + + + + 星期六 + Saturday + + + + 日 + Day + + + + 时 + Hour + + + + 分 + Minute + + + + + 秒 + Second + + + + 触发间隔 + Trigger Interval + + + + TimeTriggerDlg + + + 配置 + Configuration + + + + OK + OK + + + + Cancel + Cancel + + + + + + yyyy/MM/dd HH:mm:ss + Year/Month/Day Hour:Minute:Second + + + + 触发时间 + Trigger Time + + + + 开始时间 + Start Time + + + + 结束时间 + End Time + + + + 每年 + Every Year + + + + 每月 + Every Month + + + + 每周 + Every Week + + + + 每天 + Every Day + + + + 每时 + Every Hour + + + + 每分钟 + Every Minute + + + + 每秒 + Every Second + + + + 月 + Month + + + + 星期日 + Sunday + + + + 星期一 + Monday + + + + 星期二 + Tuesday + + + + 星期三 + Wednesday + + + + 星期四 + Thursday + + + + 星期五 + Friday + + + + 星期六 + Saturday + + + + 日 + Day + + + + 时 + Hour + + + + 分 + Minute + + + + + 秒 + Second + + + + 触发间隔 + Trigger Interval + + + + 触发方式 + Trigger Method + + + + 定时触发 + Scheduled Trigger + + + + 周期触发 + Cyclic Trigger + + + + 间隔触发 + Interval Trigger + + + + TimeTriggerPlugin + + 定时触发 + Scheduled Trigger + + + + 使能 + Enable + + + + 时间配置 + Time Configuration + + + + 定时触发配置不能为空 + Scheduled trigger configuration cannot be empty + + + + UserChooseDlg + + + 用户选择 + User Selection + + + + 添加>> + Add>> + + + + 移除<< + Remove<< + + + + 附加用户: + Additional Users: + + + + 编辑 + Edit + + + + + 警告 + Warning + + + + + 格式错误! + Format Error! + + + + VideoControlPlugin + + 视频控制 + Video Control + + + + 位置标签 + Location Tag + + + + 应用标签 + Application Tag + + + + 摄像头 + Camera + + + + 预置点 + Preset Point + + + + 使能 + Enable + + + + actionAOplugin + + + 目标值 + Target Value + + + + 使能 + Enable + + + + 0-NO + 0-No + + + + 1-YES + 1-Yes + + + + 动作名称 + Action Name + + + + 超时时间(单位:s) + Timeout (Unit: seconds) + + + + 控制测点串 + Control Measurement Point Sequence + + + + 失败重做次数 + Number of Retries on Failure + + + + 输入控制测点串 + Enter Control Point Sequence + + + + 测点 + Measurement Point + + + + actionDOplugin + + + 目标值 + Target Value + + + + 使能 + Enable + + + + 0-NO + 0-No + + + + 1-YES + 1-Yes + + + + 动作名称 + Action Name + + + + 超时时间(单位:s) + Timeout (Unit: seconds) + + + + 控制测点串 + Control Measurement Point Sequence + + + + 失败重做次数 + Number of Retries on Failure + + + + 输入控制测点串 + Enter Control Point Sequence + + + + 测点 + Measurement Point + + + + add2Plugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + add2fPlugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + alarmGeneratePlugin + + + 测点标签 + Measurement Point Tag + + + + 使能 + Enable + + + + alarmSubscribePlugin + + + 告警类型使能 + Alarm Type Enable + + + + 告警类型 + Alarm Type + + + + 告警状态使能 + Alarm Status Enable + + + + 告警状态 + Alarm Status + + + + 告警等级使能 + Alarm Level Enable + + + + 告警等级 + Alarm Level + + + + 位置使能 + Location Enable + + + + 位置 + Location + + + + 专业使能 + Professional Enable + + + + 专业 + Professional + + + + 设备类型使能 + Equipment Type Enable + + + + 设备类型 + Device Type + + + + 责任区使能 + Responsible Area Enable + + + + 责任区 + Responsibility Area + + + + 设备或测点使能 + Equipment or Measurement Point Enable + + + + 设备或测点 + Equipment or Measurement Point + + + + + + 错误 + Error + + + + + 初始化失败 + Initialization Failed + + + + 未知的属性名 + Unknown Property Name + + + + 告警类型已使能,但是告警类型未选择 + Alarm Type Enabled, but No Alarm Type Selected + + + + 告警状态已使能,但是告警状态未选择 + Alarm Status Enabled, but No Alarm Status Selected + + + + 告警等级已使能,但是告警等级未选择 + Alarm Level Enabled, but No Alarm Level Selected + + + + 位置已使能,但是位置未选择 + Location Enabled, but No Location Selected + + + + 专业已使能,但是专业未选择 + Professional Enabled, but No Professional Selected + + + + 设备类型已使能,但是设备类型未选择 + Equipment Type Enabled, but No Equipment Type Selected + + + + 责任区已使能,但是责任区未选择 + Responsible Area Enabled, but No Responsible Area Selected + + + + 设备或测点已使能,但是设备或测点未选择 + Equipment or measurement point is enabled, but no equipment or measurement point is selected + + + + and2Plugin + + + 转换个数 + Conversion Count + + + + 输入个数不能超过32个!!! + The number of inputs cannot exceed 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the current value + + + + bitsplitPlugin + + + 转换个数 + Conversion Count + + + + 输出个数不能超过64个!!! + The number of outputs cannot exceed 64!!! + + + + 输出值不能小于1 + The output value cannot be less than 1 + + + + 输出值与现值相同 + The output value is the same as the current value + + + + constPlugin + + + 输出 + Output + + + + constfPlugin + + + 输出 + Output + + + + constsPlugin + + + 输出 + Output + + + + divPlugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + divfPlugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + inputPlugin + + + 输入测点串 + Input Measurement Point String + + + + inputfPlugin + + + 输入测点串 + Input Measurement Point String + + + + inputswitchPlugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + luaPlugin + + + LUA内容 + LUA Content + + + + 端口间距 + Port Space + + + + 图元宽度 + Primitive Width + + + + 输入个数 + Input Number + + + + 输出个数 + Output Number + + + + 输入端口 + Input Port + + + + + 数据类型 + Data Type + + + + 输出端口 + Output Port + + + + + 0 + 0 + + + + + 1 + 1 + + + + + 2 + 2 + + + + + 3 + 3 + + + + + 4 + 4 + + + + 宽度不能大于1000 + The width cannot exceed 1000 + + + + 宽度不能小于40 + The width cannot be less than 40 + + + + + + + 输入值与现值相同 + The input value is the same as the present value + + + + 端口间隔不能大于400 + The port space cannot be more than 400 + + + + 端口间隔不能小于16 + The port space cannot be less than 16 + + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + + 输入值不能小于0 + The input value cannot be less than 0 + + + + + 0-整型 + 0-Integer + + + + + 1-浮点型 + 1-Floating Point + + + + + 2-布尔型 + 2-Boolean + + + + + 3-字符串型 + 3-String + + + + + 4-告警型 + 4-Alarm + + + 0-整型,1-浮点型,2-布尔型 + 0-Int,1-Float,2-Bool + + + + mulPlugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of inputs must not exceed 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the current value + + + + mulfPlugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + or2Plugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + outputPlugin + + + 输出测点串 + Output Measurement Point String + + + + outputfPlugin + + + 输出测点串 + Output Measurement Point String + + + + subPlugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + subfPlugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + diff --git a/resource/en/fbd_editor/translate/platform_en.qm b/resource/en/fbd_editor/translate/platform_en.qm new file mode 100644 index 0000000000000000000000000000000000000000..7d840942756e8334d8d18cb1858b4c32dd9cd9d1 GIT binary patch literal 44549 zcmdsg34B%6wfD|+lbhV!3o#%f!X*ksh8Tt-A|kUO2*@PP1QH+`5}H9os|GO;!jK^I z42ob?1`(M9KI`k?TezgwGy-8YIw6;#Q`u*2l=j=1wb8dntAHPpt-%f7MUTf{O z*Ix5JcfgU{HZPyvyymrz?M_YGQTyHyA^bH$h-@Jq_$80!f8ue;Ef{+Wk+_4$2e069 z!7?6~JcqHD5D(JdF+O}Pk5!jo>@CDYsXRWshsUb<82boO^$x}fLZtj%hoR_bVa(c0!1Lr-b%)h2LkE^O(Pr$BH&0{+;ERx17gO$3?=d{{j9}!vFrOLfrncxL`m~h#oV=1!Z>% zanT#%f+Zt_SY9JqZO3y%%S4|Zj|1*L9`oPkv0|7QIQk+XTHYr{zX$$x|E;*C6#Vj~ zV+22ZBgD+fjY4#KTpS(VRfzuAiqFS_M=essmoq{_1fCV&{P*vLnEe`$cYhk=&uS2& zeQHem`>>u{C&hGo{y%$BTaLfrV*nE!g91vX$x%sc7W zm%e*q-ko@v5QCoLarCt@?^hlbA~zNz){%Q<%t!s`_X8N|_r{p|%^wRDX2yhGTv>w$;Sf@%hhq9CKN0=iXR<>^rgDdQ27~eSB>1Pv(Ii z19`l8YV1{66NSiJ5_`=j_d_mU=JDZt9;*h%PQIp-5NUVB=A8HxGWUnrWq!!=y(?p% z0C{4?KQP7$G3OwUMMrr2>3$yX)5f1^V`X3deC0DduF}Re+PHZjf4+5K?3?$+0FN*B z?dh39bej`Vz%Gx00a%;T*t?@$4YR%(a{o`AY#B+I@<2!A~e)aAb-#zIR&hYE; zJ&OMd`Zn_T$lE+FTN&T0{A(c|xi|jKuR!0j4)ODMj}>BATKvy8Uk+815?`^p0O#@Q z_@`GujuSt___+{CnHaytczgWQ)!<{&qZs2b{tBZ9<2M+Sgz)x^-?#84$bD}7Zy(0G zIUP7yB*ss8y2^})Q zm(+a;9Ui&{$1EoySi2GP-cQKL0sWa5CUkkb1bVF^;no1wAA4)Uk#3I(QBjic`ZU1l z@au%eJP77hlM)&qe*^mC7oNC3Z@_sPi19ZNo<^X z4D0-7;$Ig2L5Lf^Nc>xAP>AvGCVo9EfOGOi;7@_wA(k*~6hvUghzI zj!6l3juN8ymr2Qc!2cF+CbfSWc4kqYHolqE;otau{RSR4hLUdi?jig>g~yFMl5U@Z zb9DQHq{5e=?`tZPUi%FC=H};;{`xx3X>e)M>CgWK{qaW9e-40u*FDJN*je8A*Fn!6 zqcP$<+!5zZD1`obs4tHXzsqCQMz8;hCxz&m=nbTH5#qwDy%#;|6Qb-rZ^z$)Z_{>p zJAV2K?Bf^Se)DQze^R`+y$b$cc>|AmL2q407|an_VMzkd7S*Z_uJ~XU{Y`5 zaZ!A7?AW8&hue~qi*TMM4orUVPVgh^v6Qr4;8)ihc$`|Ca>+^9xeK?abp0IrGhlT} z&ubv(18zyV`oSlJnEL0GYqvsAT{1Fd*hc8>+a63A69+lG=e3mSGe$#>(^Bs4I9`a$ zrlc(EIY5ZQ-aO9j$7AsoJl>zh;{)37l_&W3>bX2V+Lg!E-FRH9{k~ayZfkAI`@`-M z;?j93jR!&h+821-keKq9bjVqo^(lY-Gx)mTP|C*#!{Fz#lrIbG@%g`eFr4sfPV=}R ziN_`P`(mm-zE_H5Bo-Dd;xmD@?BpZ5~Ac+zPq~?!4LSr zx94}jJNmfq<=VSppQiG-;9op0`JL~TMBT(Wm&W7ITJpHKhQ}3?cwCvzf>)s z6JpH!smH<}36bB2$AYP;|NAQBIeTtu-2)H6j&4f*{7+ffhqqF{{C18Ile00xPE0OO z{pyw}kk=6ycVT=f_3I%x*R3!0$9?m2=+BQZeueYV!Jjw|f0M8vqFapmVp9DN(7r?LC%;VMb1BuUm2fBU}NPNE-`l~eHePK52WLCiY z!QbFtf5_uq2|O-r$K(1-dE7WB;QjU#{GqD@$!}oau5BGi|0%&+7fAmOa-EeIXzkwv zzv8t(+ZwEEz#jwc-n+h+Wp2r_mY2N{>!{$K$xgJdW3Xzva5X z72j22o6>pg9~#s>KT8{@Y2&KE$bW3cdHE(VZ9n`J&$d9`=}(22_tU^bn|=ehF9%j;UIV}7 z-oR7${SNXe0oSoR`7l{9p2T|4TeB9>8ObHt*3F`1jQ>^0;Xd zk6R`L-Y@ckk6D3_R=)~+bSUsiW*N>`W8jmozJy*K$>WBVfq!Mc4?Djs@cHu};Q8kQ zUkq#of9T7=m$k!jZdQRg+a|$763Jq)m@bM$nJ7)dufjwB3spQvBc!mz1UQ|{Z z!;cOX1$eYX`_g!C#8-H~PJ&$P(EKO^3$v;|(WQ)}L5g|K!rp;U_{Bhl9cTC6(dL&jhFR%*wXo z?*$nAZ-f{khT-R7fSm)ZOhZr%6|;eJhPYdQQsGJu;=d6?hJ`kr3_o5T-u49jP6(2Q z4$IG(Rh%3H((7Zy5yGP{qRfjgK^( zTotN#!U6I?z_HC269K6J7jRdU#b{30*lL+ICB-Q3p88}i=VN63}%9MT>tRV$VCOkHPQbmCbhW6_Fp8hc!3>J6JiHCEcG#=%ULcMW|p%V zCOOLoQ%O+n!P1IFcRWXIDZ>A9IB&jg6YJZGP$KRYo44#Y%?H&L4eW;nW3Qk zE1fbrMdqhx;APn?Z5;s!2`hw?5T6E=T zENn=_zT@Gwi|dXb;>GahLnioFY)5F%`q1Vl@kztJ!;OoVLm!0pE@^nYg4Fb}YR7#^ zHWsgT+2bZwnGkO}4l_Zsrr#vpw27o!b6~uPR|d^3I`s_J)t-W!u*U01lHn(zzab~T z@TUC2+@g6>flt>!j{x9Va>uQwD+uW!=Go5{NpvngwaWH%$z(H0xhA4AK$Nm4kPTig zi!&4JN@lF+sn`_L(`_*xnDH@UjCwL|@R%`f&-!5eO0nYwqMI11W_X5{78i6I+MG!v zY?DSbXVO^Pq_NGJbfaz3jm?=f(Kcyfb0$r(O`6i2NmFf;rn*nM4h+x1k(_PvYCP8! z=ggfgofjto^$BB=Ap<zUT@o^-p!fR$2O@?b0+=7Ht8qLnbg-d zsc-a2WLD-{Szc5&w+WW>Bn!(isR@?zBn!(i$(7}8U@ysuBWq~!P1X8*Vnp981q@3wNR~8sE3=+OdbVD`jK`cu*Ag9p&KdM~R+EM@P z@zB<#Zh)r1+DDoiGM;3jgJ89Oj)US>X+dtsr{pph!8{u#H5bp5p`DKZnFFTIb;nnP z*X$23-y1r%3cdm?Y^ZuIY{Q?+YdZD(bNNccPj}J@W6prQ<`dQ4ji~6v+|mRwh9kp{ zJ-PJkQ8k~m%gm%Pv)CgEEvg9ZJsO?B42e+p5jeh>1DPO?L5rPC(!ox{-euv+8aL@k zLLiny{=1sysXMg=PLSJ#pgsYj!OjFRfoUKCF#rV^P~DMZaIV5zPPswMbYyx7lVuiA zMWP0o0#6kKI>}bH$=(DZv~r7{_6aGNe+3B2{##?)X|a zBKtUQ_zWtCB^xw-s(`l*Rc;C$Kh|(~U+Cl`&C`z~91)UL$d~&=kx#z3 zPeWXcpD7(hJ4Zn|MOdVw$`lC~hbp&(b}tPrBNdIjO+)qO(DF6WMR4F5&|o$vL>Zzp zg}aRfcjdZ<9ZyC_d?t(6LqH1stV}3T1Q?4CFDXaV!YqhR!>}`0yzRJy{dN|ZD3D4q z)C?|kccg$4O|155n-$yDS_7fV?Ts6DHmM}r!&}oK>DfwCaH`<>GKFaf2t(%It7Q{<{OD#Lqd;ckc6OeFziV@}51S?_5;>v!yJ*t^pWXjk+nSyPRA zGJ*~(Nk*{@`eAg;%cqQE{hDQsTOM-*?15giCbO436{=k9_PC!Pm-=wBMIXv(nVl!Q z>cebps^RoeriFw|%U*(4=8TPTu+l;jcw_kz$`;8)n;U&?;oui(*+0r!lh;haJM!ix zzEo|iU$Hp6Vt1(WkQ<<0j>m#52s^fv7n(1rR~aaUpiQW1dqZt)c>CediE7RLiYnNx zvAdL2nGK-i_|UnYB?=WlZ>ajY(7vOMwXU94rWlKPq>kM(E#yRjWCb%VRI|K(_kJy@ za^zV3&yTtBq795~0l<^|TJ}f*^MzJcHSF0HeQz#9%7xQydip<_HuY)hQ>rjG%F-=9 zm|Y!u2}IQSRa(+hUsb-$CQ_i{Yo)@Tux3@EXA}+Bsk_WK1|cI9=~9ZB5@EEx zl)|P>(!3G;OcwQ8#mlZlb?sv)dDNZS8(w`hy!k2i=O~f5eqX3&7rY(#9;Z*ZI*u=i z3~`fmJt$t*oDeA+dR~|Gg^~Xz9il&H()N-}qwb?;@^sBZ`e>$he07I_)1{?YGKG}P zoG#*KJXIpP$TTanh%i#}*2+G%vV4Ax4Ez8vBrHoyrc~hS`qkUQYbxuj4u#7XAPRuL z1LhzgM1e(<>8O!Ll2i_JO$Wjg+POT6LTI5+aPS4?#Av=?FE!aYN@Fl;@ud>9w9vj2s0M&}_s%I`HRX2BGHigOTU`k@y47t5l~Rg- zOA3z3bdSwvix-ubf?RvLwgWL|@b(r4sFR9pw*2oLf^K%2YW^<2nzWUZ^mcE^s4! z!1q9^bgkNPE5fM9e=H89wQ5Bgi1K}mBLMO_bJl}mC zy&aZEvuSWk)3steDpMCd=yA?#L}H6jSQ-{tVvCNVoryUVJ+r3C<65#37>zwJF7*c= z3vGDPjnx^^prP{u{}jwLjYu74R#ui9*a@yuZA6tx;T?}_MMkHD#{_Am$V(yfTn2GuGtPC_iBdr4f(A}U(6Qhn!M_(E zIZZR!3DqP;v87XZ*@F7xTK@Km(1Ok3J&$S0+`U_2vsrZ9IMq&3CS7^ZK(uKEaD~Ii zE&%`HL`K1yy{jlk6EaDiL=;|`OWITd<_#j97KH6311R;5S_mb7u(67* zSE*x-@C#-ww5%dj^E3y+T*_ugl>-XubXl~V4}lvqGZAwW3#p@H5|PTwJ2XsZ-1>*8B@Xy`R z*ZWuIVJC^_6rs^*IQ$*85D}c!+XL9oZ`ie{e$(10e*X7Yq}-(-jYD)r>Oo+cC+4Y* z@KDdfao14M&yPzVd90Q7G%d69SXb7!K<D$A&Bs}b zPhF645?-k3 z6;rZr=sWqPMN7`AdnQ!EXfHfO_I-E z04svfR1p?nkm2o%>-U@tm7j3i@3s(gZqmwej{xBHMvnmcIeJ|`l{6JwMA+T$+V(`l zzQ>e;j?TzTs8}PM*TZrPhLUr7YKD41wN^$GsC}y&PA-g|U-LmFkci9di<;`;6p0)D@lujW=j!r6p5Gkl z7*H_8*{|ri3O$V@d(RZ&475R_*{$KRr_HGgYL!GifBn87dc53-8W2I$_aUI2BLPjI z9_@8srE#eoh{2)MITFW2R#%RXSP!I5ibb;msQn^wZnb>rOx7*FyU4UdG9HP%n; z$w-%K4`9%i8lK8UC{l#>ZdA1&+QU!{x?Wu~kyFo_8akw=27m~f+L>wMBiuAuRK}pv z06BTcYO5XdM6bdm%l09P)J;)({ekrj2M@Y!N18E3Iz{8nP7zPd>^$DpDQa(;?ht4w z!hH-XylQz}?PfPxGGw;Ac_!McjI$fG7RU*5YJ~jk;g)sDgk5Im;jZgyVT!`WK|T%F z#8ZFb=b`b~FZ4Z?^D1x9A;>NN}5Kp-XYmS}Ui8-%C0kp*-Y1n(RzIHE_1f;L#2H7v0 zE68;qfi_7eyo1Jdd)=n>v4x1-aKve_$b+YuI3;vx=wjw;8On6JAsXW7>gchpxk$>r z#T;PM5sl1Sx8b}&W5sfCMvI-Ime<;tZk}9$RE|UDfR_( zEjdfmF&57X%Q5?4`vlLMhN?8?K@7VIKlnq?{*RG^2ptd^w0u3rExr7vsz;v0s04TS*hQ zE1a^VY1+AQEYvsdI22v{TSMd0nWw_3Q9v+)25;RF^to=-B8F7Dh%q6rv^YQSp1fjt z4 zV?iS2C=HBW556^-WI8ZLw$@9wcuyq~+&$PDbB@ag|1Y$2anzY@AQ)-HmG`A|IT^2+aj8;*FUs3&d{iY+KWk<>L+xQ4eOz>7#?efM>{*01| zGx7@awENec#bhi8sa*vyv2*y*osFx@qs^HBGOTkb8MHvl;6&n~yJTaW0V|&A7-3j@ zr%NE8GJ1zXaLG~2tudPSDP>5~8F@3MBX?WZKX<(T_%=>sH|#xySPK_bj5Ms7LZ3XR zT34-Fyoa+X_LcLY)*c2?&1#x8V+%@CW4@eDX(S5jiaGVIC_n=$^@-wIdgI2`b~=)D zg|8m>aGlToAiWtuYZ5d)D%%3>kG8P8FlvG?yrdj~F8e_CY1H#i9cNVBBgc@|LWz9x zMNR%t1Tg6n*@69d9S`PBXf3zA1mx)%3u}Je6RxgqIJMtST#^`x6=Jv4TJWGA2wLG! zhQc*UFk1axP4jV~gg$5QBcVw}nkq@gL!BxS{Q^I=jXIe0a6{7hKQTyZBtNuv_P zX9t3;hzjB*5lBm*BjL_jq@>6);tdHqcjxCiADrA~6UwmxT^l7s!j%mofSAd`LO(IV zM!8*P#1wh$nLO0Dp^&)NO;!jQ7?or&Z@~eC17x{4!>T9ot%SHD)ktAWN%yDuT7}+D zO4WI?$fSkzE_zx<7Csq|Q()Bg&3`xc!%77wJIyX~4{ec)D(C|KW;A|NQ$MekEBm2} zO8yY*x699qnlY2FyO7$3bSrVdZ1?BjblOtcpx&y9b8xCzGnpH4=gV!QE>YdT=z`n< z@qr+c>(1>b6Q$2F1HY3mOg=~#%&}(Gs2B`#2%bmcY&=@(yxMO>v&^;p1ozw?9U$gm}!6HaO@s z#lbwbLwrV(r}v@Js|{4~My<`uZ+;0?AGTv11gtE#dYkf@)e4NtK!6kHEGt?)z|>H6J|%A991yTHS9^Z9*DQM_gQqXUqqzY%@~Nf2o?PK9%FoYQDT2&IwrZFF+a zT1~uhOvAoCq3S2XOLiksY}gMwJ|_oU3zL;(;$FA)I<_5%vz0u12befN9TGr_-MBu| zJond5W293$3cJ}Xr_>ILUdus26kW45#j1384^@)**(XGLvZ?T7gZv+E!Z^)IhVq6Gp{fRJWbv z!01m`t^<^VRu98Z6n+>lZX&mh)P()YRV#8R9dBLP2^)WghK?L`dR-KCY@CTjk-28O zMX?ie9vC@0Nllm&`{UPJd~|mF$-Gf3P?_dQawi~pnufngR}8pYR^MtPqt=R>HA6Ma zu%+SZNAcDtEw$z!I=-N6R(|0PIfZz)2xsk^AlPZj0GY_+m*8-}61gaIp*B5*HW!+QgL41 zl>9t?g;lKRqWI$ZsC*0BnTZ!JPxplr5cwVlbAY0Ek?Br=3@{Xi7HE~`OHdqA$aWtW zT-mTQ9L#a6jO&r8@>PEW%B)kIH5DiOVuiLd+N&yO&mK^uU~yr`@L~#b%|9+!6}v?O{HBN-<-X zGi9la8fmuc>J`)RqPN50s;aQw+Xz9Tg!IElt=!myHhC~a?GQu`kHHgcTr9f=T)0Ge zLXKF>bsZ00ZB$S+i+0&RbVA(NM9ma-zowFdd;KJu^JdUF|Smn z|4s4{Pstj^=s4UWCKfwBYQ0o#Hv}m#C}{dy9@JcBM-aVCw#)1%QG$jxjqcFfF0?4x z0%WmlO}LIoemu9>5uJyxF)KRba1dO1*cLSxzN16AFgjU!MbWs|43kPH$+#Kmi1x>9 z5_d#62$#p*Ug~AdYUpV>vrlX;HMQhq3cTJ?!;Ik95vkD`cb&8ll)}~DgxvhjI7iU* zN(ghRl;n@L1IkD3Wx#kJ=gL|LpXFj+khOU7ny~8QC;_C7A$d z-`6ohg!oMHorr9K9a0v zQayD?*Eiq(+;r7ub+=KkewneLwu)vHPz>hoV68mAhZ%?*li7aci;sRP9(IK zJ{_rM-TkJ*C;6&YKwbm|E+QWdgn3;$2#2Nhb)|x~p2Ec8rc*fypOM`(&SZe8(~hMB z0_tt$)=W}Z&I{aM?Xp1U$!7ds#7i{U0duwk=H@O+0(D;$zr2RuW^Ugt*(K?;;jK0M z#5E8~(_2~TcmKOMmbp{*&Y|Jly6J49M#S+eiWwC)m;u=ISWQv zP$H9414c`vFT89C%0uC$iyC%69-&gm7t{2(QbpcqtR%C;9+Hifth1b0*}`-K!Nx>w zl7l?7H%%fd#m=8tvs1kzqoJX$~}>?Z%u5ruOh}}%W_oDW&g!1v(J;sis=lnS{O7n{f2alU8v(H)& zWKTRUU%#c`CiLua^KgF2yTc40PJ;?o)f|rzq&lH#4W=l$1h4Hm17E1>N!&~0sNRj% zewe137XXAeZ~}O)N1f#I^DO~AK9wPYqB4zxOm5cwQU-ug{@agklW z#qO}zS%AUsYhkA;2Z96!PCKap{iI3m6!#DRyA0_AH=Jw(mr?fJ+NJp7M4O9CWeq#+z z%2Q7$In~LjL6CBCoY5i=E{HGd?j<_XKSe}mRsl=|XT15Ft$NefEa9bA{C`g58PzW{ zDMm@rxqMHtlm5jB90df0@of#QnH(rrriHzF`SlHU?o3nMaYL_X@u-cIU%yU?C`!4J z#nZE_REi^#D0@k%N3{UOqc$d@R?xc#%1_XRi5gjKvXgaI5|Ba?F!THsfe8A}u?$4u zKTm`pf-XG=Y1ac}rRi#>;f^|JfkKNG7_a0!x)varw(0?Ttr@j(afkL%Wrg}&2pkHsb`Po zkai!wEy67iI9`%UO)R;BzMW?Z3=h8;i;`*jd!oDJFO(UZCI4!Eikft(YG+OjlF?#Q zZhR{#zOJW+(~F#Hq;~r96Y5Lya0fN~+!}m>HY!fiWz+t-Gp3#Pj%zlMl=`DrD-c#N zU2UIMWkpsQ-%1f3;GhVAdXYm(1(1xg3BAECM`?an~=)bI^b7)(rL$aEd?guGE59Vi9q-@~H#r{|ZJ%q_?-HJvHr9jQ)M#gy!q z3Mrah=_~p;`IPhmY=)kv2vdJTnb_J3^He<=6oEJGg~RcE#P$=H3f^qpthZzt~@@4p@W zc_ILIvSLkNaTz1MjFz(sil*ljj4GU4W>!aOGTlxVpVF7)%NeDqBsjQh4rPZpNFfQhN2^ zuN!CzS8t`%W8@c~y5MSogia4sU^tNv|4dEu_wIqWt<*oWi(0t(YbIS_w3U&Dsc!(T zn7xe)-;+bV16l)@3!ov&Vp2Ha2oRv147bCL4uz17H9DZR@6mBVo+-U+D^iNH+^>lH z7=>|B+yyd~si-uc1L7m@j?pVOm+v*c%F_i#_5Kc+9R(beu}0gYl0gYWFHJbeOlunqM;aC%bEV;| zd@=8wvI3J~o}`qXQ;Eiq8mbu68|27)HeaIo!HWMjx_&sxHBxF(`hINKe<;aqW?81< z33-}U*xP<=RGrnnCu85u4*hwixa{PejxE7Pv@_C@MopAEZ3wR$QL8!r(?@)bRU;XSh3#aCoc{kD_g5@jT;Kqwz$ zq&O(Cdg5VMAXTtmg$O6i-_vK#X;Ckd;nA7B4K8Ni1!VlCcDeFf#r3O{^ROnmFu-r* zG@2(PA@C;%2$aput~*{4s@xe~yN6R}Y&_XX;m`3i-`VFrBeKhp{An@`8abskcERis zkeiIEfTB$E28{NLNDu>U4#8Pvjr1GLD9Sjm@r=bNmBq+xJ-&w=IY9aUMvxrV)}$mk z%sFFGa)9w;%8~=Rv$IGgWz$W*=y~Rnc&*f(Yl~#Xe!f^FD^+K;`^kW1)+y)N_S?xj V$NO(bf1U_{nXF2f(Ab!m{|j#CquKxf literal 0 HcmV?d00001 diff --git a/resource/en/fbd_editor/translate/platform_en.ts b/resource/en/fbd_editor/translate/platform_en.ts new file mode 100644 index 00000000..74ccdd84 --- /dev/null +++ b/resource/en/fbd_editor/translate/platform_en.ts @@ -0,0 +1,5941 @@ + + + + + ActionAOPlugin + + AO控制 + AO Control + + + 目标值 + Target Value + + + 使能 + Enable + + + 0-NO + 0-No + + + 1-YES + 1-Yes + + + 动作名称 + Action Name + + + 超时时间(单位:s) + Timeout Time (unit: s) + + + 控制测点串 + Control Measurement String + + + 失败重做次数 + Number of Retries on Failure + + + 输入控制测点串 + Enter Control Measurement String + + + 测点 + Measurement Point + + + + ActionDOPlugin + + 1-上升沿触发,2-下降沿触发,3-高电平触发,4-低电平触发,5-PID触发 + 1-Rising Edge Trigger, 2-Falling Edge Trigger, 3-High Level Trigger, 4-Low Level Trigger, 5-PID Trigger + + + 1-动作停止,2-动作跳过,3-动作自动重做 + 1-Action Stop, 2-Action Skip, 3-Action Auto Redo + + + 1-动作停止,2-动作跳过 + 1-Action Stop, 2-Action Skip + + + 目标值 + Target Value + + + 使能 + Enable + + + 0-NO + 0-No + + + 1-YES + 1-Yes + + + 动作名称 + Action Name + + + 超时时间(单位:s) + Timeout Time (unit: s) + + + 控制测点串 + Control Measurement Point String + + + 失败重做次数 + Number of Retries on Failure + + + 输入控制测点串 + Enter Control Measurement Point String + + + 测点 + Measurement Point + + + + Add2FPlugin + + 加(A) + Add(A) + + + 运算模块 + Arithmetic Module + + + + AlarmDelayDlg + + 延迟配置 + Delay Configuration + + + 延迟时间(s) + Delay Time (s) + + + s + s + + + 过滤条件 + Filter Conditions + + + 过滤已确认 + Filter Confirmed + + + 过滤已复归 + Filter Reset + + + OK + OK + + + Cancel + Cancel + + + + AlarmDelayPlugin + + 告警 + Alarm + + + 使能 + Enable + + + 过滤配置 + Filter Configuration + + + 延迟时间(s) + Delay Time (s) + + + 最大值为14400!!! + The maximum value is 14400!!! + + + 最小值为0!!! + The minimum value is 0!!! + + + 过滤配置不能为空 + Filter configuration cannot be empty + + + 延迟时间不能小于0 + Delay time cannot be less than 0 + + + 告警延迟 + Alarm Delay + + + + AlarmGeneratePlugin + + 告警生成 + Alarm Generation + + + + AlarmPushDlg + + 告警推送 + Alarm Push + + + OK + OK + + + 智能推送 + Smart Push + + + Cancel + Cancel + + + 收件人 + Recipient + + + 移除<< + Remove << + + + 添加>> + Add >> + + + 附加用户 + Additional Users + + + 多个附加用户请用分号分开 + Separate multiple additional users with semicolons + + + 编辑 + Edit + + + 推送格式 + Push Format + + + 推送方式 + Push Method + + + 邮件 + Email + + + 短信 + SMS + + + 电话 + Phone + + + 邮件标题 + Email Title + + + 格式配置 + Format Configuration + + + 预览 + Preview + + + 自定义 + Customize + + + 模板 + Template + + + 数量 + Quantity + + + 1级数量 + Level 1 Quantity + + + 时间 + Time + + + 2级数量 + Level 2 Quantity + + + 5级数量 + Level 5 Quantity + + + 4级数量 + Level 4 Quantity + + + 3级数量 + Level 3 Quantity + + + 应用 + Apply + + + 位置 + Location + + + 等级 + Level + + + 域 + Domain + + + 内容 + Content + + + 状态 + Status + + + 专业 + Professional + + + 责任区 + Responsibility Area + + + 设备组 + Device Group + + + 测点 + Measurement Point + + + 设备 + Device + + + 循环 + Cycle + + + 警告 + Warning + + + 格式错误! + Format Error! + + + + AlarmPushPlugin + + 告警 + Alarm + + + 使能 + Enable + + + 收件人 + Recipient + + + 内容 + Content + + + 推送类型 + Push Type + + + 推送类型配置不能为空 + The push type configuration cannot be empty + + + 收件人配置不能为空 + The recipient configuration cannot be empty + + + 标题 + Title + + + 告警推送 + Alarm Push + + + 循环内格式错误!请勿修改自动生成的内容 + Loop format error! Please do not modify the automatically generated content + + + + AlarmSplitPlugin + + 告警 + Alarm + + + 使能 + Enable + + + 输出个数 + Number of Outputs + + + 输出端口 + Output Port + + + 数据 + Data + + + 拆分个数必须大于0 + The number of splits must be greater than 0 + + + 输出个数不能超过32个!!! + The number of outputs cannot exceed 32!!! + + + 输入值不能小于0 + The input value cannot be less than 0 + + + 输入值与现值相同 + The input value is the same as the current value + + + 时间 + Time + + + 0-时间 + 0-Time + + + 1-域ID + 1-Domain ID + + + 2-位置ID + 2-Location ID + + + 3-应用ID + 3-Application ID + + + 4-优先级ID + 4-Priority ID + + + 5-内容 + 5-Content + + + 6-状态ID + 6-Status ID + + + 7-专业ID + 7-Professional ID + + + 8-责任区ID + 8-Responsibility Area ID + + + 9-设备组标签 + 9-Device Group Label + + + 10-测点标签 + 10-Measurement Point Label + + + 11-设备标签 + 11-Device Label + + + 0 + 0 + + + 5 + 5 + + + 内容 + Content + + + 9 + 9 + + + 设备组标签 + Device Group Label + + + 10 + 10 + + + 测点标签 + Measurement Point Label + + + 11 + 11 + + + 设备标签 + Device Label + + + 1 + 1 + + + 域ID + Domain ID + + + 2 + 2 + + + 位置ID + Location ID + + + 3 + 3 + + + 应用ID + Application ID + + + 4 + 4 + + + 优先级ID + Priority ID + + + 6 + 6 + + + 状态ID + Status ID + + + 7 + 7 + + + 专业ID + Professional ID + + + 8 + 8 + + + 责任区ID + Responsibility Area ID + + + 告警拆分 + Alarm Split + + + 映射 + Mapping + + + + AlarmSubscribePlugin + + 告警订阅 + Alarm Subscription + + + 告警类型使能 + Alarm Type Enable + + + 告警类型 + Alarm Type + + + 告警状态使能 + Alarm Status Enable + + + 告警状态 + Alarm Status + + + 告警等级使能 + Alarm Level Enable + + + 告警等级 + Alarm Level + + + 位置使能 + Location Enable + + + 位置 + Location + + + 专业使能 + Professional Enable + + + 专业 + Professional + + + 设备类型使能 + Equipment Type Enable + + + 设备类型 + Equipment Type + + + 责任区使能 + Responsible Area Enable + + + 责任区 + Responsible Area + + + 设备或测点使能 + Equipment or Measurement Point Enable + + + 设备或测点 + Equipment or Measurement Point + + + 错误 + Error + + + 初始化失败 + Initialization Failed + + + 未知的属性名 + Unknown Property Name + + + 告警类型已使能,但是告警类型未选择 + Alarm Type Enabled, but No Alarm Type Selected + + + 告警状态已使能,但是告警状态未选择 + Alarm Status Enabled, but No Alarm Status Selected + + + 告警等级已使能,但是告警等级未选择 + Alarm Level Enabled, but No Alarm Level Selected + + + 位置已使能,但是位置未选择 + Location Enabled, but No Location Selected + + + 专业已使能,但是专业未选择 + Professional Enabled, but No Professional Selected + + + 设备类型已使能,但是设备类型未选择 + Equipment Type Enabled, but No Equipment Type Selected + + + 责任区已使能,但是责任区未选择 + Responsible Area Enabled, but No Responsible Area Selected + + + 设备或测点已使能,但是设备或测点未选择 + Equipment or measurement point is enabled, but no equipment or measurement point is selected + + + + And2Plugin + + 与 + And + + + 转换个数 + Number of Conversions + + + 输入个数不能超过32个!!! + The number of inputs cannot exceed 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the current value + + + + AttachDlg + + 附加用户 + Additional Users + + + 添加 + Add + + + 删除 + Delete + + + 邮件校验 + Email Verification + + + 电话校验 + Phone Verification + + + 邮箱格式校验:未通过! + Email format check: Failed! + + + 邮箱格式校验:通过! + Email format check: Passed! + + + 电话格式校验:未通过! + Phone format check: Failed! + + + 电话格式校验:通过! + Phone format check: Passed! + + + + BitSplitPlugin + + 转换个数 + Number of Conversions + + + 输出个数不能超过64个!!! + The number of outputs cannot exceed 64!!! + + + 输出值不能小于1 + The output value cannot be less than 1 + + + 输出值与现值相同 + The output value is the same as the current value + + + + CAbout + + + + 关于 + About + + + + 逻辑编程工具 版本 V1.0 + Logic Programming Tool Version V1.0 + + + 深圳市远信储能技术有限公司 逻辑编程工具 版本 V1.0 + Shenzhen Kangbida Control Technology Co., Ltd. Logic Programming Tool Version V1.0 + + + + 关闭 + Close + + + + CCallPlugin + + 收件人 + Recipient + + + 内容 + Content + + + 使能 + Enable + + + 服务器地址 + Server Address + + + 用户名 + Username + + + 密码 + Password + + + 服务器地址为空 + The server address is empty + + + 用户名为空 + The username is empty + + + 密码为空 + The password is empty + + + + CDiagram + + + + 错误 + Error + + + + 一个输入不能连入多个输出! + One input cannot join multiple outputs! + + + ====================FBD图检查====================== + ====================FBD Diagram Check====================== + + + + 当前FBD图中没有模块! + There are no modules in the current FBD diagram! + + + > 模块 [ + > module [ + + + ] 的输入 + ] input + + + + + ================ + ================ + + + + FBD图检查 + FBD Diagram Check + + + + 图元自检失败 + Element Self-inspection Failed + + + + > + > + + + + 图元的输入 + Input of the Element + + + + 连接了超过一个节点 + More than one node was connected + + + + FBD图检查结束,共检查了%1个模块,发现了%2个错误 + FBD diagram check is over,a total of %1 modules were checked,%2 errors were found + + + + 读文件模块错误,模块不存在,请重新安装程序! + Error reading file module, module does not exist, please reinstall the program! + + + + 最后刷新时间: + Last Refresh Time: + + + 读实时库错误,停止运行! + Error reading rdb,stop running! + + + 实时库连接错误! + Rdb connection error! + + + 保存模块表... + Save module table... + + + 写数据库错误 + Write database error + + + 保存操作完成... + Save operation completed... + + + 数据库保存失败 + Save database failed + + + 数据库已保存 + Database saved + + + 数据库保存失败 + Save database failed + + + 选择 + choose + + + 文件中存在输出参考模块,可能被其它fbd图引用,确认删除? + There is an output reference module in the file, which may be referenced by other FBD diagrams,delete? + + + 当前文件中的模块没有库信息! + The module dose not have library infomation in the current file! + + + 从数据库中删除数据错误! + Delete data from database error! + + + + CDiagramScene + + &撤销 + &Undo + + + &重做 + &Redo + + + 没有与模块 + Not and mudule + + + 的当前端口相匹配的类型 [ + the type that the current port matches [ + + + 与 + and + + + + CFBDMainWindow + + + 逻辑编程工具 + Function Block Diagram Programming Tool + + + + 文件(&F) + File(&F) + + + + 编辑(&E) + Edit(&E) + + + 帮助(&H) + Help(&H) + + + + 视图(&V) + View(&V) + + + + 工具栏 + Toolbar + + + 模块库 + Module Library + + + + 属性编辑 + Attribute Edit + + + 帮助 + Help + + + + 连接检查提示 + Connection Check Prompt + + + 打开(&O) + Open(&O) + + + 打开 + Open + + + + + 保存 + Save + + + 保存Xml文件,保存数据库 + Save the Xml file,save database + + + 另存为 + Save as + + + 另存Xml文件,另存数据库 + Save as the Xml file,save as database + + + + 退出(&X) + Exit(&X) + + + + 运行 + Run + + + 持续读取/停止读取实时库信息 + Continuous reading/Stop reading Rdb infomation + + + 显示信息 + Display infomation + + + + 新建(&N) + New(&N) + + + + 新建 + New + + + + 关闭(&C) + Close(&C) + + + + 关闭 + Close + + + + + 关于(&A) + About(&A) + + + + Tab 1 + Tab 1 + + + + Tab 2 + Tab 2 + + + + 图元列表 + List of primitives + + + + + 业务类型 + Business type + + + + Page + Page + + + + 图列表 + Graph list + + + + 1 + 1 + + + + Group0 + Group0 + + + + Graph0 + Graph0 + + + + Graph1 + Graph1 + + + + Graph2 + Graph2 + + + + Graph3 + Graph3 + + + + Graph4 + Graph4 + + + + Group1 + Group1 + + + + Graph5 + Graph5 + + + + Group2 + Group2 + + + + Graph6 + Graph6 + + + + 组信息 + Group information + + + + 模板列表 + Template list + + + + Ctrl+S + Ctrl+S + + + + Ctrl+Q + Ctrl+Q + + + + 持续读取/停止读取实时数据 + Continuous or Stop reading real-time data + + + + R + R + + + + Ctrl+N + Ctrl+N + + + + 放大 + Zoom In + + + + 缩小 + Zoom Out + + + + 恢复 + Restore + + + + 显示全部 + Show All + + + + 显示图元列表窗口 + Display the primitive list window + + + + + 设置图属性 + Set graph properties + + + + 显示图列表窗口 + Display the graph list window + + + + + 打开xml文件 + Open XML file + + + + + 保存为模板 + Save as template + + + + 替换 + Replace + + + + 替换标签值 + Replace tagged values + + + + Ctrl+F + Ctrl+F + + + 显示模块库窗口 + Show Module Library Widget + + + + 显示属性编辑窗口 + Show Attribute Edit Widget + + + 设置组信息 + Set group infomation + + + + 检索器 + Retriever + + + + 打开检索器 + Open retriever + + + 根据Taginfo更新当前文档中数据库的点 + Update the database point in the current document based on Taginfo + + + 删除 + Delete + + + 删除Xml文件,删除数据库中数据 + Delete the Xml file,delete the data in the database + + + 只保存Xml文件 + Only save the Xml file + + + + + 检查连接 + Check the connection + + + 从内存库读取 + Read from Rdb + + + 从实时库中读取每个模块输出端口信息 + Read the output port information of each module from the Rdb + + + 数据库中删除,Xml文件删除 + Delete from database,delete the Xml file + + + + + 左对齐 + Left align + + + + 复制(&C) + Copy(&C) + + + + 复制 + Copy + + + + Ctrl+C + Ctrl+C + + + + 粘贴(&P) + Paste(&P) + + + + 粘贴 + Paste + + + + Ctrl+V + Ctrl+V + + + + 剪切(&U) + Cut(&U) + + + + 剪切 + Cut + + + + Ctrl+X + Ctrl+X + + + + + 顶对齐 + Top align + + + + + 右对齐 + Right align + + + + + 底对齐 + Bottom align + + + + + 刷新界面 + Refresh the interface + + + 只删除数据库中数据 + Only delete the data in the database + + + 中文 + Chinese + + + 英文 + English + + + + 状态 + Status + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 错误 + Error + + + 同名文件已经打开,请先关闭已打开文件! + The file with the same name has been opened,please close the open file first! + + + %1 内容为空,请检查! + %1 content is empty,please check! + + + 数据库保存成功 + Save database successfully + + + 数据库保存失败 + Failed to save database + + + xml文件保存成功 + Save Xml file successfully + + + 文件无法保存在位置' + File cannot be saved in location' + + + 数据库初始化不成功,请保存成xml文件,或者重新运行程序 + The database initialization failed,please save it as an XML file or rerun the program + + + 开始保存文件... + Start saving file... + + + 故障树标签:%1在数据库中已经存在,请重新设置标签! + Fault tree label:%1 already exists int the database,please reset the label! + + + 同名文件已经打开,请先关闭已打开的文件! + The file with the same name has been opened,please close the open file first! + + + 打开文件错误 + Open file error + + + 文件不存在: +%1 + File does not exist:%1 + + + 实时库初始化不成功,请重新运行程序 + The Rdb initialization failed,please rerun the program + + + 读实时库错误! + Error reading Rdb! + + + 读实时库完成! + Read Rdb complete! + + + + 确认 + Confirm + + + + 图形的修改未保存,是否关闭? + The modification of the diagram is not saved,do you want to close it? + + + &翻转 + &flip + + + + 现在被选中模块是 %1 + Now the selected module is %1 + + + + 现在被选中模块是 %1_%2 + Now the selected module is %1_%2 + + + + 现在被选中模块个数是 %1 + Now the number of selected module is %1 + + + + 找不到当前fbd文档! + The current FBD document cannot be found! + + + + 打开检索器... + Open retriever... + + + 找不到该文件! + The file cannot be found! + + + 数据库初始化不成功,请重新运行程序 + The database initialization failed,please rerun the program + + + 删除数据库的相关数据... + Delete database related data... + + + 数据库删除错误: + Database deletion error: + + + 取消数据库删除 + Cancel delete database + + + 文件删除成功,提交版本库成功! + Delete file successfully,submit the version library successfully! + + + xml文件保存成功 + Save Xml file successfully + + + + 加载样式文件失败 + Failed to load style file + + + + 初始化所有图元失败 + Failed to initialize all primitives + + + + 读取配置文件失败 + Failed to read configuration file + + + + 输入输出 + Input/Output + + + + 数学运算 + Mathematical operations + + + + 比较模块 + Compare Module + + + + 数据类型转换 + Data Type Conversion + + + + 布尔运算 + Boolean operations + + + + 逻辑模块 + Logic Module + + + + 控制输出 + Control output + + + + 功率控制 + Power Control + + + + 脚本模块 + Script Module + + + + 告警模块 + Alarm module + + + + + + ALL + ALL + + + + 监控 + Monitoring + + + + 其他 + Other + + + + + + + + + + + 打开数据库失败 + Failed to open the database + + + + 已生效 + Activated + + + + 未生效 + Not activated + + + + 初始化图元菜单失败 + Failed to initialize primitive menu + + + + 初始化图列表失败 + Failed to initialize graph list + + + + 初始化模板列表失败 + Failed to initialize template list + + + + 从数据库中读取图【%1】失败 + Failed to read graph [%1] from the database + + + + + 删除确认 + Delete confirmation + + + + 确定删除图 %1 吗? + Are you sure you want to delete graph %1? + + + + 删除图失败 + Failed to delete graph + + + + + 更新组信息失败 + Failed to update group information + + + + 当前用户无编辑权限 + Current user has no editing permissions + + + + + 创建路径【%1】失败 + Failed to create path [%1] + + + + Open Diagram + Open Diagram + + + + 数据库中已包含此图,请修改名称后再打开 + This graph already exists in the database. Please rename it before opening + + + + 打开文件失败 + Failed to open the file + + + + 图检查有错误且生效状态为【是】时不能保存 + "When there are errors in the graph check and the effective status is 'Yes', saving is not allowed + + + + + 保存图失败 + Failed to save graph + + + + 保存图成功 + Graph saved successfully + + + + + 警告 + Warning + + + + 当前图未保存 + The current graph is not saved + + + + 当前图未使能 + The current graph is not enabled + + + + 请输入模板名 + Please enter template name + + + + 模板名: + Template name: + + + + 名称不能为空 + Name cannot be empty + + + + 模板名称重复 + Template name is duplicated + + + + 查询数据库失败 + Failed to query the database + + + + + 保存模板失败 + Failed to save template + + + + + + 信息 + Information + + + + 保存模板成功 + Template saved successfully + + + + + + 从数据库中读取图失败 + Failed to read graph from the database + + + + 导出为xml文件 + Export as XML file + + + + 删除此图 + Delete this graph + + + + 一键使能 + one-click enable + + + + 选择导出路径 + Choose export path + + + + 询问 + Inquire + + + + 文件已存在,是否覆盖? + The file already exists. Do you want to overwrite it? + + + + 文件打开失败 + Failed to open the file + + + + 从数据库读取文件内容失败 + Failed to read file content from the database + + + + 导出成功 + Export successful + + + + 使能完成 + enable completion + + + + %1 图检查有错误不能使能! + %1 Figure check has errors and cannot be enabled! + + + + %1 使能失败! + %1 failed to enable! + + + + 确定删除模板 %1 吗? + Are you sure you want to delete template %1? + + + + 删除成功 + Deletion successful + + + + 删除失败 + Deletion failed + + + + 选中模块左对齐 + Left-align the selected modules + + + + 选中模块上端对齐 + Top-align the selected modules + + + + 选中模块右对齐 + Right-align the selected modules + + + + 选中模块下端对齐 + Bottom-align the selected modules + + + + 复制选中模块 + Copy the selected modules + + + + 粘贴操作 + Paste operation + + + + 剪切选中模块 + Cut the selected modules + + + 文件被占用,无法保存在位置' + The file is occupied,cannot be saved in location' + + + 该文件没有保存过,没有库信息 + This file has not been saved, no library information + + + 数据库删除成功 + Delete database successfully + + + 数据库删除失败 + Failed to delete database + + + + CFBDRetriever + + + + 检索器 + Retriever + + + + + 专业: + Profession: + + + + + 位置: + Location: + + + + 设备组: + Device Group: + + + + 表名: + Table Name: + + + + 检索方式: + Retriever Mode: + + + + 设备检索 + Device + + + + 表检索 + Table + + + + 点类型: + Point Type: + + + + 值: + Value: + + + + 点名: + Point Name: + + + + 列名: + Column Name: + + + + + 数字量 + Digital + + + + + 模拟量 + Analog + + + + + 混合量 + Mix + + + + + 累积量 + Accuml + + + + + 常量 + Const + + + + + + 通用 + General + + + + + + 其他 + Other + + + + 值 + Value + + + + 状态 + Status + + + + CFmtTextPlugin + + 使能 + Enable + + + 格式化文本输出 + Formatted Text Output + + + 输入个数 + Input Number + + + 格式化配置 + Formatted Configuration + + + 输入端口 + Input Port + + + 数据类型 + Data Type + + + 格式化文本为空 + Formatted Text is Empty + + + 0 + 0 + + + 1 + 1 + + + 2 + 2 + + + 3 + 3 + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于0 + The input value cannot be less than 0 + + + 输入值与现值相同 + The input value is the same as the present value + + + 0-整型 + 0-Integer + + + 1-浮点型 + 1-Float + + + 2-布尔型 + 2-Boolean + + + 3-字符串型 + 3-String + + + + CGraphicsScene + + + &撤销 + &Undo + + + + &重做 + &Redo + + + + 没有与模块 + Not and mudule + + + + + 的当前端口相匹配的类型 [ + the type that the current port matches [ + + + + 与 + AND + + + + CGroup + + + Form + Form + + + + 注意:修改组的【所属专业】属性后需要重启监控系统 + Note: Restart the monitoring system after modifying the 'Belonging Specialty' property of a group + + + + 添加 + Add + + + + 修改 + + + + + 删除 + Delete + + + + 关闭 + Close + + + + 组信息 + Group information + + + + ID + ID + + + + 名称 + Name + + + + 描述 + Description + + + + 刷新间隔 + Refresh interval + + + + 业务类型 + Business type + + + + 所属位置 + Affiliated Location + + + + 所属专业 + Location + + + + 更新时间 + Update time + + + + 版本号 + Version number + + + + + + + + + + + 错误 + Error + + + + 创建系统信息访问库失败 + Failed to create system information access database + + + + 获取所有位置信息失败 + Failed to retrieve all location information + + + + 获取所有专业信息失败 + Failed to retrieve all specialty information + + + + + 打开数据库失败 + Failed to open the database + + + + 查询fbd_group表最大id失败 + Failed to query the maximum ID from the fbd_group table + + + + 添加组 + Add group + + + + + 告警 + Alarm + + + + + 请先选择一条记录 + Please select a record first + + + + 修改组 + Edit Group + + + + 查询此组包含的图失败 + Failed to query the graphs contained in this group + + + + 警告 + Warning + + + + 此组内有未删除的图,请先删除图 + There are graphs in this group that have not been deleted. Please delete the graphs first + + + + 提示 + Hint + + + + 确认删除? + Are you sure you want to delete? + + + + 删除失败 + Delete failed + + + + CGroupEdit + + + Form + Form + + + + 名 称 + Name + + + + 描 述 + Description + + + + 刷新间隔 + Refresh Interval + + + + (单位:毫秒) + (Unit: Milliseconds) + + + + 业务类型 + Business Type + + + + 所属位置 + Affiliated Location + + + + 所属专业 + Major + + + + 确定 + OK + + + + 取消 + Cancel + + + + + + + + + + 错误 + Error + + + + 创建系统信息访问库失败 + Failed to create system information access library + + + + 获取所有位置信息失败 + Failed to retrieve all location information + + + + 获取所有专业信息失败 + Failed to retrieve all major information + + + + 组名称不能为空 + The group name cannot be empty + + + + 打开数据库失败 + Failed to open the database + + + + 查询fbd_group表最大id失败 + Failed to query the maximum ID from the fbd_group table + + + + SQL语句执行失败 + SQL statement execution failed + + + + CPluginManager + + + 错误 + Error + + + + 存在同名插件: + There is a plugin with the same name: + + + + CPointPropertySet + + Dialog + Dialog + + + OnlySelected + Only Selected + + + Expand/Collapse + Expand/Collapse + + + Ok + Ok + + + Cancel + Cancel + + + 错误 + Error + + + 打开数据库失败 + Failed to open the database + + + 设备或测点总数超上限,最大总数为 + The total number of devices or measurement points exceeds the limit, the maximum number is + + + 属性字符串分割错误 + Property string split error + + + + CProgressBarDialog + + 进度 + Progress + + + 处理中... + In the processing... + + + + CProperty + + 名称 + Name + + + 输出 + Output + + + 输出名称 + Output Name + + + 输入测点串 + Input Measurement Point String + + + 输出测点串 + Output Measurement Point String + + + 控制测点串 + Control Measurement Point String + + + 动作名称 + Action Name + + + 使能类型 + Enable Type + + + 超时时间(单位:s) + 超时时间 + Timeout(unit:s) + + + 控制动作串 + Control Action String + + + 失败逻辑 + Fail Logic + + + 重做次数 + Retry Number + + + 再次失败逻辑 + Fail Again Logic + + + 转换个数 + Conversion Number + + + 输入个数 + Input Number + + + 输出个数 + Output Number + + + 输出Y名称 + Output Y Name + + + 输出QU名称 + Output QU Name + + + 输出QL名称 + Output QL Name + + + 输出名称1 + Output Name1 + + + 输出名称0 + Output Name0 + + + 进程逻辑 + Process Logic + + + 输出名称2 + Output Name2 + + + 文本 + Text + + + 颜色 + Color + + + 字体 + Font + + + 大小 + Size + + + 页数 + The Number of Page + + + 机组个数 + UnitCnt + + + 调节死区 + Deadband + + + 最大调节步进 + MaxStep + + + 最小调节周期(单位:ms) + MinInterval(unit:ms) + + + 通讯超时时间(单位:ms) + CommTimeout(unit:ms) + + + 通讯异常延迟复归时间(单位:ms) + CommRecovDelay(unit:ms) + + + 调节异常延迟复归时间(单位:ms) + RegulateRecovDelay(unit:ms) + + + 停止充电SOC + StopChargeSOC + + + 恢复充电SOC + ReChargeSOC + + + 恢复放电SOC + ReDischargeSOC + + + 停止放电SOC + StopDischargeSOC + + + 机组通讯异常数据策略 + ValueWhenComloss + + + 实例名称 + InstanceName + + + LUA内容 + LUA Content + + + 端口间距 + Port Space + + + 图元宽度 + Primitive Width + + + 输入端口 + Input Port + + + 输出端口 + Output Port + + + 类型 + Type + + + 机组 + Unit + + + 最大功率 + MaxPower + + + 最小功率 + MinPower + + + 最大放电功率 + MaxDischargePower + + + 最小放电功率 + MinDischargePower + + + 最大充电功率 + MaxChargePower + + + 最小充电功率 + MinChargePower + + + 额定容量 + Rated Capacity + + + 调节超时时间(单位:ms) + RegulateTimeout(unit:ms) + + + 调节精度 + RegulatePrecision + + + 通讯精度 + CommPrecision + + + 使用可增有功输入 + UseUpMarginInput + + + 使用可减有功输入 + UseDownMarginInput + + + + + 端口 + Port + + + + + 显示名称 + Display Name + + + + 图元显示名称 + Graphical Element Display Name + + + + CPropertyTreeView + + + + 测点串 + Measurement Point String + + + + 请把检索器中的点拖到属性中含“测点串”的行里 + Drag a point in the retriever to the line containing 'Measurement Point String' in the property + + + + 点被拖到属性为“ + The point is dragged to the property' + + + + ”中 + ' + + + + 已成功修改 + Successful modification of + + + + 个测点串属性值 + point string attribute values + + + + CReplaceDialog + + + Dialog + Dialog + + + + 替换后 + After replacement + + + + 替换前 + Before replacement + + + + 是否区分大小写 + Case sensitive or not + + + + 取消 + Cancel + + + + 确认 + Confirm + + + + 替换标签值 + Replace Tagged Values + + + + CRetriever + + 检索器 + Retriever + + + 专业: + Profession: + + + 位置: + Location: + + + 设备组: + 设备: + Device Group: + + + 表名: + Table Name: + + + 检索方式: + Retriever Mode: + + + 设备检索 + Device + + + 表检索 + Table + + + 点类型: + Point Type: + + + 值: + Value: + + + 点名: + Point Name: + + + 列名: + Column Name: + + + 数字量 + Digital + + + 模拟量 + Analog + + + 混合量 + Mix + + + 累积量 + Accuml + + + 常量 + Const + + + 通用 + General + + + 其他 + Other + + + 值 + Value + + + 状态 + State + + + + CSetGroupDialog + + 设置FBD图的属性 + Set the properties of the FBD diagram + + + 设置图名称: + Diagram Name: + + + 图名称不能重复 + Diagram names cannot be repeated + + + 选择故障组: + Failure Group: + + + 所属组,组类型,刷新等级,复杂度 + Group, Group type, Refresh level, Complexity + + + 所属域: + Domain: + + + 所属位置: + Location: + + + 所属专业: + Profession: + + + + + 设置图属性 + Set Graph Properties + + + + + 是 + Yes + + + + + 否 + No + + + + + + + + + 错误 + Error + + + + + 打开数据库失败 + Failed to open the database + + + + 获取组ID失败 + "Failed to retrieve the group ID + + + + 请重新命名 + Please rename + + + + 图名称重复 + Graph name already exists + + + + 查询数据库失败 + Failed to query the database + + + 读取数据库的分组信息错误! + Error reading the grouping infomation of database! + + + 未知位置 + Unknown Location + + + 读取数据库的位置信息错误! + Error reading the location infomation of database! + + + 未知专业 + Unknown Profession + + + 读取数据库的专业信息错误! + Error reading the profession infomation of database! + + + 所属组:%1,扫描速度:%2,复杂度:%3,位置:%4,专业:%5 + Group:%1,Scan speed:%2,Complexity:%3,Location:%4,Profession:%5 + + + 故障树标签不能为空! + Fault tree tag cannot be empty! + + + 故障树标签长度不能超过40字节! + The length of fault tree tag cannot more than 40bytes! + + + 读取数据库错误! + Error reading database! + + + 当前域的组内故障树数量已满! + The number of fault trees in the group of the current domain is full! + + + + 图 名 称 + Graph Name + + + + 不能重复 + Cannot be duplicated + + + + 选 择 组 + Select Group + + + + 是否使能 + Is it enabled + + + + CSinglePropertySet + + Dialog + Dialog + + + Ok + Ok + + + Cancel + Cancel + + + 错误 + Error + + + 打开数据库失败 + Failed to open the database + + + 告警类型 + Alarm Type + + + 告警状态 + Alarm Status + + + 告警类型信息不正确 + Incorrect alarm type information + + + 告警等级 + Alarm Level + + + 位置 + Location + + + 专业 + Professional + + + 设备类型 + Device Type + + + 责任区 + Responsible Area + + + + CSmsPlugin + + 收件人 + Recipient + + + 内容 + Content + + + 使能 + Enable + + + 服务器地址 + Server Address + + + 用户名 + Username + + + 密码 + Password + + + 服务器地址为空 + Server address is empty + + + 用户名为空 + Username is empty + + + 密码为空 + Password is empty + + + + CSmtpMailPlugin + + 收件人 + Recipient + + + 标题 + Subject + + + 内容 + Content + + + 使能 + Enable + + + 0-普通TCP连接(默认) + 0-Standard TCP connection (default) + + + 1-SSL连接 + 1-SSL connection + + + 2-TLS(SMARTTLS) + 2-TLS (SMARTTLS) + + + 发送(SMTP)服务器地址 + SMTP server address + + + SMTP端口 + SMTP port + + + 连接方式 + Connection method + + + 发件人 + Sender + + + 用户名 + Username + + + 密码 + Password + + + 服务器地址为空 + Server address is empty + + + 发件人为空 + Sender is empty + + + 用户名为空 + Username is empty + + + 密码为空 + Password is empty + + + + CStringListDialog + + 添加 + Add + + + 删除 + Delete + + + 选择 Plugin 路径 + Select Plugin path + + + + CTemplateWidget + + + 删除此模板 + Delete this template + + + + ConstFPlugin + + 输出 + Output + + + + ConstPlugin + + 常量(D) + Constant(D) + + + 输出 + Output + + + + ConstsPlugin + + 常量(S) + Constant(S) + + + + DivFPlugin + + 除(A) + Divide(A) + + + + DivPlugin + + 除(D) + Divide(D) + + + 减(D) + Subtract(D) + + + + FilterStyleDlg + + 过滤格式 + Filter Style + + + 过滤已确认 + Filter Confirmed + + + 过滤已复归 + Filter Restored + + + + FmtCfgDialog + + Dialog + Dialog + + + 文本配置 + Text Configuration + + + 预览 + Preview + + + 变量 + Variables + + + 格式化文本配置 + Formatted Text Configuration + + + 真 + True + + + [ + [ + + + + InputFPlugin + + 输入(A) + Input(A) + + + 常量(A) + Const(A) + + + 或 + Or + + + 大于(D) + Greater Than(D) + + + 比较模块 + Compare Module + + + 小于(D) + Less Than(D) + + + 大于等于(D) + Greater Than or Equal To(D) + + + 小于等于(D) + Less Than or Equal To(D) + + + 等于(D) + Equal + + + 大于(A) + Greater Than(A) + + + 小于(A) + Less Than(A) + + + 乘(A) + Multiply(A) + + + 乘(D) + Multiply(D) + + + Float转Int + Float to Int + + + 数据类型转换 + Data Type Conversion + + + Int转Float + Turn Int to Float + + + Int转Bool + Turn Int to Bool + + + Bool转Int + Turn Bool to Int + + + 输出(D) + Output(D) + + + 输出(A) + Output(A) + + + 防抖延时(D) + Delay of Anti Shake(D) + + + 逻辑模块 + Logic Module + + + 输入选择 + Input Selection + + + 按位拆解 + Bitwise Dismantling + + + 储能机组有功分配器 + Active Power Divider of Energy Storage Unit + + + 功率控制 + Power Control + + + 发电机组有功分配器 + Active Power Divider of Generating Unit + + + DO控制 + DO Control + + + LUA脚本 + LUA Script + + + 脚本模块 + Script Module + + + 输入测点未设置 + Input measurement point is not set + + + 输出测点未设置 + Output measurement point is not set + + + 未关联所有输入端口 + All input ports are not associated + + + + InputPlugin + + 输入(D) + Input(D) + + + 输入输出常量 + Input Output Constant + + + + MapCfgDlg + + 映射配置 + Mapping Configuration + + + 请输入搜索内容 + Please enter the search content + + + <html><head/><body><p>检索器</p></body></html> + <html><head/><body><p>Retriever</p></body></html> + + + 确定 + OK + + + 取消 + Cancel + + + 整型 + Integer + + + 浮点型 + Float + + + 布尔 + Boolean + + + 字符串 + String + + + 未知类型 + Unknown Type + + + 警告 + Warning + + + 格式错误! + Format Error! + + + 请选择需要删除的行! + Please select the row to delete! + + + 打开文件 + Open File + + + 消息 + Message + + + 文件打开失败! + Failed to open the file! + + + 导入成功 + Import successful + + + Save File + Save File + + + 提示 + Hint + + + 导出成功! + Export successful! + + + 没有%1表! + There is no %1 table! + + + 主键[%1]重复 + Primary key [%1] is duplicated + + + 未知类型或错误类型[%1] + Unknown or incorrect type [%1] + + + row:[%1],column:[%2]类型错误! + Row: [%1], Column: [%2] type error! + + + + MulPlugin + + 转换个数 + Number of Conversions + + + 输入个数不能超过32个!!! + The number of inputs cannot exceed 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + MultiMapPlugin + + 使能 + Enable + + + 0-整型 + 0-Integer + + + 1-浮点型 + 1-Floating Point + + + 2-布尔型 + 2-Boolean + + + 3-字符串型 + 3-String + + + 输入类型 + Input Type + + + 输出个数 + Number of Outputs + + + 映射配置 + Mapping Configuration + + + 输出端口 + Output Ports + + + 数据类型 + Data Type + + + 提示 + Hint + + + 请先配置输出个数等信息 + Please configure the number of outputs and other information first + + + 映射输出个数必须大于0 + The number of mapped outputs must be greater than 0 + + + 映射配置不能为空 + Mapping configuration cannot be empty + + + 0 + 0 + + + 1 + 1 + + + 2 + 2 + + + 3 + 3 + + + 输出个数不能超过32个!!! + The number of outputs cannot exceed 32!!! + + + 输入值不能小于0 + The input value cannot be less than 0 + + + 输入值与现值相同 + The input value is the same as the current value + + + 4 + 4 + + + + NotPlugin + + 非 + Not + + + + PowerControlGENPlugin + + 总有功目标值 + TotalPowerTargetValue + + + 总有功上限 + TotalPowerUpLimit + + + 总有功下限 + TotalPowerLowLimit + + + 总调节使能 + TotalRegulateEnable + + + 总有功 + TotalPower + + + 总可增有功 + TotalUpMarginPower + + + 总可减有功 + TotalDownMarginPower + + + 状态码 + StatusCode + + + 错误码 + ErrorCode + + + 0-使用0值,1-保持最后值 + 0-Use 0 value,1-Hold final value + + + GEN个数不能小于0个!!! + The number of GEN cannot be less than 0!!! + + + GEN个数不能大于50个!!! + The number of GEN cannot be more than 50!!! + + + 机组%1有功实际值 + Unit %1 Actual value of active power + + + 【调节死区】值错误,合法值:大于0 + [Deadband] error value,legal value:Greater Than 0 + + + 【最大调节步进】值错误,合法值:大于0 + [MaxStep] error value,legal value:Greater Than 0 + + + 【最小调节周期】值错误,合法值:大于0 + [MinInterval] error value,legal value:Greater Than 0 + + + 【通讯超时时间】值错误,合法值:大于0 + [CommTimeout] error value,legal value:Greater Than 0 + + + 【通讯异常延迟复归时间】值错误,合法值:大于0 + [CommRecovDelay] error value,legal value:Greater Than 0 + + + 机组%1有功设定值 + Unit %1 Set value of active power + + + 0-使用0值 + 0-Use Zero Value + + + 1-保持最后值 + 1-Maintain Last Value + + + 机组个数 + UnitCnt + + + 调节死区 + Deadband + + + 最大调节步进 + MaxStep + + + 最小调节周期(单位:ms) + MinInterval(unit:ms) + + + 通讯超时时间(单位:ms) + CommTimeout(unit:ms) + + + 通讯异常延迟复归时间(单位:ms) + CommRecovDelay(unit:ms) + + + 机组通讯异常数据策略 + ValueWhenComloss + + + 机组 + Unit + + + 最大功率 + MaxPower + + + 最小功率 + MinPower + + + 通讯精度 + CommPrecision + + + 调节精度 + RegulatePrecision + + + 调节超时时间(单位:ms) + RegulateTimeout(unit:ms) + + + 使用可增有功输入 + UseUpMarginInput + + + 使用可减有功输入 + UseDownMarginInput + + + 机组%1可增有功 + Unit %1 UpMarginPower + + + 机组%1可减有功 + Unit %1 DownMarginPower + + + 机组%1调节使能 + Unit %1 RegulateEnable + + + 机组%1分配有功 + Unit %1 DistributionPower + + + 机组%1状态码 + Unit %1 StatusCode + + + 机组%1错误码 + Unit %1 ErrorCode + + + + PowerControlPCSPlugin + + 总有功目标值 + TotalPowerTargetValue + + + 总有功上限 + TotalPowerUpLimit + + + 总有功下限 + TotalPowerLowLimit + + + 总调节使能 + TotalRegulateEnable + + + 停止充电SOC + StopChargeSOC + + + 恢复充电SOC + ReChargeSOC + + + 恢复放电SOC + ReDischargeSOC + + + 停止放电SOC + StopDischargeSOC + + + 总有功 + TotalPower + + + 总可增有功 + TotalUpMarginPower + + + 总可减有功 + TotalDownMarginPower + + + 总SOC + Total SOC + + + 状态码 + StatusCode + + + 错误码 + ErrorCode + + + 0-使用0值 + 0-Use Zero Value + + + 1-保持最后值 + 1-Maintain Last Value + + + 机组个数 + UnitCnt + + + 调节死区 + Deadband + + + 最大调节步进 + MaxStep + + + 最小调节周期(单位:ms) + MinInterval(unit:ms) + + + 通讯超时时间(单位:ms) + CommTimeout(unit:ms) + + + 通讯异常延迟复归时间(单位:ms) + CommRecovDelay(unit:ms) + + + 机组通讯异常数据策略 + ValueWhenComloss + + + 机组 + Unit + + + 最大放电功率 + MaxDischargePower + + + 最小放电功率 + MinDischargePower + + + 最小充电功率 + MinChargePower + + + 最大充电功率 + MaxChargePower + + + 额定容量 + Rated Capacity + + + 通讯精度 + CommPrecision + + + 调节精度 + RegulatePrecision + + + 调节超时时间(单位:ms) + RegulateTimeout(unit:ms) + + + 0-使用0值,1-保持最后值 + 0-Use 0 value,1-Hold final value + + + PCS个数不能小于0个!!! + The number of PCS cannot be less than 0!!! + + + PCS个数不能大于100个!!! + The number of PCS cannot be more than 100!!! + + + 机组%1有功设定值 + Unit%1 Set value of active power + + + 机组%1有功实际值 + Unit %1 Actual value of active power + + + 【调节死区】值错误,合法值:大于0 + [Deadband] error value,legal value:Greater Than 0 + + + 【最大调节步进】值错误,合法值:大于0 + [MaxStep] error value,legal value:Greater Than 0 + + + 【最小调节周期】值错误,合法值:大于0 + [MinInterval] error value,legal value:Greater Than 0 + + + 【通讯超时时间】值错误,合法值:大于0 + [CommTimeout] error value,legal value:Greater Than 0 + + + 【通讯异常延迟复归时间】值错误,合法值:大于0 + [CommRecovDelay] error value,legal value:Greater Than 0 + + + 【停止充电SOC】值错误,合法值:大于等于0,小于等于1 + [StopChargeSOC] error value,legal value:Greater than or equal To 0, less than or equal to 1 + + + 【恢复充电SOC】值错误,合法值:大于等于0,小于等于停止充电SOC + [ReChargeSOC] error value,legal value:Greater than or equal To 0, less than or equal to StopChargeSOC + + + 【恢复放电SOC】值错误,合法值:大于等于0,小于等于恢复充电SOC + [ReDisChargeSOC] error value,legal value:Greater than or equal To 0, less than or equal to ReChargeSOC + + + 【停止放电SOC】值错误,合法值:大于等于0,小于等于恢复放电SOC + [StopDisChargeSOC] error value,legal value:Greater than or equal To 0, less than or equal to ReDisChargeSOC + + + 机组%1 SOC + Unit %1 SOC + + + 机组%1调节使能 + Unit %1 RegulateEnable + + + 机组%1分配有功 + Unit %1 DistributionPower + + + 机组%1状态码 + Unit %1 StatusCode + + + 机组%1错误码 + Unit %1 ErrorCode + + + + PushTypeDlg + + 推送格式 + Push Format + + + 推送方式 + Push Method + + + 邮件 + Email + + + 短信 + SMS + + + 电话 + Phone Call + + + 邮件标题 + Email Subject + + + 文本配置 + Text Configuration + + + 预览 + Preview + + + 自定义 + Custom + + + 模板 + Template + + + 数量 + Quantity + + + 1级数量 + Level 1 Quantity + + + 2级数量 + Level 2 Quantity + + + 3级数量 + Level 3 Quantity + + + 4级数量 + Level 4 Quantity + + + 5级数量 + Level 5 Quantity + + + 时间 + Time + + + 域 + Domain + + + 位置 + Location + + + 应用 + Apply + + + 等级 + Level + + + 内容 + Content + + + 状态 + Status + + + 专业 + Professional + + + 责任区 + Responsible Area + + + 设备组 + Equipment Group + + + 测点 + Measurement Point + + + 设备 + Equipment + + + 循环 + Cycle + + + 智能推送 + Smart Push + + + + QObject + + + 加(D) + Add(D) + + + + 输入测点未设置 + Input measurement point is not set + + + + 输出测点未设置 + Output measurement point is not set + + + + 未关联所有输入端口 + All input ports are not associated + + + + 加(A) + Add(A) + + + + 除(D) + Divide(D) + + + + 减(D) + Subtract(D) + + + + 除(A) + Divide(A) + + + + 减(A) + Subtract(A) + + + + 非 + Not + + + + 与 + And + + + + AO控制 + AO Control + + + + DO控制 + DO Control + + + + 输入(D) + Input(D) + + + + 常量(D) + Constant(D) + + + + 输入(A) + Input(A) + + + + 常量(A) + Const(A) + + + + 常量(S) + Constant(S) + + + + 或 + Or + + + + 大于(D) + Greater Than(D) + + + + 小于(D) + Less Than(D) + + + + 大于等于(D) + Greater Than or Equal To(D) + + + + 小于等于(D) + Less Than or Equal To(D) + + + + 等于(D) + Equal + + + + 大于(A) + Greater Than(A) + + + + 小于(A) + Less Than(A) + + + + 乘(A) + Multiply(A) + + + + 乘(D) + Multiply(D) + + + + Float转Int + Float to Int + + + + Int转Float + Turn Int to Float + + + + Int转Bool + Turn Int to Bool + + + + Bool转Int + Turn Bool to Int + + + + 输出(D) + Output(D) + + + + 输出(A) + Output(A) + + + + 防抖延时(D) + Delay of Anti Shake(D) + + + + 输入选择 + Input Selection + + + + 按位拆解 + Bitwise Dismantling + + + + LUA脚本 + LUA Script + + + 储能机组有功分配器 + Active Power Divider of Energy Storage Unit + + + 发电机组有功分配器 + Active Power Divider of Generating Unit + + + 告警订阅 + Alarm Subscription + + + 告警延迟 + Alarm Delay + + + 告警推送 + Alarm Push + + + 循环内格式错误!请勿修改自动生成的内容 + Loop format error! Please do not modify the automatically generated content + + + 告警拆分 + Alarm Split + + + 映射 + Mapping + + + 定时触发 + Scheduled Trigger + + + 视频控制 + Video Control + + + 告警生成 + Alarm Generation + + + + 不等于(D) + not equal to (D) + + + + 不等于(A) + not equal to (A) + + + + 全局变量输出 + Global variable output + + + + 全局变量输入 + input global variable + + + + 周期计算(A) + Cycle Calculation (A) + + + + 逻辑编程工具 + Function Block Diagram Programming Tool + + + + QPropertyEditorWidget + + 测点串 + Measurement String + + + 请把检索器中的点拖到属性中含“测点串”的行里 + Please drag a point from the retriever to the line in the properties containing 'Measurement String' + + + 点被拖到属性为“ + The point is dragged to the property ' + + + ”中 + in the middle + + + + RepeatStyleDlg + + 重复格式配置 + Repeat Format Configuration + + + 最大循环次数 + Maximum Number of Iterations + + + 循环体 + Loop Body + + + 预览 + Preview + + + 时间 + Time + + + 域 + Domain + + + 位置 + Location + + + 应用 + Apply + + + 等级 + Level + + + 内容 + Content + + + 状态 + Status + + + 专业 + Professional + + + 责任区 + Responsible Area + + + 设备组 + Equipment Group + + + 测点 + Measurement Point + + + 设备 + Equipment + + + + SubFPlugin + + 减(A) + Subtract(A) + + + + TimeDlg + + 配置 + Configuration + + + 触发方式 + Trigger Method + + + 定时触发 + Scheduled Trigger + + + 周期触发 + Cyclic Trigger + + + 间隔触发 + Interval Trigger + + + yyyy/MM/dd HH:mm:ss + Year/Month/Day Hour:Minute:Second + + + 触发时间 + Trigger Time + + + 开始时间 + Start Time + + + 结束时间 + End Time + + + 每年 + Annually + + + 每月 + Monthly + + + 每周 + Weekly + + + 每天 + Daily + + + 每时 + Hourly + + + 每分钟 + Every Minute + + + 每秒 + Every Second + + + 月 + Month + + + 星期日 + Sunday + + + 星期一 + Monday + + + 星期二 + Tuesday + + + 星期三 + Wednesday + + + 星期四 + Thursday + + + 星期五 + Friday + + + 星期六 + Saturday + + + 日 + Day + + + 时 + Hour + + + 分 + Minute + + + 秒 + Second + + + 触发间隔 + Trigger Interval + + + + TimeTriggerDlg + + 配置 + Configuration + + + OK + OK + + + Cancel + Cancel + + + yyyy/MM/dd HH:mm:ss + Year/Month/Day Hour:Minute:Second + + + 触发时间 + Trigger Time + + + 开始时间 + Start Time + + + 结束时间 + End Time + + + 每年 + Every Year + + + 每月 + Every Month + + + 每周 + Every Week + + + 每天 + Every Day + + + 每时 + Every Hour + + + 每分钟 + Every Minute + + + 每秒 + Every Second + + + 月 + Month + + + 星期日 + Sunday + + + 星期一 + Monday + + + 星期二 + Tuesday + + + 星期三 + Wednesday + + + 星期四 + Thursday + + + 星期五 + Friday + + + 星期六 + Saturday + + + 日 + Day + + + 时 + Hour + + + 分 + Minute + + + 秒 + Second + + + 触发间隔 + Trigger Interval + + + 触发方式 + Trigger Method + + + 定时触发 + Scheduled Trigger + + + 周期触发 + Cyclic Trigger + + + 间隔触发 + Interval Trigger + + + + TimeTriggerPlugin + + 定时触发 + Scheduled Trigger + + + 使能 + Enable + + + 时间配置 + Time Configuration + + + 定时触发配置不能为空 + Scheduled trigger configuration cannot be empty + + + + UserChooseDlg + + 用户选择 + User Selection + + + 添加>> + Add>> + + + 移除<< + Remove<< + + + 附加用户: + Additional Users: + + + 编辑 + Edit + + + 警告 + Warning + + + 格式错误! + Format Error! + + + + VideoControlPlugin + + 视频控制 + Video Control + + + 位置标签 + Location Tag + + + 应用标签 + Application Tag + + + 摄像头 + Camera + + + 预置点 + Preset Point + + + 使能 + Enable + + + + actionAOplugin + + + 目标值 + Target Value + + + + 使能 + Enable + + + + 0-NO + 0-No + + + + 1-YES + 1-Yes + + + + 动作名称 + Action Name + + + + 超时时间(单位:s) + Timeout (Unit: seconds) + + + + 控制测点串 + Control Measurement Point Sequence + + + + 失败重做次数 + Number of Retries on Failure + + + + 输入控制测点串 + Enter Control Point Sequence + + + + 测点 + Measurement Point + + + + actionDOplugin + + + 目标值 + Target Value + + + + 使能 + Enable + + + + 0-NO + 0-No + + + + 1-YES + 1-Yes + + + + 动作名称 + Action Name + + + + 超时时间(单位:s) + Timeout (Unit: seconds) + + + + 控制测点串 + Control Measurement Point Sequence + + + + 失败重做次数 + Number of Retries on Failure + + + + 输入控制测点串 + Enter Control Point Sequence + + + + 测点 + Measurement Point + + + + add2Plugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + add2fPlugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + alarmGeneratePlugin + + 测点标签 + Measurement Point Tag + + + 使能 + Enable + + + + alarmSubscribePlugin + + 告警类型使能 + Alarm Type Enable + + + 告警类型 + Alarm Type + + + 告警状态使能 + Alarm Status Enable + + + 告警状态 + Alarm Status + + + 告警等级使能 + Alarm Level Enable + + + 告警等级 + Alarm Level + + + 位置使能 + Location Enable + + + 位置 + Location + + + 专业使能 + Professional Enable + + + 专业 + Professional + + + 设备类型使能 + Equipment Type Enable + + + 设备类型 + Device Type + + + 责任区使能 + Responsible Area Enable + + + 责任区 + Responsibility Area + + + 设备或测点使能 + Equipment or Measurement Point Enable + + + 设备或测点 + Equipment or Measurement Point + + + 错误 + Error + + + 初始化失败 + Initialization Failed + + + 未知的属性名 + Unknown Property Name + + + 告警类型已使能,但是告警类型未选择 + Alarm Type Enabled, but No Alarm Type Selected + + + 告警状态已使能,但是告警状态未选择 + Alarm Status Enabled, but No Alarm Status Selected + + + 告警等级已使能,但是告警等级未选择 + Alarm Level Enabled, but No Alarm Level Selected + + + 位置已使能,但是位置未选择 + Location Enabled, but No Location Selected + + + 专业已使能,但是专业未选择 + Professional Enabled, but No Professional Selected + + + 设备类型已使能,但是设备类型未选择 + Equipment Type Enabled, but No Equipment Type Selected + + + 责任区已使能,但是责任区未选择 + Responsible Area Enabled, but No Responsible Area Selected + + + 设备或测点已使能,但是设备或测点未选择 + Equipment or measurement point is enabled, but no equipment or measurement point is selected + + + + and2Plugin + + + 转换个数 + Conversion Count + + + + 输入个数不能超过32个!!! + The number of inputs cannot exceed 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the current value + + + + antishakePlugin + + + 0-无效值延迟(输出无效0) + 0 - invalid value delay (output is invalid 0) + + + + 1-有效值延迟 + 1-effective value delay + + + + baseperiodcalcPlugin + + + 是否变化 + Whether Change + + + + 0-平均值 + 0 - Average Value + + + + 0-不忽略 + 0 - Do Not Ignore + + + + 1-忽略 + 1 - Ignore + + + + 计算模式 + Calculation Mode + + + + 计算周期(秒) + Calculation Period (seconds) + + + + 是否忽略无效值 + Whether to Ignore Invalid Values + + + + 【计算周期】值错误,合法值:大于0 + [Calculation Period] Value Error, Legal Value: Greater than 0 + + + + bitsplitPlugin + + + 转换个数 + Conversion Count + + + + 输出个数不能超过64个!!! + The number of outputs cannot exceed 64!!! + + + + 输出值不能小于1 + The output value cannot be less than 1 + + + + 输出值与现值相同 + The output value is the same as the current value + + + + constPlugin + + + 输出 + Output + + + + constfPlugin + + + 输出 + Output + + + + constsPlugin + + + 输出 + Output + + + + divPlugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + divfPlugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + globalInputPlugin + + + 0-整型 + 0-Integer + + + + 1-浮点型 + 1-float type + + + + 2-布尔型 + 2-Boolean + + + + 3-字符串型 + 3-String + + + + 变量名 + variable name + + + + 变量描述 + Variable description + + + + 数据类型 + Data Type + + + + 变量名不能为空 + The variable name cannot be empty + + + + 0 + 0 + + + + 1 + 1 + + + + 2 + 2 + + + + 3 + 3 + + + + globalOutputPlugin + + + 0-禁用 + 0-disabled + + + + 1-启用 + 1-Enable + + + + 0-整型 + 0-Integer + + + + 1-浮点型 + 1-float type + + + + 2-布尔型 + 2-Boolean + + + + 3-字符串型 + 3-String + + + + 变量名 + variable name + + + + 变量描述 + Variable description + + + + 启用使能引脚 + enable enable pin + + + + 数据类型 + Data Type + + + + 变量名不能为空 + The variable name cannot be empty + + + + 使能 + Enable + + + + 0 + 0 + + + + 1 + 1 + + + + 2 + 2 + + + + 3 + 3 + + + + inputPlugin + + + 0-NO + 0-No + + + + 1-YES + 1-Yes + + + + 输入测点串 + Input Measurement Point String + + + + 是否输出测点串 + Whether to output the measurement point string + + + + 测点串 + string of measurement points + + + + inputfPlugin + + + 输入测点串 + Input Measurement Point String + + + + inputswitchPlugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + luaPlugin + + + LUA内容 + LUA Content + + + + 端口间距 + Port Space + + + + 图元宽度 + Primitive Width + + + + 输入个数 + Input Number + + + + 输出个数 + Output Number + + + + 输入端口 + Input Port + + + + + 数据类型 + Data Type + + + + 输出端口 + Output Port + + + + + 0 + 0 + + + + + 1 + 1 + + + + + 2 + 2 + + + + + 3 + 3 + + + + + 4 + 4 + + + + 宽度不能大于1000 + The width cannot exceed 1000 + + + + 宽度不能小于40 + The width cannot be less than 40 + + + + + + + 输入值与现值相同 + The input value is the same as the present value + + + + 端口间隔不能大于400 + The port space cannot be more than 400 + + + + 端口间隔不能小于16 + The port space cannot be less than 16 + + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + + 输入值不能小于0 + The input value cannot be less than 0 + + + + + 0-整型 + 0-Integer + + + + + 1-浮点型 + 1-Floating Point + + + + + 2-布尔型 + 2-Boolean + + + + + 3-字符串型 + 3-String + + + + + 4-告警型 + 4-Alarm + + + 0-整型,1-浮点型,2-布尔型 + 0-Int,1-Float,2-Bool + + + + mulPlugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of inputs must not exceed 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the current value + + + + mulfPlugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + or2Plugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + outputPlugin + + + 使能 + Enable + + + + 0-同步 + 0-synchronism + + + + 1-异步 + 1-asynchronous + + + + 输出测点串 + Output Measurement Point String + + + + 仅判断使能端口值不判断值是否有效 + Only the enabled port value is judged, not whether the value is valid + + + + 输出模式 + output mode + + + + outputfPlugin + + + 使能 + Enable + + + + 0-同步 + 0-synchronism + + + + 1-异步 + 1-asynchronous + + + + 输出测点串 + Output Measurement Point String + + + + 仅判断使能端口值不判断值是否有效 + Only the enabled port value is judged, not whether the value is valid + + + + 输出模式 + output mode + + + + subPlugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + subfPlugin + + + 转换个数 + Conversion Number + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于2 + The input value cannot be less than 2 + + + + 输入值与现值相同 + The input value is the same as the present value + + + diff --git a/resource/en/fbd_editor/translate/product_en.qm b/resource/en/fbd_editor/translate/product_en.qm new file mode 100644 index 0000000000000000000000000000000000000000..a02510bab9d9ca798e236ad7b320efd405ffc63e GIT binary patch literal 53155 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 m=`h=?i1aiEINa2=HO_{p@ literal 0 HcmV?d00001 diff --git a/resource/en/fbd_editor/translate/product_en.ts b/resource/en/fbd_editor/translate/product_en.ts new file mode 100644 index 00000000..4a369d7b --- /dev/null +++ b/resource/en/fbd_editor/translate/product_en.ts @@ -0,0 +1,5955 @@ + + + + + ActionAOPlugin + + AO控制 + AO Control + + + 目标值 + Target Value + + + 使能 + Enable + + + 0-NO + 0-No + + + 1-YES + 1-Yes + + + 动作名称 + Action Name + + + 超时时间(单位:s) + Timeout Time (unit: s) + + + 控制测点串 + Control Measurement String + + + 失败重做次数 + Number of Retries on Failure + + + 输入控制测点串 + Enter Control Measurement String + + + 测点 + Measurement Point + + + + ActionDOPlugin + + 1-上升沿触发,2-下降沿触发,3-高电平触发,4-低电平触发,5-PID触发 + 1-Rising Edge Trigger, 2-Falling Edge Trigger, 3-High Level Trigger, 4-Low Level Trigger, 5-PID Trigger + + + 1-动作停止,2-动作跳过,3-动作自动重做 + 1-Action Stop, 2-Action Skip, 3-Action Auto Redo + + + 1-动作停止,2-动作跳过 + 1-Action Stop, 2-Action Skip + + + 目标值 + Target Value + + + 使能 + Enable + + + 0-NO + 0-No + + + 1-YES + 1-Yes + + + 动作名称 + Action Name + + + 超时时间(单位:s) + Timeout Time (unit: s) + + + 控制测点串 + Control Measurement Point String + + + 失败重做次数 + Number of Retries on Failure + + + 输入控制测点串 + Enter Control Measurement Point String + + + 测点 + Measurement Point + + + + Add2FPlugin + + 加(A) + Add(A) + + + 运算模块 + Arithmetic Module + + + + AlarmDelayDlg + + + 延迟配置 + Delay Configuration + + + + 延迟时间(s) + Delay Time (s) + + + + s + s + + + + 过滤条件 + Filter Conditions + + + + 过滤已确认 + Filter Confirmed + + + + 过滤已复归 + Filter Reset + + + + OK + OK + + + + Cancel + Cancel + + + + AlarmDelayPlugin + + + + 告警 + Alarm + + + + + 使能 + Enable + + + + 过滤配置 + Filter Configuration + + + + 延迟时间(s) + Delay Time (s) + + + + 最大值为14400!!! + The maximum value is 14400!!! + + + + 最小值为0!!! + The minimum value is 0!!! + + + + 过滤配置不能为空 + Filter configuration cannot be empty + + + + 延迟时间不能小于0 + Delay time cannot be less than 0 + + + 告警延迟 + Alarm Delay + + + + AlarmGeneratePlugin + + 告警生成 + Alarm Generation + + + + AlarmPushDlg + + + 告警推送 + Alarm Push + + + + OK + OK + + + + 智能推送 + Smart Push + + + + Cancel + Cancel + + + + 收件人 + Recipient + + + + 移除<< + Remove << + + + + 添加>> + Add >> + + + + 附加用户 + Additional Users + + + + 多个附加用户请用分号分开 + Separate multiple additional users with semicolons + + + + 编辑 + Edit + + + + 推送格式 + Push Format + + + + 推送方式 + Push Method + + + + 邮件 + Email + + + + 短信 + SMS + + + + 电话 + Phone + + + + 邮件标题 + Email Title + + + + 格式配置 + Format Configuration + + + + 预览 + Preview + + + + 自定义 + Customize + + + + 模板 + Template + + + + 数量 + Quantity + + + + 1级数量 + Level 1 Quantity + + + + 时间 + Time + + + + 2级数量 + Level 2 Quantity + + + + 5级数量 + Level 5 Quantity + + + + 4级数量 + Level 4 Quantity + + + + 3级数量 + Level 3 Quantity + + + + 应用 + Apply + + + + 位置 + Location + + + + 等级 + Level + + + + 域 + Domain + + + + 内容 + Content + + + + 状态 + Status + + + + 专业 + Professional + + + + 责任区 + Responsibility Area + + + + 设备组 + Device Group + + + + 测点 + Measurement Point + + + + 设备 + Device + + + + 循环 + Cycle + + + + + 警告 + Warning + + + + + 格式错误! + Format Error! + + + + AlarmPushPlugin + + + 告警 + Alarm + + + + + 使能 + Enable + + + + + 收件人 + Recipient + + + + 内容 + Content + + + + 推送类型 + Push Type + + + + 推送类型配置不能为空 + The push type configuration cannot be empty + + + + 收件人配置不能为空 + The recipient configuration cannot be empty + + + + + + 标题 + Title + + + 告警推送 + Alarm Push + + + 循环内格式错误!请勿修改自动生成的内容 + Loop format error! Please do not modify the automatically generated content + + + + AlarmSplitPlugin + + + 告警 + Alarm + + + + + 使能 + Enable + + + + 输出个数 + Number of Outputs + + + + 输出端口 + Output Port + + + + 数据 + Data + + + + 拆分个数必须大于0 + The number of splits must be greater than 0 + + + + 输出个数不能超过32个!!! + The number of outputs cannot exceed 32!!! + + + + 输入值不能小于0 + The input value cannot be less than 0 + + + + 输入值与现值相同 + The input value is the same as the current value + + + + + 时间 + Time + + + + 0-时间 + 0-Time + + + + 1-域ID + 1-Domain ID + + + + 2-位置ID + 2-Location ID + + + + 3-应用ID + 3-Application ID + + + + 4-优先级ID + 4-Priority ID + + + + 5-内容 + 5-Content + + + + 6-状态ID + 6-Status ID + + + + 7-专业ID + 7-Professional ID + + + + 8-责任区ID + 8-Responsibility Area ID + + + + 9-设备组标签 + 9-Device Group Label + + + + 10-测点标签 + 10-Measurement Point Label + + + + 11-设备标签 + 11-Device Label + + + + 0 + 0 + + + + 5 + 5 + + + + 内容 + Content + + + + 9 + 9 + + + + 设备组标签 + Device Group Label + + + + 10 + 10 + + + + 测点标签 + Measurement Point Label + + + + 11 + 11 + + + + 设备标签 + Device Label + + + + 1 + 1 + + + + 域ID + Domain ID + + + + 2 + 2 + + + + 位置ID + Location ID + + + + 3 + 3 + + + + 应用ID + Application ID + + + + 4 + 4 + + + + 优先级ID + Priority ID + + + + 6 + 6 + + + + 状态ID + Status ID + + + + 7 + 7 + + + + 专业ID + Professional ID + + + + 8 + 8 + + + + 责任区ID + Responsibility Area ID + + + 告警拆分 + Alarm Split + + + 映射 + Mapping + + + + AlarmSubscribePlugin + + 告警订阅 + Alarm Subscription + + + 告警类型使能 + Alarm Type Enable + + + 告警类型 + Alarm Type + + + 告警状态使能 + Alarm Status Enable + + + 告警状态 + Alarm Status + + + 告警等级使能 + Alarm Level Enable + + + 告警等级 + Alarm Level + + + 位置使能 + Location Enable + + + 位置 + Location + + + 专业使能 + Professional Enable + + + 专业 + Professional + + + 设备类型使能 + Equipment Type Enable + + + 设备类型 + Equipment Type + + + 责任区使能 + Responsible Area Enable + + + 责任区 + Responsible Area + + + 设备或测点使能 + Equipment or Measurement Point Enable + + + 设备或测点 + Equipment or Measurement Point + + + 错误 + Error + + + 初始化失败 + Initialization Failed + + + 未知的属性名 + Unknown Property Name + + + 告警类型已使能,但是告警类型未选择 + Alarm Type Enabled, but No Alarm Type Selected + + + 告警状态已使能,但是告警状态未选择 + Alarm Status Enabled, but No Alarm Status Selected + + + 告警等级已使能,但是告警等级未选择 + Alarm Level Enabled, but No Alarm Level Selected + + + 位置已使能,但是位置未选择 + Location Enabled, but No Location Selected + + + 专业已使能,但是专业未选择 + Professional Enabled, but No Professional Selected + + + 设备类型已使能,但是设备类型未选择 + Equipment Type Enabled, but No Equipment Type Selected + + + 责任区已使能,但是责任区未选择 + Responsible Area Enabled, but No Responsible Area Selected + + + 设备或测点已使能,但是设备或测点未选择 + Equipment or measurement point is enabled, but no equipment or measurement point is selected + + + + And2Plugin + + 与 + And + + + 转换个数 + Number of Conversions + + + 输入个数不能超过32个!!! + The number of inputs cannot exceed 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the current value + + + + AttachDlg + + + 附加用户 + Additional Users + + + + 添加 + Add + + + + 删除 + Delete + + + + 邮件校验 + Email Verification + + + + 电话校验 + Phone Verification + + + + 邮箱格式校验:未通过! + Email format check: Failed! + + + + 邮箱格式校验:通过! + Email format check: Passed! + + + + 电话格式校验:未通过! + Phone format check: Failed! + + + + 电话格式校验:通过! + Phone format check: Passed! + + + + BitSplitPlugin + + 转换个数 + Number of Conversions + + + 输出个数不能超过64个!!! + The number of outputs cannot exceed 64!!! + + + 输出值不能小于1 + The output value cannot be less than 1 + + + 输出值与现值相同 + The output value is the same as the current value + + + + CAbout + + 关于 + About + + + 逻辑编程工具 版本 V1.0 + Logic Programming Tool Version V1.0 + + + 深圳市远信储能技术有限公司 逻辑编程工具 版本 V1.0 + Shenzhen Kangbida Control Technology Co., Ltd. Logic Programming Tool Version V1.0 + + + 关闭 + Close + + + + CCallPlugin + + + 收件人 + Recipient + + + + 内容 + Content + + + + 使能 + Enable + + + + 服务器地址 + Server Address + + + + 用户名 + Username + + + + 密码 + Password + + + + 服务器地址为空 + The server address is empty + + + + 用户名为空 + The username is empty + + + + 密码为空 + The password is empty + + + + CDiagram + + 错误 + Error + + + 一个输入不能连入多个输出! + One input cannot join multiple outputs! + + + ====================FBD图检查====================== + ====================FBD Diagram Check====================== + + + 当前FBD图中没有模块! + There are no modules in the current FBD diagram! + + + > 模块 [ + > module [ + + + ] 的输入 + ] input + + + ================ + ================ + + + FBD图检查 + FBD Diagram Check + + + 图元自检失败 + Element Self-inspection Failed + + + > + > + + + 图元的输入 + Input of the Element + + + 连接了超过一个节点 + More than one node was connected + + + FBD图检查结束,共检查了%1个模块,发现了%2个错误 + FBD diagram check is over,a total of %1 modules were checked,%2 errors were found + + + 读文件模块错误,模块不存在,请重新安装程序! + Error reading file module, module does not exist, please reinstall the program! + + + 最后刷新时间: + Last Refresh Time: + + + 读实时库错误,停止运行! + Error reading rdb,stop running! + + + 实时库连接错误! + Rdb connection error! + + + 保存模块表... + Save module table... + + + 写数据库错误 + Write database error + + + 保存操作完成... + Save operation completed... + + + 数据库保存失败 + Save database failed + + + 数据库已保存 + Database saved + + + 数据库保存失败 + Save database failed + + + 选择 + choose + + + 文件中存在输出参考模块,可能被其它fbd图引用,确认删除? + There is an output reference module in the file, which may be referenced by other FBD diagrams,delete? + + + 当前文件中的模块没有库信息! + The module dose not have library infomation in the current file! + + + 从数据库中删除数据错误! + Delete data from database error! + + + + CDiagramScene + + &撤销 + &Undo + + + &重做 + &Redo + + + 没有与模块 + Not and mudule + + + 的当前端口相匹配的类型 [ + the type that the current port matches [ + + + 与 + and + + + + CFBDMainWindow + + 逻辑编程工具 + Function Block Diagram Programming Tool + + + 文件(&F) + File(&F) + + + 编辑(&E) + Edit(&E) + + + 帮助(&H) + Help(&H) + + + 视图(&V) + View(&V) + + + 工具栏 + Toolbar + + + 模块库 + Module Library + + + 属性编辑 + Attribute Edit + + + 帮助 + Help + + + 连接检查提示 + Connection Check Prompt + + + 打开(&O) + Open(&O) + + + 打开 + Open + + + 保存 + Save + + + 保存Xml文件,保存数据库 + Save the Xml file,save database + + + 另存为 + Save as + + + 另存Xml文件,另存数据库 + Save as the Xml file,save as database + + + 退出(&X) + Exit(&X) + + + 运行 + Run + + + 持续读取/停止读取实时库信息 + Continuous reading/Stop reading Rdb infomation + + + 显示信息 + Display infomation + + + 新建(&N) + New(&N) + + + 新建 + New + + + 关闭(&C) + Close(&C) + + + 关闭 + Close + + + 关于(&A) + About(&A) + + + Tab 1 + Tab 1 + + + Tab 2 + Tab 2 + + + 图元列表 + List of primitives + + + 业务类型 + Business type + + + Page + Page + + + 图列表 + Graph list + + + 1 + 1 + + + Group0 + Group0 + + + Graph0 + Graph0 + + + Graph1 + Graph1 + + + Graph2 + Graph2 + + + Graph3 + Graph3 + + + Graph4 + Graph4 + + + Group1 + Group1 + + + Graph5 + Graph5 + + + Group2 + Group2 + + + Graph6 + Graph6 + + + 组信息 + Group information + + + 模板列表 + Template list + + + Ctrl+S + Ctrl+S + + + Ctrl+Q + Ctrl+Q + + + 持续读取/停止读取实时数据 + Continuous or Stop reading real-time data + + + R + R + + + Ctrl+N + Ctrl+N + + + 放大 + Zoom In + + + 缩小 + Zoom Out + + + 恢复 + Restore + + + 显示全部 + Show All + + + 显示图元列表窗口 + Display the primitive list window + + + 设置图属性 + Set graph properties + + + 显示图列表窗口 + Display the graph list window + + + 打开xml文件 + Open XML file + + + 保存为模板 + Save as template + + + 显示模块库窗口 + Show Module Library Widget + + + 显示属性编辑窗口 + Show Attribute Edit Widget + + + 设置组信息 + Set group infomation + + + 检索器 + Retriever + + + 打开检索器 + Open retriever + + + 根据Taginfo更新当前文档中数据库的点 + Update the database point in the current document based on Taginfo + + + 删除 + Delete + + + 删除Xml文件,删除数据库中数据 + Delete the Xml file,delete the data in the database + + + 只保存Xml文件 + Only save the Xml file + + + 检查连接 + Check the connection + + + 从内存库读取 + Read from Rdb + + + 从实时库中读取每个模块输出端口信息 + Read the output port information of each module from the Rdb + + + 数据库中删除,Xml文件删除 + Delete from database,delete the Xml file + + + 左对齐 + Left align + + + 复制(&C) + Copy(&C) + + + 复制 + Copy + + + Ctrl+C + Ctrl+C + + + 粘贴(&P) + Paste(&P) + + + 粘贴 + Paste + + + Ctrl+V + Ctrl+V + + + 剪切(&U) + Cut(&U) + + + 剪切 + Cut + + + Ctrl+X + Ctrl+X + + + 顶对齐 + Top align + + + 右对齐 + Right align + + + 底对齐 + Bottom align + + + 刷新界面 + Refresh the interface + + + 只删除数据库中数据 + Only delete the data in the database + + + 中文 + Chinese + + + 英文 + English + + + 状态 + Status + + + 错误 + Error + + + 同名文件已经打开,请先关闭已打开文件! + The file with the same name has been opened,please close the open file first! + + + %1 内容为空,请检查! + %1 content is empty,please check! + + + 数据库保存成功 + Save database successfully + + + 数据库保存失败 + Failed to save database + + + xml文件保存成功 + Save Xml file successfully + + + 文件无法保存在位置' + File cannot be saved in location' + + + 数据库初始化不成功,请保存成xml文件,或者重新运行程序 + The database initialization failed,please save it as an XML file or rerun the program + + + 开始保存文件... + Start saving file... + + + 故障树标签:%1在数据库中已经存在,请重新设置标签! + Fault tree label:%1 already exists int the database,please reset the label! + + + 同名文件已经打开,请先关闭已打开的文件! + The file with the same name has been opened,please close the open file first! + + + 打开文件错误 + Open file error + + + 文件不存在: +%1 + File does not exist:%1 + + + 实时库初始化不成功,请重新运行程序 + The Rdb initialization failed,please rerun the program + + + 读实时库错误! + Error reading Rdb! + + + 读实时库完成! + Read Rdb complete! + + + 确认 + Confirm + + + 图形的修改未保存,是否关闭? + The modification of the diagram is not saved,do you want to close it? + + + &翻转 + &flip + + + 现在被选中模块是 %1 + Now the selected module is %1 + + + 现在被选中模块是 %1_%2 + Now the selected module is %1_%2 + + + 现在被选中模块个数是 %1 + Now the number of selected module is %1 + + + 找不到当前fbd文档! + The current FBD document cannot be found! + + + 打开检索器... + Open retriever... + + + 找不到该文件! + The file cannot be found! + + + 数据库初始化不成功,请重新运行程序 + The database initialization failed,please rerun the program + + + 删除数据库的相关数据... + Delete database related data... + + + 数据库删除错误: + Database deletion error: + + + 取消数据库删除 + Cancel delete database + + + 文件删除成功,提交版本库成功! + Delete file successfully,submit the version library successfully! + + + xml文件保存成功 + Save Xml file successfully + + + 加载样式文件失败 + Failed to load style file + + + 初始化所有图元失败 + Failed to initialize all primitives + + + 读取配置文件失败 + Failed to read configuration file + + + 输入输出 + Input/Output + + + 数学运算 + Mathematical operations + + + 比较模块 + Compare Module + + + 数据类型转换 + Data Type Conversion + + + 布尔运算 + Boolean operations + + + 逻辑模块 + Logic Module + + + 控制输出 + Control output + + + 功率控制 + Power Control + + + 脚本模块 + Script Module + + + 告警模块 + Alarm module + + + ALL + ALL + + + 监控 + Monitoring + + + 其他 + Other + + + 打开数据库失败 + Failed to open the database + + + 已生效 + Activated + + + 未生效 + Not activated + + + 初始化图元菜单失败 + Failed to initialize primitive menu + + + 初始化图列表失败 + Failed to initialize graph list + + + 初始化模板列表失败 + Failed to initialize template list + + + 从数据库中读取图【%1】失败 + Failed to read graph [%1] from the database + + + 删除确认 + Delete confirmation + + + 确定删除图 %1 吗? + Are you sure you want to delete graph %1? + + + 删除图失败 + Failed to delete graph + + + 更新组信息失败 + Failed to update group information + + + 当前用户无编辑权限 + Current user has no editing permissions + + + 创建路径【%1】失败 + Failed to create path [%1] + + + Open Diagram + Open Diagram + + + 数据库中已包含此图,请修改名称后再打开 + This graph already exists in the database. Please rename it before opening + + + 打开文件失败 + Failed to open the file + + + 图检查有错误且生效状态为【是】时不能保存 + "When there are errors in the graph check and the effective status is 'Yes', saving is not allowed. + + + 保存图失败 + Failed to save graph + + + 保存图成功 + Graph saved successfully + + + 警告 + Warning + + + 当前图未保存 + The current graph is not saved + + + 当前图未使能 + The current graph is not enabled + + + 请输入模板名 + Please enter template name + + + 模板名: + Template name: + + + 名称不能为空 + Name cannot be empty + + + 模板名称重复 + Template name is duplicated + + + 查询数据库失败 + Failed to query the database + + + 保存模板失败 + Failed to save template + + + 信息 + Information + + + 保存模板成功 + Template saved successfully + + + 从数据库中读取图失败 + Failed to read graph from the database + + + 导出为xml文件 + Export as XML file + + + 删除此图 + Delete this graph + + + 选择导出路径 + Choose export path + + + 询问 + Inquire + + + 文件已存在,是否覆盖? + The file already exists. Do you want to overwrite it? + + + 文件打开失败 + Failed to open the file + + + 从数据库读取文件内容失败 + Failed to read file content from the database + + + 导出成功 + Export successful + + + 确定删除模板 %1 吗? + Are you sure you want to delete template %1? + + + 删除成功 + Deletion successful + + + 删除失败 + Deletion failed + + + 选中模块左对齐 + Left-align the selected modules + + + 选中模块上端对齐 + Top-align the selected modules + + + 选中模块右对齐 + Right-align the selected modules + + + 选中模块下端对齐 + Bottom-align the selected modules + + + 复制选中模块 + Copy the selected modules + + + 粘贴操作 + Paste operation + + + 剪切选中模块 + Cut the selected modules + + + 文件被占用,无法保存在位置' + The file is occupied,cannot be saved in location' + + + 该文件没有保存过,没有库信息 + This file has not been saved, no library information + + + 数据库删除成功 + Delete database successfully + + + 数据库删除失败 + Failed to delete database + + + + CFBDRetriever + + 检索器 + Retriever + + + 专业: + Profession: + + + 位置: + Location: + + + 设备组: + Device Group: + + + 表名: + Table Name: + + + 检索方式: + Retriever Mode: + + + 设备检索 + Device + + + 表检索 + Table + + + 点类型: + Point Type: + + + 值: + Value: + + + 点名: + Point Name: + + + 列名: + Column Name: + + + 数字量 + Digital + + + 模拟量 + Analog + + + 混合量 + Mix + + + 累积量 + Accuml + + + 常量 + Const + + + 通用 + General + + + 其他 + Other + + + 值 + Value + + + 状态 + Status + + + + CFmtTextPlugin + + + + 使能 + Enable + + + + 格式化文本输出 + Formatted Text Output + + + + 输入个数 + Input Number + + + + 格式化配置 + Formatted Configuration + + + + 输入端口 + Input Port + + + + 数据类型 + Data Type + + + + 格式化文本为空 + Formatted Text is Empty + + + + 0 + 0 + + + + 1 + 1 + + + + 2 + 2 + + + + 3 + 3 + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于0 + The input value cannot be less than 0 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + 0-整型 + 0-Integer + + + + 1-浮点型 + 1-Float + + + + 2-布尔型 + 2-Boolean + + + + 3-字符串型 + 3-String + + + + CGraphicsScene + + &撤销 + &Undo + + + &重做 + &Redo + + + 没有与模块 + Not and mudule + + + 的当前端口相匹配的类型 [ + the type that the current port matches [ + + + 与 + AND + + + + CGroup + + Form + Form + + + 注意:修改组的【所属专业】属性后需要重启监控系统 + Note: Restart the monitoring system after modifying the 'Belonging Specialty' property of a group + + + 添加 + Add + + + 删除 + Delete + + + 关闭 + Close + + + 组信息 + Group information + + + ID + ID + + + 名称 + Name + + + 描述 + Description + + + 刷新间隔 + Refresh interval + + + 业务类型 + Business type + + + 所属位置 + Affiliated Location + + + 所属专业 + Location + + + 更新时间 + Update time + + + 版本号 + Version number + + + 错误 + Error + + + 创建系统信息访问库失败 + Failed to create system information access database + + + 获取所有位置信息失败 + Failed to retrieve all location information + + + 获取所有专业信息失败 + Failed to retrieve all specialty information + + + 打开数据库失败 + Failed to open the database + + + 查询fbd_group表最大id失败 + Failed to query the maximum ID from the fbd_group table + + + 添加组 + Add group + + + 告警 + Alarm + + + 请先选择一条记录 + Please select a record first + + + 修改组 + Edit Group + + + 查询此组包含的图失败 + Failed to query the graphs contained in this group + + + 警告 + Warning + + + 此组内有未删除的图,请先删除图 + There are graphs in this group that have not been deleted. Please delete the graphs first + + + 提示 + Hint + + + 确认删除? + Are you sure you want to delete? + + + 删除失败 + Delete failed + + + + CGroupEdit + + Form + Form + + + 名 称 + Name + + + 描 述 + Description + + + 刷新间隔 + Refresh Interval + + + (单位:毫秒) + (Unit: Milliseconds) + + + 业务类型 + Business Type + + + 所属位置 + Affiliated Location + + + 所属专业 + Major + + + 确定 + OK + + + 取消 + Cancel + + + 错误 + Error + + + 创建系统信息访问库失败 + Failed to create system information access library + + + 获取所有位置信息失败 + Failed to retrieve all location information + + + 获取所有专业信息失败 + Failed to retrieve all major information + + + 组名称不能为空 + The group name cannot be empty + + + 打开数据库失败 + Failed to open the database + + + 查询fbd_group表最大id失败 + Failed to query the maximum ID from the fbd_group table + + + SQL语句执行失败 + SQL statement execution failed + + + + CPluginManager + + 错误 + Error + + + 存在同名插件: + There is a plugin with the same name: + + + + CPointPropertySet + + + Dialog + Dialog + + + + OnlySelected + Only Selected + + + + Expand/Collapse + Expand/Collapse + + + + Ok + Ok + + + + Cancel + Cancel + + + + + + + 错误 + Error + + + + + 打开数据库失败 + Failed to open the database + + + + 设备或测点总数超上限,最大总数为 + The total number of devices or measurement points exceeds the limit, the maximum number is + + + + 属性字符串分割错误 + Property string split error + + + + CProgressBarDialog + + 进度 + Progress + + + 处理中... + In the processing... + + + + CProperty + + 名称 + Name + + + 输出 + Output + + + 输出名称 + Output Name + + + 输入测点串 + Input Measurement Point String + + + 输出测点串 + Output Measurement Point String + + + 控制测点串 + Control Measurement Point String + + + 动作名称 + Action Name + + + 使能类型 + Enable Type + + + 超时时间(单位:s) + 超时时间 + Timeout(unit:s) + + + 控制动作串 + Control Action String + + + 失败逻辑 + Fail Logic + + + 重做次数 + Retry Number + + + 再次失败逻辑 + Fail Again Logic + + + 转换个数 + Conversion Number + + + 输入个数 + Input Number + + + 输出个数 + Output Number + + + 输出Y名称 + Output Y Name + + + 输出QU名称 + Output QU Name + + + 输出QL名称 + Output QL Name + + + 输出名称1 + Output Name1 + + + 输出名称0 + Output Name0 + + + 进程逻辑 + Process Logic + + + 输出名称2 + Output Name2 + + + 文本 + Text + + + 颜色 + Color + + + 字体 + Font + + + 大小 + Size + + + 页数 + The Number of Page + + + 机组个数 + UnitCnt + + + 调节死区 + Deadband + + + 最大调节步进 + MaxStep + + + 最小调节周期(单位:ms) + MinInterval(unit:ms) + + + 通讯超时时间(单位:ms) + CommTimeout(unit:ms) + + + 通讯异常延迟复归时间(单位:ms) + CommRecovDelay(unit:ms) + + + 调节异常延迟复归时间(单位:ms) + RegulateRecovDelay(unit:ms) + + + 停止充电SOC + StopChargeSOC + + + 恢复充电SOC + ReChargeSOC + + + 恢复放电SOC + ReDischargeSOC + + + 停止放电SOC + StopDischargeSOC + + + 机组通讯异常数据策略 + ValueWhenComloss + + + 实例名称 + InstanceName + + + LUA内容 + LUA Content + + + 端口间距 + Port Space + + + 图元宽度 + Primitive Width + + + 输入端口 + Input Port + + + 输出端口 + Output Port + + + 类型 + Type + + + 机组 + Unit + + + 最大功率 + MaxPower + + + 最小功率 + MinPower + + + 最大放电功率 + MaxDischargePower + + + 最小放电功率 + MinDischargePower + + + 最大充电功率 + MaxChargePower + + + 最小充电功率 + MinChargePower + + + 额定容量 + Rated Capacity + + + 调节超时时间(单位:ms) + RegulateTimeout(unit:ms) + + + 调节精度 + RegulatePrecision + + + 通讯精度 + CommPrecision + + + 使用可增有功输入 + UseUpMarginInput + + + 使用可减有功输入 + UseDownMarginInput + + + 端口 + Port + + + 显示名称 + Display Name + + + 图元显示名称 + Graphical Element Display Name + + + + CPropertyTreeView + + 测点串 + Measurement Point String + + + 请把检索器中的点拖到属性中含“测点串”的行里 + Drag a point in the retriever to the line containing 'Measurement Point String' in the property + + + 点被拖到属性为“ + The point is dragged to the property' + + + ”中 + ' + + + + CRetriever + + 检索器 + Retriever + + + 专业: + Profession: + + + 位置: + Location: + + + 设备组: + 设备: + Device Group: + + + 表名: + Table Name: + + + 检索方式: + Retriever Mode: + + + 设备检索 + Device + + + 表检索 + Table + + + 点类型: + Point Type: + + + 值: + Value: + + + 点名: + Point Name: + + + 列名: + Column Name: + + + 数字量 + Digital + + + 模拟量 + Analog + + + 混合量 + Mix + + + 累积量 + Accuml + + + 常量 + Const + + + 通用 + General + + + 其他 + Other + + + 值 + Value + + + 状态 + State + + + + CSetGroupDialog + + 设置FBD图的属性 + Set the properties of the FBD diagram + + + 设置图名称: + Diagram Name: + + + 图名称不能重复 + Diagram names cannot be repeated + + + 选择故障组: + Failure Group: + + + 所属组,组类型,刷新等级,复杂度 + Group, Group type, Refresh level, Complexity + + + 所属域: + Domain: + + + 所属位置: + Location: + + + 所属专业: + Profession: + + + 设置图属性 + Set Graph Properties + + + 是 + Yes + + + 否 + No + + + 错误 + Error + + + 打开数据库失败 + Failed to open the database + + + 获取组ID失败 + "Failed to retrieve the group ID + + + 请重新命名 + Please rename + + + 图名称重复 + Graph name already exists + + + 查询数据库失败 + Failed to query the database + + + 读取数据库的分组信息错误! + Error reading the grouping infomation of database! + + + 未知位置 + Unknown Location + + + 读取数据库的位置信息错误! + Error reading the location infomation of database! + + + 未知专业 + Unknown Profession + + + 读取数据库的专业信息错误! + Error reading the profession infomation of database! + + + 所属组:%1,扫描速度:%2,复杂度:%3,位置:%4,专业:%5 + Group:%1,Scan speed:%2,Complexity:%3,Location:%4,Profession:%5 + + + 故障树标签不能为空! + Fault tree tag cannot be empty! + + + 故障树标签长度不能超过40字节! + The length of fault tree tag cannot more than 40bytes! + + + 读取数据库错误! + Error reading database! + + + 当前域的组内故障树数量已满! + The number of fault trees in the group of the current domain is full! + + + 图 名 称 + Graph Name + + + 不能重复 + Cannot be duplicated + + + 选 择 组 + Select Group + + + 是否使能 + Is it enabled? + + + + CSinglePropertySet + + + Dialog + Dialog + + + + Ok + Ok + + + + Cancel + Cancel + + + + + 错误 + Error + + + + 打开数据库失败 + Failed to open the database + + + + 告警类型 + Alarm Type + + + + 告警状态 + Alarm Status + + + + 告警类型信息不正确 + Incorrect alarm type information + + + + 告警等级 + Alarm Level + + + + 位置 + Location + + + + 专业 + Professional + + + + 设备类型 + Device Type + + + + 责任区 + Responsible Area + + + + CSmsPlugin + + + 收件人 + Recipient + + + + 内容 + Content + + + + 使能 + Enable + + + + 服务器地址 + Server Address + + + + 用户名 + Username + + + + 密码 + Password + + + + 服务器地址为空 + Server address is empty + + + + 用户名为空 + Username is empty + + + + 密码为空 + Password is empty + + + + CSmtpMailPlugin + + + 收件人 + Recipient + + + + 标题 + Subject + + + + 内容 + Content + + + + 使能 + Enable + + + + 0-普通TCP连接(默认) + 0-Standard TCP connection (default) + + + + 1-SSL连接 + 1-SSL connection + + + + 2-TLS(SMARTTLS) + 2-TLS (SMARTTLS) + + + + 发送(SMTP)服务器地址 + SMTP server address + + + + SMTP端口 + SMTP port + + + + 连接方式 + Connection method + + + + 发件人 + Sender + + + + 用户名 + Username + + + + 密码 + Password + + + + 服务器地址为空 + Server address is empty + + + + 发件人为空 + Sender is empty + + + + 用户名为空 + Username is empty + + + + 密码为空 + Password is empty + + + + CStringListDialog + + 添加 + Add + + + 删除 + Delete + + + 选择 Plugin 路径 + Select Plugin path + + + + CTemplateWidget + + 删除此模板 + Delete this template + + + + ConstFPlugin + + 输出 + Output + + + + ConstPlugin + + 常量(D) + Constant(D) + + + 输出 + Output + + + + ConstsPlugin + + 常量(S) + Constant(S) + + + + DemandControlPlugin + + + 调节使能 + Enable Adjustment + + + + 总实时功率 + Total Real-time Power + + + + 储能实时功率 + Energy Storage Real-time Power + + + + 储能计划功率 + Energy Storage Scheduled Power + + + + 需量设定值 + Demand Setpoint + + + + 逆流功率设定值 + Reverse Power Setpoint + + + + 目标功率 + Target Power + + + + 输出使能 + Output Enable + + + + 0-禁用需量控制 + 0-Disable Demand Control + + + + 1-启用需量控制 + 1-Enable Demand Control + + + + 0-禁用防逆流控制 + 0-Disable Anti-Reverse Flow Control + + + + 1-启用防逆流控制 + 1-Enable Anti-Reverse Flow Control + + + + 是否启用需量控制 + Whether to Enable Demand Control + + + + 需量调节死区 + Demand Control Deadband + + + + 超需时最大放电功率 + Maximum Discharge Power During Over-demand + + + + 是否启用防逆流控制 + Should Anti-Reverse Flow Control be Enabled + + + + 逆流时最大充电功率 + Maximum Charging Power During Reverse Flow + + + + 逆流调节死区 + Reverse Flow Regulation Deadband + + + + 最小调节间隔(单位:ms) + Minimum adjustment interval (unit: ms) + + + + 【需量调节死区】值错误,合法值:大于0 + Demand control deadband value is incorrect, the legal value should be: greater than 0 + + + + 【最大放电功率】值错误,合法值:大于等于0 + Maximum discharge power value is incorrect, the legal value should be: greater than or equal to 0 + + + + 【逆流调节死区】值错误,合法值:大于0 + Reverse flow regulation deadband value is incorrect, the legal value should be: greater than 0 + + + + 【最大充电功率】值错误,合法值:小于等于0 + Maximum charging power value is incorrect, the legal value should be: less than or equal to 0 + + + + 【最小调节间隔】值错误,合法值:大于等于0 + The [Minimum Adjustment Interval] value is incorrect, legal value: greater than or equal to 0 + + + + DivFPlugin + + 除(A) + Divide(A) + + + + DivPlugin + + 除(D) + Divide(D) + + + 减(D) + Subtract(D) + + + + FilterStyleDlg + + + 过滤格式 + Filter Style + + + + 过滤已确认 + Filter Confirmed + + + + 过滤已复归 + Filter Restored + + + + FmtCfgDialog + + + Dialog + Dialog + + + + 文本配置 + Text Configuration + + + + 预览 + Preview + + + + 变量 + Variables + + + + 格式化文本配置 + Formatted Text Configuration + + + + 真 + True + + + + [ + [ + + + + InputFPlugin + + 输入(A) + Input(A) + + + 常量(A) + Const(A) + + + 或 + Or + + + 大于(D) + Greater Than(D) + + + 比较模块 + Compare Module + + + 小于(D) + Less Than(D) + + + 大于等于(D) + Greater Than or Equal To(D) + + + 小于等于(D) + Less Than or Equal To(D) + + + 等于(D) + Equal + + + 大于(A) + Greater Than(A) + + + 小于(A) + Less Than(A) + + + 乘(A) + Multiply(A) + + + 乘(D) + Multiply(D) + + + Float转Int + Float to Int + + + 数据类型转换 + Data Type Conversion + + + Int转Float + Turn Int to Float + + + Int转Bool + Turn Int to Bool + + + Bool转Int + Turn Bool to Int + + + 输出(D) + Output(D) + + + 输出(A) + Output(A) + + + 防抖延时(D) + Delay of Anti Shake(D) + + + 逻辑模块 + Logic Module + + + 输入选择 + Input Selection + + + 按位拆解 + Bitwise Dismantling + + + 储能机组有功分配器 + Active Power Divider of Energy Storage Unit + + + 功率控制 + Power Control + + + 发电机组有功分配器 + Active Power Divider of Generating Unit + + + DO控制 + DO Control + + + LUA脚本 + LUA Script + + + 脚本模块 + Script Module + + + 输入测点未设置 + Input measurement point is not set + + + 输出测点未设置 + Output measurement point is not set + + + 未关联所有输入端口 + All input ports are not associated + + + + InputPlugin + + 输入(D) + Input(D) + + + 输入输出常量 + Input Output Constant + + + + MapCfgDlg + + + + 映射配置 + Mapping Configuration + + + + 请输入搜索内容 + Please enter the search content + + + + <html><head/><body><p>检索器</p></body></html> + <html><head/><body><p>Retriever</p></body></html> + + + + <html><head/><body><p>添加</p></body></html> + + + + + <html><head/><body><p>删除</p></body></html> + + + + + <html><head/><body><p>导出</p></body></html> + + + + + <html><head/><body><p>导入</p></body></html> + + + + + 确定 + OK + + + + 取消 + Cancel + + + + 整型 + Integer + + + + 浮点型 + Float + + + + 布尔 + Boolean + + + + 字符串 + String + + + + 未知类型 + Unknown Type + + + + + + + + + 警告 + Warning + + + + + + + + 格式错误! + Format Error! + + + + 请选择需要删除的行! + Please select the row to delete! + + + + 打开文件 + Open File + + + + + + 消息 + Message + + + + 文件打开失败! + Failed to open the file! + + + + 导入成功 + Import successful + + + + Save File + Save File + + + + + + + 提示 + Hint + + + + 导出成功! + Export successful! + + + + 没有%1表! + There is no %1 table! + + + + 主键[%1]重复 + Primary key [%1] is duplicated + + + + 未知类型或错误类型[%1] + Unknown or incorrect type [%1] + + + + row:[%1],column:[%2]类型错误! + Row: [%1], Column: [%2] type error! + + + + MulPlugin + + 转换个数 + Number of Conversions + + + 输入个数不能超过32个!!! + The number of inputs cannot exceed 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + MultiMapPlugin + + + + 使能 + Enable + + + + + 0-整型 + 0-Integer + + + + + 1-浮点型 + 1-Floating Point + + + + + 2-布尔型 + 2-Boolean + + + + + 3-字符串型 + 3-String + + + + 输入类型 + Input Type + + + + 输出个数 + Number of Outputs + + + + 映射配置 + Mapping Configuration + + + + 输出端口 + Output Ports + + + + 数据类型 + Data Type + + + + 提示 + Hint + + + + 请先配置输出个数等信息 + Please configure the number of outputs and other information first + + + + 映射输出个数必须大于0 + The number of mapped outputs must be greater than 0 + + + + 映射配置不能为空 + Mapping configuration cannot be empty + + + + + 0 + 0 + + + + + 1 + 1 + + + + + 2 + 2 + + + + + 3 + 3 + + + + 输出个数不能超过32个!!! + The number of outputs cannot exceed 32!!! + + + + 输入值不能小于0 + The input value cannot be less than 0 + + + + 输入值与现值相同 + The input value is the same as the current value + + + + 4 + 4 + + + + NotPlugin + + 非 + Not + + + + PowerControlGENPlugin + + + 总有功目标值 + TotalPowerTargetValue + + + + 总有功上限 + TotalPowerUpLimit + + + + 总有功下限 + TotalPowerLowLimit + + + + 总调节使能 + TotalRegulateEnable + + + + 总有功 + TotalPower + + + + 总可增有功 + TotalUpMarginPower + + + + 总可减有功 + TotalDownMarginPower + + + + 状态码 + StatusCode + + + + 错误码 + ErrorCode + + + 0-使用0值,1-保持最后值 + 0-Use 0 value,1-Hold final value + + + + GEN个数不能小于0个!!! + The number of GEN cannot be less than 0!!! + + + + GEN个数不能大于50个!!! + The number of GEN cannot be more than 50!!! + + + + 机组%1有功实际值 + Unit %1 Actual value of active power + + + + 【调节死区】值错误,合法值:大于0 + [Deadband] error value,legal value:Greater Than 0 + + + + 【最大调节步进】值错误,合法值:大于0 + [MaxStep] error value,legal value:Greater Than 0 + + + + 【最小调节周期】值错误,合法值:大于0 + [MinInterval] error value,legal value:Greater Than 0 + + + + 【通讯超时时间】值错误,合法值:大于0 + [CommTimeout] error value,legal value:Greater Than 0 + + + + 【通讯异常延迟复归时间】值错误,合法值:大于0 + [CommRecovDelay] error value,legal value:Greater Than 0 + + + + 机组%1有功设定值 + Unit %1 Set value of active power + + + + 0-使用0值 + 0-Use Zero Value + + + + 1-保持最后值 + 1-Maintain Last Value + + + + 机组个数 + UnitCnt + + + + 调节死区 + Deadband + + + + 最大调节步进 + MaxStep + + + + 最小调节周期(单位:ms) + MinInterval(unit:ms) + + + + 通讯超时时间(单位:ms) + CommTimeout(unit:ms) + + + + 通讯异常延迟复归时间(单位:ms) + CommRecovDelay(unit:ms) + + + + 机组通讯异常数据策略 + ValueWhenComloss + + + + + + + + + + 机组 + Unit + + + + 最大功率 + MaxPower + + + + 最小功率 + MinPower + + + + 通讯精度 + CommPrecision + + + + 调节精度 + RegulatePrecision + + + + 调节超时时间(单位:ms) + RegulateTimeout(unit:ms) + + + + 使用可增有功输入 + UseUpMarginInput + + + + 使用可减有功输入 + UseDownMarginInput + + + + 机组%1可增有功 + Unit %1 UpMarginPower + + + + 机组%1可减有功 + Unit %1 DownMarginPower + + + + + 机组%1调节使能 + Unit %1 RegulateEnable + + + + 机组%1分配有功 + Unit %1 DistributionPower + + + + 机组%1状态码 + Unit %1 StatusCode + + + + 机组%1错误码 + Unit %1 ErrorCode + + + + PowerControlLinearPlugin + + + AGC设定值 + AGC setting + + + + 误差允许 + tolerance + + + + 总调节使能 + Master Regulator Enable + + + + SOC上限 + SOC upper limit + + + + SOC下限 + lower limit of SOC + + + + 调节步进 + adjustable step + + + + 调节周期(s) + Adjustment period (s) + + + + 总输出有功 + Total output active + + + + 状态码 + StatusCode + + + + 错误码 + ErrorCode + + + + 机组个数 + UnitCnt + + + + PCS个数不能小于0个!!! + The number of PCS cannot be less than 0!!! + + + + PCS个数不能大于200个!!! + The number of PCS cannot be more than 100!!! + + + + 机组%1最大放电功率 + Unit %1 Maximum discharge power + + + + 机组%1最大充电功率 + Unit %1 Maximum charging power + + + + 机组%1有功实际值 + Unit %1 Actual value of active power + + + + 机组%1 SOC + Unit %1 SOC + + + + + 机组%1调节使能 + Unit %1 RegulateEnable + + + + 机组%1分配有功 + Unit %1 DistributionPower + + + + 机组%1状态码 + Unit %1 StatusCode + + + + 机组%1错误码 + Unit %1 ErrorCode + + + + PowerControlPCSPlugin + + + 总有功目标值 + TotalPowerTargetValue + + + + 总有功上限 + TotalPowerUpLimit + + + + 总有功下限 + TotalPowerLowLimit + + + + 总调节使能 + TotalRegulateEnable + + + + + 停止充电SOC + StopChargeSOC + + + + + 恢复充电SOC + ReChargeSOC + + + + + 恢复放电SOC + ReDischargeSOC + + + + + 停止放电SOC + StopDischargeSOC + + + + 总有功 + TotalPower + + + + 总可增有功 + TotalUpMarginPower + + + + 总可减有功 + TotalDownMarginPower + + + + 总SOC + Total SOC + + + + 状态码 + StatusCode + + + + 错误码 + ErrorCode + + + + 0-使用0值 + 0-Use Zero Value + + + + 1-保持最后值 + 1-Maintain Last Value + + + + 机组个数 + UnitCnt + + + + 调节死区 + Deadband + + + + 最大调节步进 + MaxStep + + + + 最小调节周期(单位:ms) + MinInterval(unit:ms) + + + + 通讯超时时间(单位:ms) + CommTimeout(unit:ms) + + + + 通讯异常延迟复归时间(单位:ms) + CommRecovDelay(unit:ms) + + + + 机组通讯异常数据策略 + ValueWhenComloss + + + + + + + + + + + 机组 + Unit + + + + 最大放电功率 + MaxDischargePower + + + + 最小放电功率 + MinDischargePower + + + + 最小充电功率 + MinChargePower + + + + 最大充电功率 + MaxChargePower + + + + 额定容量 + Rated Capacity + + + + 通讯精度 + CommPrecision + + + + 调节精度 + RegulatePrecision + + + + 调节超时时间(单位:ms) + RegulateTimeout(unit:ms) + + + 0-使用0值,1-保持最后值 + 0-Use 0 value,1-Hold final value + + + + PCS个数不能小于0个!!! + The number of PCS cannot be less than 0!!! + + + + PCS个数不能大于100个!!! + The number of PCS cannot be more than 100!!! + + + + 机组%1有功设定值 + Unit%1 Set value of active power + + + + 机组%1有功实际值 + Unit %1 Actual value of active power + + + + 【调节死区】值错误,合法值:大于0 + [Deadband] error value,legal value:Greater Than 0 + + + + 【最大调节步进】值错误,合法值:大于0 + [MaxStep] error value,legal value:Greater Than 0 + + + + 【最小调节周期】值错误,合法值:大于0 + [MinInterval] error value,legal value:Greater Than 0 + + + + 【通讯超时时间】值错误,合法值:大于0 + [CommTimeout] error value,legal value:Greater Than 0 + + + + 【通讯异常延迟复归时间】值错误,合法值:大于0 + [CommRecovDelay] error value,legal value:Greater Than 0 + + + 【停止充电SOC】值错误,合法值:大于等于0,小于等于1 + [StopChargeSOC] error value,legal value:Greater than or equal To 0, less than or equal to 1 + + + 【恢复充电SOC】值错误,合法值:大于等于0,小于等于停止充电SOC + [ReChargeSOC] error value,legal value:Greater than or equal To 0, less than or equal to StopChargeSOC + + + 【恢复放电SOC】值错误,合法值:大于等于0,小于等于恢复充电SOC + [ReDisChargeSOC] error value,legal value:Greater than or equal To 0, less than or equal to ReChargeSOC + + + 【停止放电SOC】值错误,合法值:大于等于0,小于等于恢复放电SOC + [StopDisChargeSOC] error value,legal value:Greater than or equal To 0, less than or equal to ReDisChargeSOC + + + + 机组%1 SOC + Unit %1 SOC + + + + + 机组%1调节使能 + Unit %1 RegulateEnable + + + + 机组%1分配有功 + Unit %1 DistributionPower + + + + 机组%1状态码 + Unit %1 StatusCode + + + + 机组%1错误码 + Unit %1 ErrorCode + + + + PowerControlReactivePlugin + + + AVC设定值 + AVC setpoint + + + + 总调节使能 + Master Regulator Enable + + + + 调节步进 + adjustable step + + + + 调节周期(s) + Adjustment period (s) + + + + 总输出无功 + Total output reactive + + + + 状态码 + StatusCode + + + + 错误码 + ErrorCode + + + + 机组个数 + UnitCnt + + + + PCS个数不能小于0个!!! + The number of PCS cannot be less than 0!!! + + + + PCS个数不能大于200个!!! + The number of PCS cannot be more than 100!!! + + + + 机组%1无功功率可调上限 + Unit %1 adjustable upper limit for reactive power + + + + 机组%1无功功率可调下限 + Unit %1 adjustable lower limit for reactive power + + + + 机组%1无功实际值 + Unit %1 Actual value of active power + + + + + 机组%1调节使能 + Unit %1 regulation enabled + + + + 机组%1分配无功 + Unit %1 allocates reactive power + + + + 机组%1状态码 + Unit %1 StatusCode + + + + 机组%1错误码 + Unit %1 ErrorCode + + + + PushTypeDlg + + + 推送格式 + Push Format + + + + 推送方式 + Push Method + + + + 邮件 + Email + + + + 短信 + SMS + + + + 电话 + Phone Call + + + + 邮件标题 + Email Subject + + + + 文本配置 + Text Configuration + + + + 预览 + Preview + + + + 自定义 + Custom + + + + 模板 + Template + + + + 数量 + Quantity + + + + 1级数量 + Level 1 Quantity + + + + 2级数量 + Level 2 Quantity + + + + 3级数量 + Level 3 Quantity + + + + 4级数量 + Level 4 Quantity + + + + 5级数量 + Level 5 Quantity + + + + 时间 + Time + + + + 域 + Domain + + + + 位置 + Location + + + + 应用 + Apply + + + + 等级 + Level + + + + 内容 + Content + + + + 状态 + Status + + + + 专业 + Professional + + + + 责任区 + Responsible Area + + + + 设备组 + Equipment Group + + + + 测点 + Measurement Point + + + + 设备 + Equipment + + + + 循环 + Cycle + + + + 智能推送 + Smart Push + + + + QObject + + 加(D) + Add(D) + + + 输入测点未设置 + Input measurement point is not set + + + 输出测点未设置 + Output measurement point is not set + + + 未关联所有输入端口 + All input ports are not associated + + + 加(A) + Add(A) + + + 除(D) + Divide(D) + + + 减(D) + Subtract(D) + + + 除(A) + Divide(A) + + + 减(A) + Subtract(A) + + + 非 + Not + + + 与 + And + + + AO控制 + AO Control + + + DO控制 + DO Control + + + 输入(D) + Input(D) + + + 常量(D) + Constant(D) + + + 输入(A) + Input(A) + + + 常量(A) + Const(A) + + + 常量(S) + Constant(S) + + + 或 + Or + + + 大于(D) + Greater Than(D) + + + 小于(D) + Less Than(D) + + + 大于等于(D) + Greater Than or Equal To(D) + + + 小于等于(D) + Less Than or Equal To(D) + + + 等于(D) + Equal + + + 大于(A) + Greater Than(A) + + + 小于(A) + Less Than(A) + + + 乘(A) + Multiply(A) + + + 乘(D) + Multiply(D) + + + Float转Int + Float to Int + + + Int转Float + Turn Int to Float + + + Int转Bool + Turn Int to Bool + + + Bool转Int + Turn Bool to Int + + + 输出(D) + Output(D) + + + 输出(A) + Output(A) + + + 防抖延时(D) + Delay of Anti Shake(D) + + + 输入选择 + Input Selection + + + 按位拆解 + Bitwise Dismantling + + + LUA脚本 + LUA Script + + + + 储能机组有功分配器 + Active Power Divider of Energy Storage Unit + + + + 发电机组有功分配器 + Active Power Divider of Generating Unit + + + + 告警订阅 + Alarm Subscription + + + + 告警延迟 + Alarm Delay + + + + 告警推送 + Alarm Push + + + + 循环内格式错误!请勿修改自动生成的内容 + Loop format error! Please do not modify the automatically generated content + + + + 告警拆分 + Alarm Split + + + + 映射 + Mapping + + + + 定时触发 + Scheduled Trigger + + + + 视频控制 + Video Control + + + + 告警生成 + Alarm Generation + + + + 需量/逆流控制策略 + Demand/Reverse Flow Control Strategy + + + + 储能机组线性有功分配器 + Energy storage unit linear active power distributor + + + + 储能机组无功分配器 + Reactive power distributor for energy storage units + + + + QPropertyEditorWidget + + 测点串 + Measurement String + + + 请把检索器中的点拖到属性中含“测点串”的行里 + Please drag a point from the retriever to the line in the properties containing 'Measurement String' + + + 点被拖到属性为“ + The point is dragged to the property ' + + + ”中 + in the middle + + + + RepeatStyleDlg + + + 重复格式配置 + Repeat Format Configuration + + + + 最大循环次数 + Maximum Number of Iterations + + + + 循环体 + Loop Body + + + + 预览 + Preview + + + + 时间 + Time + + + + 域 + Domain + + + + 位置 + Location + + + + 应用 + Apply + + + + 等级 + Level + + + + 内容 + Content + + + + 状态 + Status + + + + 专业 + Professional + + + + 责任区 + Responsible Area + + + + 设备组 + Equipment Group + + + + 测点 + Measurement Point + + + + 设备 + Equipment + + + + SubFPlugin + + 减(A) + Subtract(A) + + + + TimeDlg + + + 配置 + Configuration + + + + 触发方式 + Trigger Method + + + + 定时触发 + Scheduled Trigger + + + + 周期触发 + Cyclic Trigger + + + + 间隔触发 + Interval Trigger + + + + + + yyyy/MM/dd HH:mm:ss + Year/Month/Day Hour:Minute:Second + + + + 触发时间 + Trigger Time + + + + 开始时间 + Start Time + + + + 结束时间 + End Time + + + + 每年 + Annually + + + + 每月 + Monthly + + + + 每周 + Weekly + + + + 每天 + Daily + + + + 每时 + Hourly + + + + 每分钟 + Every Minute + + + + 每秒 + Every Second + + + + 月 + Month + + + + 星期日 + Sunday + + + + 星期一 + Monday + + + + 星期二 + Tuesday + + + + 星期三 + Wednesday + + + + 星期四 + Thursday + + + + 星期五 + Friday + + + + 星期六 + Saturday + + + + 日 + Day + + + + 时 + Hour + + + + 分 + Minute + + + + + 秒 + Second + + + + 触发间隔 + Trigger Interval + + + + TimeTriggerDlg + + + 配置 + Configuration + + + + OK + OK + + + + Cancel + Cancel + + + + + + yyyy/MM/dd HH:mm:ss + Year/Month/Day Hour:Minute:Second + + + + 触发时间 + Trigger Time + + + + 开始时间 + Start Time + + + + 结束时间 + End Time + + + + 每年 + Every Year + + + + 每月 + Every Month + + + + 每周 + Every Week + + + + 每天 + Every Day + + + + 每时 + Every Hour + + + + 每分钟 + Every Minute + + + + 每秒 + Every Second + + + + 月 + Month + + + + 星期日 + Sunday + + + + 星期一 + Monday + + + + 星期二 + Tuesday + + + + 星期三 + Wednesday + + + + 星期四 + Thursday + + + + 星期五 + Friday + + + + 星期六 + Saturday + + + + 日 + Day + + + + 时 + Hour + + + + 分 + Minute + + + + + 秒 + Second + + + + 触发间隔 + Trigger Interval + + + + 触发方式 + Trigger Method + + + + 定时触发 + Scheduled Trigger + + + + 周期触发 + Cyclic Trigger + + + + 间隔触发 + Interval Trigger + + + + TimeTriggerPlugin + + 定时触发 + Scheduled Trigger + + + + 使能 + Enable + + + + 时间配置 + Time Configuration + + + + 定时触发配置不能为空 + Scheduled trigger configuration cannot be empty + + + + UserChooseDlg + + + 用户选择 + User Selection + + + + 添加>> + Add>> + + + + 移除<< + Remove<< + + + + 附加用户: + Additional Users: + + + + 编辑 + Edit + + + + + 警告 + Warning + + + + + 格式错误! + Format Error! + + + + VideoControlPlugin + + 视频控制 + Video Control + + + + 位置标签 + Location Tag + + + + 应用标签 + Application Tag + + + + 摄像头 + Camera + + + + 预置点 + Preset Point + + + + 使能 + Enable + + + + actionAOplugin + + 目标值 + Target Value + + + 使能 + Enable + + + 0-NO + 0-No + + + 1-YES + 1-Yes + + + 动作名称 + Action Name + + + 超时时间(单位:s) + Timeout (Unit: seconds) + + + 控制测点串 + Control Measurement Point Sequence + + + 失败重做次数 + Number of Retries on Failure + + + 输入控制测点串 + Enter Control Point Sequence + + + 测点 + Measurement Point + + + + actionDOplugin + + 目标值 + Target Value + + + 使能 + Enable + + + 0-NO + 0-No + + + 1-YES + 1-Yes + + + 动作名称 + Action Name + + + 超时时间(单位:s) + Timeout (Unit: seconds) + + + 控制测点串 + Control Measurement Point Sequence + + + 失败重做次数 + Number of Retries on Failure + + + 输入控制测点串 + Enter Control Point Sequence + + + 测点 + Measurement Point + + + + add2Plugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + add2fPlugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + alarmGeneratePlugin + + + 测点标签 + Measurement Point Tag + + + + 使能 + Enable + + + + alarmSubscribePlugin + + + 告警类型使能 + Alarm Type Enable + + + + 告警类型 + Alarm Type + + + + 告警状态使能 + Alarm Status Enable + + + + 告警状态 + Alarm Status + + + + 告警等级使能 + Alarm Level Enable + + + + 告警等级 + Alarm Level + + + + 位置使能 + Location Enable + + + + 位置 + Location + + + + 专业使能 + Professional Enable + + + + 专业 + Professional + + + + 设备类型使能 + Equipment Type Enable + + + + 设备类型 + Device Type + + + + 责任区使能 + Responsible Area Enable + + + + 责任区 + Responsibility Area + + + + 设备或测点使能 + Equipment or Measurement Point Enable + + + + 设备或测点 + Equipment or Measurement Point + + + + + + 错误 + Error + + + + + 初始化失败 + Initialization Failed + + + + 未知的属性名 + Unknown Property Name + + + + 告警类型已使能,但是告警类型未选择 + Alarm Type Enabled, but No Alarm Type Selected + + + + 告警状态已使能,但是告警状态未选择 + Alarm Status Enabled, but No Alarm Status Selected + + + + 告警等级已使能,但是告警等级未选择 + Alarm Level Enabled, but No Alarm Level Selected + + + + 位置已使能,但是位置未选择 + Location Enabled, but No Location Selected + + + + 专业已使能,但是专业未选择 + Professional Enabled, but No Professional Selected + + + + 设备类型已使能,但是设备类型未选择 + Equipment Type Enabled, but No Equipment Type Selected + + + + 责任区已使能,但是责任区未选择 + Responsible Area Enabled, but No Responsible Area Selected + + + + 设备或测点已使能,但是设备或测点未选择 + Equipment or measurement point is enabled, but no equipment or measurement point is selected + + + + and2Plugin + + 转换个数 + Conversion Count + + + 输入个数不能超过32个!!! + The number of inputs cannot exceed 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the current value + + + + bitsplitPlugin + + 转换个数 + Conversion Count + + + 输出个数不能超过64个!!! + The number of outputs cannot exceed 64!!! + + + 输出值不能小于1 + The output value cannot be less than 1 + + + 输出值与现值相同 + The output value is the same as the current value + + + + constPlugin + + 输出 + Output + + + + constfPlugin + + 输出 + Output + + + + constsPlugin + + 输出 + Output + + + + divPlugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + divfPlugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + inputPlugin + + 输入测点串 + Input Measurement Point String + + + + inputfPlugin + + 输入测点串 + Input Measurement Point String + + + + inputswitchPlugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + luaPlugin + + LUA内容 + LUA Content + + + 端口间距 + Port Space + + + 图元宽度 + Primitive Width + + + 输入个数 + Input Number + + + 输出个数 + Output Number + + + 输入端口 + Input Port + + + 数据类型 + Data Type + + + 输出端口 + Output Port + + + 0 + 0 + + + 1 + 1 + + + 2 + 2 + + + 3 + 3 + + + 4 + 4 + + + 宽度不能大于1000 + The width cannot exceed 1000 + + + 宽度不能小于40 + The width cannot be less than 40 + + + 输入值与现值相同 + The input value is the same as the present value + + + 端口间隔不能大于400 + The port space cannot be more than 400 + + + 端口间隔不能小于16 + The port space cannot be less than 16 + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于0 + The input value cannot be less than 0 + + + 0-整型 + 0-Integer + + + 1-浮点型 + 1-Floating Point + + + 2-布尔型 + 2-Boolean + + + 3-字符串型 + 3-String + + + 4-告警型 + 4-Alarm + + + 0-整型,1-浮点型,2-布尔型 + 0-Int,1-Float,2-Bool + + + + mulPlugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of inputs must not exceed 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the current value + + + + mulfPlugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + or2Plugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + outputPlugin + + 输出测点串 + Output Measurement Point String + + + + outputfPlugin + + 输出测点串 + Output Measurement Point String + + + + subPlugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + subfPlugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + diff --git a/resource/en/fes/translate/fes_en.mo b/resource/en/fes/translate/fes_en.mo new file mode 100644 index 0000000000000000000000000000000000000000..5de0ccffd0c0f3fb8c0568c0439f121cd16d2188 GIT binary patch literal 23485 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 SBC@3uvhH7>U2w}Wt^N;bIamJx literal 0 HcmV?d00001 diff --git a/resource/en/fes/translate/fes_en.po b/resource/en/fes/translate/fes_en.po new file mode 100644 index 00000000..ccad9a7b --- /dev/null +++ b/resource/en/fes/translate/fes_en.po @@ -0,0 +1,1916 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2024-05-16 09:46+0800\n" +"PO-Revision-Date: 2024-05-23 11:44+0800\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 3.4.4\n" +"X-Poedit-Basepath: ../../../../../src/fes\n" +"X-Poedit-KeywordsList: I18N;I18N_C\n" +"X-Poedit-SearchPath-0: fes\n" +"X-Poedit-SearchPath-1: protocol\n" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:294 protocol/iec61850client2/IEC61850cDataProcThread.cpp:257 +#, fuzzy +#| msgid "选择成功" +msgid "遥控选择成功!" +msgstr "Selection success" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:295 protocol/iec61850client2/IEC61850cDataProcThread.cpp:258 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控选择成功,RtuNo:%d,遥控点:%d " +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:298 protocol/iec61850client2/IEC61850cDataProcThread.cpp:261 +msgid "遥控放弃成功!" +msgstr "Remote control abandonment successful!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:299 protocol/iec61850client2/IEC61850cDataProcThread.cpp:262 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控放弃成功,RtuNo:%d,遥控点:%d " +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:302 protocol/iec61850client2/IEC61850cDataProcThread.cpp:265 +msgid "遥控执行成功!" +msgstr "Remote control execution successful!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:303 protocol/iec61850client2/IEC61850cDataProcThread.cpp:266 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控执行成功,RtuNo:%d,遥控点:%d " +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:312 protocol/iec61850client2/IEC61850cDataProcThread.cpp:275 +msgid "遥控选择失败!" +msgstr "Remote control selection failed!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:313 protocol/iec61850client2/IEC61850cDataProcThread.cpp:276 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控选择失败,RtuNo:%d,遥控点:%d 错误代号:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:316 protocol/iec61850client2/IEC61850cDataProcThread.cpp:279 +msgid "遥控放弃失败!" +msgstr "Remote control abandonment failed!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:317 protocol/iec61850client2/IEC61850cDataProcThread.cpp:280 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控放弃失败,RtuNo:%d,遥控点:%d 错误代号:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:320 protocol/iec61850client2/IEC61850cDataProcThread.cpp:283 +msgid "遥控执行失败!" +msgstr "Remote control execution failed!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:321 protocol/iec61850client2/IEC61850cDataProcThread.cpp:284 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控执行失败,RtuNo:%d,遥控点:%d 错误代号:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:396 protocol/iec61850client2/IEC61850cDataProcThread.cpp:359 +#, fuzzy, c-format +#| msgid "KBD104 定值读取成功!RtuNo:%d" +msgid "定值读取部分成功!RtuNo:%d" +msgstr "KBD104 Read const success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:402 protocol/iec61850client2/IEC61850cDataProcThread.cpp:365 +#, fuzzy, c-format +#| msgid "KBD104 定值读取失败!RtuNo:%d" +msgid "定值读取失败!RtuNo:%d" +msgstr "KBD104 Read const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:409 protocol/iec61850client2/IEC61850cDataProcThread.cpp:372 +#, fuzzy, c-format +#| msgid "KBD104 定值读取成功!RtuNo:%d" +msgid "定值读取成功!RtuNo:%d" +msgstr "KBD104 Read const success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:480 protocol/iec61850client2/IEC61850cDataProcThread.cpp:443 +#, fuzzy, c-format +#| msgid "定值修改成功! RtuNo:%d" +msgid "定值修改部分成功!RtuNo:%d " +msgstr "Modify const success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:486 protocol/iec61850client2/IEC61850cDataProcThread.cpp:449 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "定值修改失败!RtuNo:%d " +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:493 protocol/iec61850client2/IEC61850cDataProcThread.cpp:456 +#, fuzzy, c-format +#| msgid "定值修改成功! RtuNo:%d" +msgid "定值修改成功!RtuNo:%d" +msgstr "Modify const success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:547 protocol/iec61850client2/IEC61850cDataProcThread.cpp:510 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3980 +#, c-format +msgid "激活定值修改成功! RtuNo:%d" +msgstr "Active the const modification success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:553 protocol/iec61850client2/IEC61850cDataProcThread.cpp:516 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3986 +#, c-format +msgid "激活定值修改失败!RtuNo:%d" +msgstr "Active the const modification failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:581 protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:582 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:544 protocol/iec61850client2/IEC61850cDataProcThread.cpp:545 +#, fuzzy, c-format +#| msgid "激活定值修改成功! RtuNo:%d" +msgid "激活定值组返回成功! RtuNo:%d" +msgstr "Active the const modification success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:587 protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:588 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:550 protocol/iec61850client2/IEC61850cDataProcThread.cpp:551 +#, fuzzy, c-format +#| msgid "激活定值修改失败!RtuNo:%d" +msgid "激活定值组返回失败! RtuNo:%d" +msgstr "Active the const modification failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:666 protocol/iec61850client2/IEC61850cDataProcThread.cpp:629 +#, fuzzy, c-format +#| msgid "KBD104 定值读取成功!RtuNo:%d" +msgid "参数读取部分成功!RtuNo:%d" +msgstr "KBD104 Read const success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:672 protocol/iec61850client2/IEC61850cDataProcThread.cpp:635 +#, fuzzy, c-format +#| msgid "KBD104 定值读取失败!RtuNo:%d" +msgid "参数读取失败!RtuNo:%d" +msgstr "KBD104 Read const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:679 protocol/iec61850client2/IEC61850cDataProcThread.cpp:642 +#, fuzzy, c-format +#| msgid "KBD104 定值读取成功!RtuNo:%d" +msgid "参数读取成功!RtuNo:%d" +msgstr "KBD104 Read const success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:753 protocol/iec61850client2/IEC61850cDataProcThread.cpp:716 +#, fuzzy, c-format +#| msgid "KBD104 定值修改成功!RtuNo:%d" +msgid "参数修改部分成功!RtuNo:%d " +msgstr "KBD104 Modify const success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:759 protocol/iec61850client2/IEC61850cDataProcThread.cpp:722 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "参数修改失败!RtuNo:%d " +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:766 protocol/iec61850client2/IEC61850cDataProcThread.cpp:729 +#, fuzzy, c-format +#| msgid "KBD104 定值修改成功!RtuNo:%d" +msgid "参数修改成功!RtuNo:%d" +msgstr "KBD104 Modify const success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:995 protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:756 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:962 protocol/kbd61850m/KBD61850mDataProcThread.cpp:2749 +msgid "通信没有建立遥控失败" +msgstr "Communication not established,remote control failed" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:996 protocol/iec61850client2/IEC61850cDataProcThread.cpp:963 +#, fuzzy, c-format +#| msgid "通信没有建立遥控失败" +msgid "通信没有建立遥控失败 RtuNo:%d" +msgstr "Communication not established,remote control failed" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1008 protocol/cdt/CdtDataProcThread.cpp:289 +#: protocol/iec103/IEC103DataProcThread.cpp:948 protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:766 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:975 protocol/kbd511s_io/kbd511s_ioRtuDataProcThread.cpp:289 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2733 protocol/kc726s_io/kc726s_ioRtuDataProcThread.cpp:278 +#: protocol/khbas/KhbasDataProcThread.cpp:540 protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:350 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:3729 protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:357 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:361 protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:398 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:480 protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:1640 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:548 protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:595 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:544 protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:662 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:450 protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:574 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:483 protocol/opcclient/OpcClientDataProcThread.cpp:1296 +#: protocol/r80x_io/r80x_ioRtuDataProcThread.cpp:449 protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1029 +#: protocol/snmp/snmpDataProcThread.cpp:488 protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:1285 +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:124 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控失败!RtuNo:%d 遥控点:%d 闭锁" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1037 protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:840 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1004 +#, fuzzy +#| msgid "下发YK 选择命令成功 %s 值%d" +msgid "下发遥控选择命令,设备返回成功" +msgstr "Successful in send YK selection command %s value %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1043 protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1049 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:846 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1010 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1016 +#, fuzzy +#| msgid "下发YK 选择命令失败 %s 值%d" +msgid "下发遥控选择命令,设备返回失败" +msgstr "Failed to send YK selection command %s value %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1067 protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:871 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1034 +#, fuzzy +#| msgid "下发YK 执行命令成功 %s 值%d" +msgid "下发遥控执行命令,设备返回成功" +msgstr "Successful in send YK execution command %s value %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1068 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1035 +#, fuzzy, c-format +#| msgid "设备返回撤销成功!RtuNo:%d 遥控点:%d" +msgid "下发遥控执行命令,设备返回成功 RtuNo:%d 遥控点:%d 值:%d" +msgstr "Device return revocation success! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1073 protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:877 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1040 +#, fuzzy +#| msgid "下发YK 执行命令失败 %s 值%d" +msgid "下发遥控执行命令,设备返回失败" +msgstr "Failed to send YK execution command %s value %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1074 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1041 +#, c-format +msgid "下发遥控执行命令,设备返回失败 RtuNo:%d 遥控点:%d 值:%d 返回状态:%d" +msgstr "Issued remote control execution command, device returned failure RtuNo: %d Control Point: %d Value: %d Return Status: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1079 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1046 +#, fuzzy +#| msgid "下发YK 执行命令失败 %s 值%d" +msgid "下发遥控执行命令失败" +msgstr "Failed to send YK execution command %s value %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1080 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1047 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "下发遥控执行命令失败 RtuNo:%d 遥控点:%d 值:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1098 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1065 +msgid "下发遥控放弃命令,设备返回成功" +msgstr "Issued remote control abandonment command, device returned successfully" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1099 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1066 +#, fuzzy, c-format +#| msgid "设备返回撤销成功!RtuNo:%d 遥控点:%d" +msgid "下发遥控放弃命令,设备返回成功 RtuNo:%d 遥控点:%d 值:%d" +msgstr "Device return revocation success! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1104 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1071 +msgid "下发遥控放弃命令,设备返回失败" +msgstr "Issued remote control abandonment command, device returned failure" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1105 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1072 +#, c-format +msgid "下发遥控放弃命令,设备返回失败 RtuNo:%d 遥控点:%d 值:%d 返回状态:%d" +msgstr "Issued remote control abandonment command, device returned failure with RtuNo: %d, Control Point: %d, Value: %d, Return Status: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1111 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1078 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "下发遥控放弃命令失败 RtuNo:%d 遥控点:%d 值:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1121 protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:915 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1088 +msgid "遥控命令类型错误!" +msgstr "Incorrect remote control command type!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1122 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1089 +#, c-format +msgid "遥控命令类型错误,RtuNo:%d,遥控点:%d 命令类型:%d" +msgstr "Error: Incorrect remote control command type, RtuNo: %d, Control Point: %d, Command Type: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1134 protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:776 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1101 protocol/kbd61850m/KBD61850mDataProcThread.cpp:2834 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2979 +msgid "找不到遥控点遥控失败!" +msgstr "Cannot find remote control point,remote control failed!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1135 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1102 +#, fuzzy, c-format +#| msgid "找不到遥控点遥控失败,RTU:%d,YK:%d cmd:%d" +msgid "找不到遥控点遥控失败,RtuNo:%d,遥控点:%d 命令类型:%d" +msgstr "Cannot find remote control point,remote control failed,RTU:%d,YK:%d cmd:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1183 protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:966 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1142 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1150 +#, fuzzy +#| msgid "通信没有建立遥控失败" +msgid "通信没有建立遥调失败" +msgstr "Communication not established,remote control failed" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1184 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1151 +#, fuzzy, c-format +#| msgid "通信没有建立遥控失败" +msgid "通信没有建立遥调失败 RtuNo:%d" +msgstr "Communication not established,remote control failed" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1206 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1173 +#: protocol/khbas/KhbasDataProcThread.cpp:703 protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:641 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:3839 protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:826 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:612 protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:649 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:954 protocol/modbus_tcp/ModbusDataProcThread.cpp:749 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:796 protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:745 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:862 protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:650 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:779 protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:645 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1437 protocol/snmp/snmpDataProcThread.cpp:633 +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:207 +#, c-format +msgid "遥调失败!RtuNo:%d 遥调点:%d 量程越限" +msgstr "Remote adjustment failed! RtuNo:%d Remote adjustment point:%d out of limit" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1212 protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1000 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1176 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1179 +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:213 +#, fuzzy +#| msgid "遥调失败,量程配置错误,最大量程<=最小量程!" +msgid "遥调失败!量程配置错误,最大量程<=最小量程!" +msgstr "Remote adjustment failed! Range configuration error, maximum range <= minimum range!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1218 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1185 +#: protocol/khbas/KhbasDataProcThread.cpp:716 protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:654 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:3852 protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:839 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:625 protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:662 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:967 protocol/modbus_tcp/ModbusDataProcThread.cpp:762 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:809 protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:758 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:875 protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:663 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:792 protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:658 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1450 protocol/snmp/snmpDataProcThread.cpp:646 +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:219 +#, c-format +msgid "遥调失败!RtuNo:%d 遥调点:%d 系数为0" +msgstr "Remote adjustment failed! RtuNo:%d Remote adjustment point:%d Coefficient is 0" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1226 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1193 +#, fuzzy, c-format +#| msgid "遥调失败!RtuNo:%d 遥调点:%d" +msgid "遥调失败,点系数为0或者量程越限!RtuNo:%d 遥调点:%d" +msgstr "Remote adjustment failed! RtuNo:%d Remote adjustment point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1238 protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1239 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1205 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1206 +#, fuzzy, c-format +#| msgid "遥调失败!RtuNo:%d 找不到遥调点:%d" +msgid "遥调失败!RtuNo:%d 找不到遥调点路径:%d" +msgstr "Remote adjustment failed! RtuNo:%d cannot find remote adjustment point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1269 protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1086 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1262 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1236 +msgid "下发遥调命令,设备返回成功" +msgstr "Issued remote adjustment command, device returned successfully" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1270 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1237 +#, c-format +msgid "下发遥调命令,设备返回成功 RtuNo:%d 遥调点:%d 下发值:%.2f 接收命令值:%.2f" +msgstr "" +"Issued remote adjustment command, device returned successfully, RtuNo: %d, Adjustment Point: %d, Sent Value: %.2f, Received Command Value: %.2f" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1275 protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1282 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1093 protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1269 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1242 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1249 +msgid "下发遥调命令,设备返回失败" +msgstr "Issued remote adjustment command, device returned failure" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1276 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1243 +#, c-format +msgid "下发遥调命令,设备返回失败 RtuNo:%d 遥调点:%d 下发值:%.2f 接收命令值:%.2f 返回状态:%d" +msgstr "Issue remote adjustment command failed, RtuNo: %d, Adjustment Point: %d, Sent Value: %.2f, Received Command Value: %.2f, Return Status: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1283 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1250 +#, c-format +msgid "下发遥调命令,设备返回失败 RtuNo:%d 遥调点:%d 下发值:%f 接收命令值:%f" +msgstr "Issued remote adjustment command failed, RtuNo: %d, Adjustment Point: %d, Sent Value: %f, Received Command Value: %f" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1298 protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:986 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1161 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1265 +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:249 +msgid "遥调控制命令错误!" +msgstr "Remote adjustment control command error!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1300 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1267 +#, c-format +msgid "遥调控制命令错误! RtuNo:%d 遥调点:%d CtrlActType=%d " +msgstr "Remote adjustment control command error! RtuNo: %d, Adjustment Point: %d, CtrlActType: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1311 protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:977 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1152 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1278 +#, fuzzy +#| msgid "遥调失败!RtuNo:%d 找不到遥调点:%d" +msgid "遥调失败!找不到遥调点" +msgstr "Remote adjustment failed! RtuNo:%d cannot find remote adjustment point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1312 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1279 +#: protocol/khbas/KhbasDataProcThread.cpp:821 protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:741 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:3939 protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:926 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:712 protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:749 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:1139 protocol/modbus_tcp/ModbusDataProcThread.cpp:881 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:928 protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:877 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:960 protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:748 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:965 protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:743 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1531 protocol/snmp/snmpDataProcThread.cpp:731 +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:260 +#, c-format +msgid "遥调失败!RtuNo:%d 找不到遥调点:%d" +msgstr "Remote adjustment failed! RtuNo:%d cannot find remote adjustment point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1339 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1306 +msgid "遥控选择超时!" +msgstr "Remote control selection timed out!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1340 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1307 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控选择超时,RtuNo:%d,遥控点:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1343 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1310 +msgid "遥控放弃超时!" +msgstr "Remote control abandonment timed out!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1344 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1311 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控放弃超时,RtuNo:%d,遥控点:%d" +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1347 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1314 +msgid "遥控执行超时!" +msgstr "Remote control execution timed out!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1348 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1315 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控执行超时,RtuNo:%d,遥控点:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1365 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1332 +msgid "遥调执行超时!" +msgstr "Remote control execution timeout!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1373 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1340 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "定值切换返回超时!RtuNo:%d" +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1376 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1343 +#, fuzzy, c-format +#| msgid "KBD104 定值读取失败!RtuNo:%d" +msgid "定值读取返回超时!RtuNo:%d " +msgstr "KBD104 Read const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1379 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1346 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "定值修改返回超时!RtuNo:%d " +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1382 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1349 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "定值确认修改返回超时!RtuNo:%d " +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1385 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1352 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "定值操作未知错误!RtuNo:%d " +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1456 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1423 +msgid "通信中断,定值控制失败!" +msgstr "Communication interrupted, setpoint control failed!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1461 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1428 +msgid "通信中断,定值控制失败!" +msgstr "Communication interrupted, setpoint control failed!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1471 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1438 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3231 +#, c-format +msgid "控制参数不正确,定值控制失败!RtuNo:%d " +msgstr "Incorrect control parameters,const control failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1474 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1441 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3234 +#, c-format +msgid "控制参数不正确,定值控制失败!RtuNo:%d" +msgstr "Incorrect control parameters,const control failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1610 protocol/iec103/IEC103DataProcThread.cpp:1563 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1577 protocol/kbd104/KBD104DataProcThread.cpp:3359 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3385 protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:822 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:3978 protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:1007 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:793 protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:830 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:1219 protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:1787 +#: protocol/snmp/snmpDataProcThread.cpp:811 +#, c-format +msgid "HMI命令解析失败,不下发控制命令!RtuNo:%d " +msgstr "Failed to parse HMI command,no send control command down! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1611 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1578 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3386 +#, c-format +msgid "HMI命令解析失败,不下发控制命令!RtuNo:%d" +msgstr "Failed to parse HMI command,no send control command down! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1622 protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1623 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1589 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1590 +#, c-format +msgid "下发定值切换成功!RtuNo:%d 定值组号:%d" +msgstr "Setpoint switch successful! RTU No: %d Setpoint group number: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1628 protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1629 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1595 protocol/iec61850client2/IEC61850cDataProcThread.cpp:1596 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "下发定值切换失败!RtuNo:%d 定值组号:%d" +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/cdt/CdtDataProcThread.cpp:390 protocol/kbd104/KBD104DataProcThread.cpp:2487 protocol/kbd511s_io/kbd511s_ioRtuDataProcThread.cpp:349 +#: protocol/kbd511s_io/kbd511s_ioRtuDataProcThread.cpp:546 protocol/kc726s_io/kc726s_ioRtuDataProcThread.cpp:338 +#: protocol/kc726s_io/kc726s_ioRtuDataProcThread.cpp:535 protocol/khbas/KhbasDataProcThread.cpp:610 protocol/khbas/KhbasDataProcThread.cpp:2413 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:547 protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:1747 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:6216 protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:732 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:2609 protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:518 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3226 protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:555 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3277 protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:860 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:3842 protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3747 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:655 protocol/modbus_tcp/ModbusDataProcThread.cpp:2350 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:702 protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2448 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:651 protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2397 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:769 protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2778 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:557 protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2616 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:681 protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2510 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1463 protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:552 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2223 protocol/opcclient/OpcClientDataProcThread.cpp:1347 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1730 protocol/r80x_io/r80x_ioRtuDataProcThread.cpp:515 +#: protocol/r80x_io/r80x_ioRtuDataProcThread.cpp:800 protocol/snmp/snmpDataProcThread.cpp:543 protocol/snmp/snmpDataProcThread.cpp:1082 +#, c-format +msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:439 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控撤销!RtuNo:%d 遥控点:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:456 protocol/cdt/CdtDataProcThread.cpp:681 protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:1705 +#: protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:1863 protocol/gf104/GF104DataProcThread.cpp:3993 +#: protocol/gf104/GF104DataProcThread.cpp:4251 protocol/iec103/IEC103DataProcThread.cpp:3169 protocol/iec103/IEC103DataProcThread.cpp:3288 +#: protocol/iec104/IEC104DataProcThread.cpp:4011 protocol/iec104/IEC104DataProcThread.cpp:4269 protocol/iec104V2/IEC104V2DataProcThread.cpp:3876 +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:4134 protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:253 +#: protocol/kbd104/KBD104DataProcThread.cpp:2494 protocol/kbd104/KBD104DataProcThread.cpp:3954 +#: protocol/kbd511s_io/kbd511s_ioRtuDataProcThread.cpp:366 protocol/kbd511s_io/kbd511s_ioRtuDataProcThread.cpp:552 +#: protocol/kc726s_io/kc726s_ioRtuDataProcThread.cpp:355 protocol/kc726s_io/kc726s_ioRtuDataProcThread.cpp:541 +#: protocol/khbas/KhbasDataProcThread.cpp:627 protocol/khbas/KhbasDataProcThread.cpp:2419 protocol/khbas/KhbasDataProcThread.cpp:2609 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:564 protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:1753 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:6222 protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:749 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:2615 protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:535 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3232 protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3889 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:572 protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3283 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3911 protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:877 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:3851 protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:4479 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3752 protocol/modbus_tcp/ModbusDataProcThread.cpp:672 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2356 protocol/modbus_tcp/ModbusDataProcThread.cpp:2521 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:719 protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2454 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2619 protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:668 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2403 protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2568 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:786 protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2784 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2949 protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:574 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2622 protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2787 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:698 protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2516 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2683 protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1469 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1634 protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:1208 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:569 protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2229 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2394 protocol/opcclient/OpcClientDataProcThread.cpp:1364 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1736 protocol/r80x_io/r80x_ioRtuDataProcThread.cpp:532 +#: protocol/r80x_io/r80x_ioRtuDataProcThread.cpp:806 protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1126 +#: protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1317 protocol/snmp/snmpDataProcThread.cpp:560 protocol/snmp/snmpDataProcThread.cpp:1088 +#: protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:770 +#, c-format +msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:475 protocol/kbd511s_io/kbd511s_ioRtuDataProcThread.cpp:385 +#: protocol/kc726s_io/kc726s_ioRtuDataProcThread.cpp:374 protocol/khbas/KhbasDataProcThread.cpp:646 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:583 protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:3781 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:768 protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:554 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:591 protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:896 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:1744 protocol/modbus_tcp/ModbusDataProcThread.cpp:691 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:738 protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:687 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:805 protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:593 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:717 protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:588 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1383 protocol/r80x_io/r80x_ioRtuDataProcThread.cpp:551 protocol/snmp/snmpDataProcThread.cpp:579 +#, c-format +msgid "遥控失败!RtuNo:%d 找不到遥控点:%d" +msgstr "Remote control failed! RtuNo:%d cannot find remote control point:%d" + +#: protocol/cdt/CdtDataProcThread.cpp:661 protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:1713 +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:153 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控选择成功!RtuNo:%d 遥控点:%d" +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:666 protocol/virtualrtu/virtualrtuDataProcThread.cpp:161 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控执行成功!RtuNo:%d 遥控点:%d" +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:671 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控取消成功!RtuNo:%d 遥控点:%d" +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:710 protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:1738 +#: protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:1776 protocol/gf104/GF104DataProcThread.cpp:4025 +#: protocol/iec103/IEC103DataProcThread.cpp:3203 protocol/iec104/IEC104DataProcThread.cpp:4043 protocol/iec104V2/IEC104V2DataProcThread.cpp:3908 +#: protocol/khbas/KhbasDataProcThread.cpp:2448 protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:1782 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:6251 protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:2644 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3261 protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3312 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:3880 protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3779 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2385 protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2483 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2432 protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2813 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2651 protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2545 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1498 protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2258 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1765 protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1159 +#: protocol/snmp/snmpDataProcThread.cpp:1117 +#, c-format +msgid "遥调成功!RtuNo:%d 遥调点:%d" +msgstr "Remote adjustment success! RtuNo:%d Remote adjustment point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:716 protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:1745 +#: protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:1783 protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:1888 +#: protocol/gf104/GF104DataProcThread.cpp:4032 protocol/gf104/GF104DataProcThread.cpp:4270 protocol/iec103/IEC103DataProcThread.cpp:3210 +#: protocol/iec103/IEC103DataProcThread.cpp:3307 protocol/iec104/IEC104DataProcThread.cpp:4050 protocol/iec104/IEC104DataProcThread.cpp:4288 +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3915 protocol/iec104V2/IEC104V2DataProcThread.cpp:4153 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:277 protocol/kbd104/KBD104DataProcThread.cpp:3982 +#: protocol/khbas/KhbasDataProcThread.cpp:801 protocol/khbas/KhbasDataProcThread.cpp:2454 protocol/khbas/KhbasDataProcThread.cpp:2629 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:721 protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:1788 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:3919 protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:6257 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:906 protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:2650 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:692 protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3267 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3909 protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:729 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3318 protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3931 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:1119 protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:3890 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:4499 protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3784 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:861 protocol/modbus_tcp/ModbusDataProcThread.cpp:2391 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2541 protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:908 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2489 protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2639 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:857 protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2438 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2588 protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:940 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2819 protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2969 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:728 protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2657 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2807 protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:945 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2553 protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2703 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1504 protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1654 +#: protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:1227 protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:723 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2264 protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2414 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1511 protocol/opcclient/OpcClientDataProcThread.cpp:1771 +#: protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1166 protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1336 +#: protocol/snmp/snmpDataProcThread.cpp:711 protocol/snmp/snmpDataProcThread.cpp:1123 +#, c-format +msgid "遥调失败!RtuNo:%d 遥调点:%d" +msgstr "Remote adjustment failed! RtuNo:%d Remote adjustment point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:743 protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:1915 protocol/gf104/GF104DataProcThread.cpp:4306 +#: protocol/iec103/IEC103DataProcThread.cpp:3345 protocol/iec104/IEC104DataProcThread.cpp:4324 protocol/iec104V2/IEC104V2DataProcThread.cpp:4189 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:319 protocol/kbd104/KBD104DataProcThread.cpp:4010 +#: protocol/khbas/KhbasDataProcThread.cpp:955 protocol/khbas/KhbasDataProcThread.cpp:2481 protocol/khbas/KhbasDataProcThread.cpp:2665 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:1815 protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:6284 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:2677 protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3294 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3945 protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3345 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3967 protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:3917 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:4535 protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3811 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:995 protocol/modbus_tcp/ModbusDataProcThread.cpp:2418 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2577 protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:1042 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2516 protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2675 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:991 protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2465 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2624 protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:1074 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2846 protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:3005 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:862 protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2684 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2843 protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:1079 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2580 protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2739 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1531 protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1690 +#: protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:1262 protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:857 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2291 protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2450 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1646 protocol/opcclient/OpcClientDataProcThread.cpp:1798 +#: protocol/snmp/snmpDataProcThread.cpp:1150 +#, c-format +msgid "混合量输出成功!RtuNo:%d 混合量输出点:%d" +msgstr "The output of mix is successful! RtuNo:%d Mix output point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:749 protocol/khbas/KhbasDataProcThread.cpp:2487 protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:1821 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:6290 protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:2683 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3300 protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3351 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:3923 protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3816 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2424 protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2522 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2471 protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2852 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2690 protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2586 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1537 protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2297 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1804 protocol/snmp/snmpDataProcThread.cpp:1156 +#, c-format +msgid "混合量输出失败!RtuNo:%d 混合量输出点:%d" +msgstr "The output of mix is failed! RtuNo:%d Mix output point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:776 protocol/khbas/KhbasDataProcThread.cpp:2522 protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:1848 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:6317 protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:2710 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3327 protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3378 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:3950 protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3843 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2451 protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2549 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2498 protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2879 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2717 protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2613 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1564 protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:1127 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2324 protocol/opcclient/OpcClientDataProcThread.cpp:1831 +#: protocol/snmp/snmpDataProcThread.cpp:1183 +#, c-format +msgid "自定义命令输出成功!RtuNo:%d " +msgstr "The custom command output was successful! RtuNo:%d" + +#: protocol/cdt/CdtDataProcThread.cpp:782 protocol/khbas/KhbasDataProcThread.cpp:2544 protocol/khbas/KhbasDataProcThread.cpp:2687 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:1854 protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:6323 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:2716 protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3333 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3967 protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3384 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3989 protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:3956 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:4557 protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3848 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2457 protocol/modbus_tcp/ModbusDataProcThread.cpp:2599 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2555 protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2697 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2504 protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2646 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2885 protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:3027 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2723 protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2865 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2619 protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2761 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:520 protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:553 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:601 protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:761 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:801 protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:850 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1570 protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1712 +#: protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:566 protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:651 +#: protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:757 protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:1141 +#: protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:1283 protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2330 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2472 protocol/opcclient/OpcClientDataProcThread.cpp:1837 +#: protocol/snmp/snmpDataProcThread.cpp:1189 +#, c-format +msgid "自定义命令输出失败!RtuNo:%d " +msgstr "The custom command output was failed! RtuNo:%d" + +#: protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:621 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 通信中断" +msgid "CenterDataRecv 遥控失败!RtuNo:%d 通信中断" +msgstr "IEC104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:639 +#, c-format +msgid "CenterDataRecv 遥控失败! RtuNo:%d DO:%d 闭锁!" +msgstr "CenterDataRecv remote control failed! RTU No: %d DO: %d Locked!" + +#: protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:688 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 找不到遥控点:%d" +msgid "CenterDataRecv 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgstr "Remote control failed! RtuNo:%d cannot find remote control point:%d" + +#: protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:736 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 通信中断" +msgid "CenterDataRecv 模拟量控制失败!RtuNo:%d 通信中断" +msgstr "IEC104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:773 +#, fuzzy, c-format +#| msgid "IEC104 遥调失败!RtuNo:%d 遥调点:%d 范围超出" +msgid "CenterDataRecv 模拟量控制失败!RtuNo:%d 控制点:%d 范围超出" +msgstr "IEC104 Remote adjustment failed! RtuNo:%d Remote adjustment point: %d out of range" + +#: protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:823 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 找不到遥控点:%d" +msgid "CenterDataRecv 模拟量控制失败!RtuNo:%d 找不到控制点" +msgstr "Remote control failed! RtuNo:%d cannot find remote control point:%d" + +#: protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:873 +#, fuzzy, c-format +#| msgid "KBD61850 定值控制失败!RtuNo:%d 通信中断" +msgid "CenterDataRecv 混合量控制失败!RtuNo:%d 通信中断" +msgstr "KBD61850 Const control failed! RtuNo:%d communication interrupt" + +#: protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:909 +#, fuzzy, c-format +#| msgid "IEC104 遥调失败!RtuNo:%d 遥调点:%d 范围超出" +msgid "CenterDataRecv 混合量控制失败!RtuNo:%d 控制点:%d 范围超出" +msgstr "IEC104 Remote adjustment failed! RtuNo:%d Remote adjustment point: %d out of range" + +#: protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:959 +#, fuzzy, c-format +#| msgid "混合量输出失败!RtuNo:%d 找不到混合量输出点:%d" +msgid "CenterDataRecv 混合量控制失败!RtuNo:%d 找不到控制点" +msgstr "The output of mix is failed! RtuNo:%d cannot find mix output point: %d" + +#: protocol/centerdatarecv/CenterDataRecvDataProcThread.cpp:1698 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "CenterDataRecv 遥控成功!RtuNo:%d 遥控点:%d" +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/gf104/GF104DataProcThread.cpp:3417 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 通信中断" +msgid "GF104 遥控失败!RtuNo:%d 通信中断" +msgstr "IEC104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/gf104/GF104DataProcThread.cpp:3435 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 通信中断" +msgid "GF104 遥控失败! RtuNo:%d DO:%d 闭锁!" +msgstr "IEC104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/gf104/GF104DataProcThread.cpp:3536 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgid "GF104 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgstr "IEC104 Remote control failed! RtuNo:%d cannot find remote control point: %d" + +#: protocol/gf104/GF104DataProcThread.cpp:3587 protocol/gf104/GF104DataProcThread.cpp:3799 +#, fuzzy, c-format +#| msgid "IEC104 遥调失败!RtuNo:%d 通信中断" +msgid "GF104 遥调失败!RtuNo:%d 通信中断" +msgstr "IEC104 Remote adjustment failed! RtuNo:%d communication interrupt" + +#: protocol/gf104/GF104DataProcThread.cpp:3622 protocol/gf104/GF104DataProcThread.cpp:3858 +#, fuzzy, c-format +#| msgid "IEC104 遥调失败!RtuNo:%d 遥调点:%d 范围超出" +msgid "GF104 遥调失败!RtuNo:%d 遥调点:%d 范围超出" +msgstr "IEC104 Remote adjustment failed! RtuNo:%d Remote adjustment point: %d out of range" + +#: protocol/gf104/GF104DataProcThread.cpp:3739 protocol/gf104/GF104DataProcThread.cpp:3940 +#, fuzzy, c-format +#| msgid "IEC104 遥调失败!RtuNo:%d 找不到遥调点:%d" +msgid "GF104 遥调失败!RtuNo:%d 找不到遥调点:%d" +msgstr "IEC104 Remote adjustment failed! RtuNo:%d cannot find remote adjustment point: %d" + +#: protocol/gf104/GF104DataProcThread.cpp:3893 +#, fuzzy, c-format +#| msgid "IEC104 遥调成功!RtuNo:%d value=%f" +msgid "GF104 遥调成功!RtuNo:%d value=%f" +msgstr "IEC104 Remote adjustment success! RtuNo:%d value=%f" + +#: protocol/gf104/GF104DataProcThread.cpp:3900 +#, fuzzy, c-format +#| msgid "IEC104 遥调成功!RtuNo:%d value=%d" +msgid "GF104 遥调成功!RtuNo:%d value=%d" +msgstr "IEC104 Remote adjustment success! RtuNo:%d value=%d" + +#: protocol/gf104/GF104DataProcThread.cpp:3986 +#, fuzzy, c-format +#| msgid "IEC104 遥控成功!RtuNo:%d 遥控点:%d" +msgid "GF104 遥控成功!RtuNo:%d 遥控点:%d" +msgstr "IEC104 Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/iec103/IEC103DataProcThread.cpp:1002 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控选择成功!RtuNo:%d 遥控点:%d " +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/iec103/IEC103DataProcThread.cpp:1008 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控放弃成功!RtuNo:%d 遥控点:%d " +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/iec103/IEC103DataProcThread.cpp:1024 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgid "IEC103 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgstr "IEC104 Remote control failed! RtuNo:%d cannot find remote control point: %d" + +#: protocol/iec103/IEC103DataProcThread.cpp:1082 +#, fuzzy, c-format +#| msgid "KBD61850 定值控制失败!RtuNo:%d 找不到对应的DS" +msgid "IEC103 读定值失败!RtuNo:%d 找不到定值点" +msgstr "KBD61850 Const control failed! RtuNo:%d cannot find the corresponding DS" + +#: protocol/iec103/IEC103DataProcThread.cpp:1156 +#, fuzzy, c-format +#| msgid "KBD104 定值修改成功!RtuNo:%d" +msgid "IEC103 定值修改下装成功!RtuNo:%d" +msgstr "KBD104 Modify const success! RtuNo:%d" + +#: protocol/iec103/IEC103DataProcThread.cpp:1216 +#, c-format +msgid "IEC103 部分定值点没有,读定值确认发送失败!RtuNo:%d 找不到点PointNo:%d" +msgstr "IEC103 partial setpoint does not exist, failed to send read setpoint confirmation! RTU No: %d cannot find point PointNo: %d" + +#: protocol/iec103/IEC103DataProcThread.cpp:1278 +#, c-format +msgid "IEC103 定值组没有,修改定值组发送失败!RtuNo:%d 找不到点" +msgstr "IEC103 setpoint group does not exist, failed to send modification of setpoint group! RTU No: %d cannot find the point" + +#: protocol/iec103/IEC103DataProcThread.cpp:2480 +#, fuzzy, c-format +#| msgid "KBD104 定值读取成功!RtuNo:%d" +msgid "iec103 定值读取成功!RtuNo:%d" +msgstr "KBD104 Read const success! RtuNo:%d" + +#: protocol/iec103/IEC103DataProcThread.cpp:2499 +#, c-format +msgid "iec103 没有找到读取定值的点号!RtuNo:%d" +msgstr "IEC103 could not find the point number for reading setpoint! RTU No: %d" + +#: protocol/iec103/IEC103DataProcThread.cpp:2561 +#, fuzzy, c-format +#| msgid "KBD104 定值修改成功!RtuNo:%d" +msgid "IEC103 定值修改确认成功!RtuNo:%d" +msgstr "KBD104 Modify const success! RtuNo:%d" + +#: protocol/iec103/IEC103DataProcThread.cpp:2597 +#, fuzzy, c-format +#| msgid "KBD104 定值修改失败!RtuNo:%d" +msgid "IEC103 定值修改确认失败!RtuNo:%d" +msgstr "KBD104 Modify const failed! RtuNo:%d" + +#: protocol/iec103/IEC103DataProcThread.cpp:2654 +#, fuzzy, c-format +#| msgid "KBD104 定值修改成功!RtuNo:%d" +msgid "IEC103 定值组修改成功!RtuNo:%d" +msgstr "KBD104 Modify const success! RtuNo:%d" + +#: protocol/iec103/IEC103DataProcThread.cpp:2687 +#, fuzzy, c-format +#| msgid "KBD104 定值修改失败!RtuNo:%d" +msgid "IEC103 定值组修改失败!RtuNo:%d" +msgstr "KBD104 Modify const failed! RtuNo:%d" + +#: protocol/iec103/IEC103DataProcThread.cpp:3162 +#, fuzzy, c-format +#| msgid "IEC104 遥控成功!RtuNo:%d 遥控点:%d" +msgid "IEC103 遥控成功!RtuNo:%d 遥控点:%d" +msgstr "IEC104 Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/iec104/IEC104DataProcThread.cpp:3435 +#, c-format +msgid "IEC104 遥控失败!RtuNo:%d 通信中断" +msgstr "IEC104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/iec104/IEC104DataProcThread.cpp:3453 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 通信中断" +msgid "IEC104 遥控失败! RtuNo:%d DO:%d 闭锁!" +msgstr "IEC104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/iec104/IEC104DataProcThread.cpp:3554 +#, c-format +msgid "IEC104 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgstr "IEC104 Remote control failed! RtuNo:%d cannot find remote control point: %d" + +#: protocol/iec104/IEC104DataProcThread.cpp:3605 protocol/iec104/IEC104DataProcThread.cpp:3817 +#, c-format +msgid "IEC104 遥调失败!RtuNo:%d 通信中断" +msgstr "IEC104 Remote adjustment failed! RtuNo:%d communication interrupt" + +#: protocol/iec104/IEC104DataProcThread.cpp:3640 protocol/iec104/IEC104DataProcThread.cpp:3876 +#, c-format +msgid "IEC104 遥调失败!RtuNo:%d 遥调点:%d 范围超出" +msgstr "IEC104 Remote adjustment failed! RtuNo:%d Remote adjustment point: %d out of range" + +#: protocol/iec104/IEC104DataProcThread.cpp:3757 protocol/iec104/IEC104DataProcThread.cpp:3958 +#, c-format +msgid "IEC104 遥调失败!RtuNo:%d 找不到遥调点:%d" +msgstr "IEC104 Remote adjustment failed! RtuNo:%d cannot find remote adjustment point: %d" + +#: protocol/iec104/IEC104DataProcThread.cpp:3911 +#, c-format +msgid "IEC104 遥调成功!RtuNo:%d value=%f" +msgstr "IEC104 Remote adjustment success! RtuNo:%d value=%f" + +#: protocol/iec104/IEC104DataProcThread.cpp:3918 +#, c-format +msgid "IEC104 遥调成功!RtuNo:%d value=%d" +msgstr "IEC104 Remote adjustment success! RtuNo:%d value=%d" + +#: protocol/iec104/IEC104DataProcThread.cpp:4004 +#, c-format +msgid "IEC104 遥控成功!RtuNo:%d 遥控点:%d" +msgstr "IEC104 Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3297 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 通信中断" +msgid "IEC104V2 遥控失败!RtuNo:%d 通信中断" +msgstr "IEC104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3315 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 通信中断" +msgid "IEC104V2 遥控失败! RtuNo:%d DO:%d 闭锁!" +msgstr "IEC104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3416 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgid "IEC104V2 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgstr "IEC104 Remote control failed! RtuNo:%d cannot find remote control point: %d" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3469 protocol/iec104V2/IEC104V2DataProcThread.cpp:3683 +#, fuzzy, c-format +#| msgid "IEC104 遥调失败!RtuNo:%d 通信中断" +msgid "IEC104V2 遥调失败!RtuNo:%d 通信中断" +msgstr "IEC104 Remote adjustment failed! RtuNo:%d communication interrupt" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3504 protocol/iec104V2/IEC104V2DataProcThread.cpp:3742 +#, fuzzy, c-format +#| msgid "IEC104 遥调失败!RtuNo:%d 遥调点:%d 范围超出" +msgid "IEC104V2 遥调失败!RtuNo:%d 遥调点:%d 范围超出" +msgstr "IEC104 Remote adjustment failed! RtuNo:%d Remote adjustment point: %d out of range" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3621 protocol/iec104V2/IEC104V2DataProcThread.cpp:3824 +#, fuzzy, c-format +#| msgid "IEC104 遥调失败!RtuNo:%d 找不到遥调点:%d" +msgid "IEC104V2 遥调失败!RtuNo:%d 找不到遥调点:%d" +msgstr "IEC104 Remote adjustment failed! RtuNo:%d cannot find remote adjustment point: %d" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3777 +#, fuzzy, c-format +#| msgid "IEC104 遥调成功!RtuNo:%d value=%f" +msgid "IEC104V2 遥调成功!RtuNo:%d value=%f" +msgstr "IEC104 Remote adjustment success! RtuNo:%d value=%f" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3784 +#, fuzzy, c-format +#| msgid "IEC104 遥调成功!RtuNo:%d value=%d" +msgid "IEC104V2 遥调成功!RtuNo:%d value=%d" +msgstr "IEC104 Remote adjustment success! RtuNo:%d value=%d" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3869 +#, fuzzy, c-format +#| msgid "IEC104 遥控成功!RtuNo:%d 遥控点:%d" +msgid "IEC104V2 遥控成功!RtuNo:%d 遥控点:%d" +msgstr "IEC104 Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:787 +#, fuzzy +#| msgid "遥控失败!RtuNo:%d 找不到遥控点:%d" +msgid "遥控失败!找不到遥控点控制参数" +msgstr "Remote control failed! RtuNo:%d cannot find remote control point:%d" + +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:902 +#, fuzzy +#| msgid "下发YK 撤销命令成功 %s 值%d" +msgid "下发遥控撤销命令,设备返回成功" +msgstr "Successful in send YK revocation command %s value %d" + +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:908 +#, fuzzy +#| msgid "下发YK 撤销命令失败 %s 值%d" +msgid "下发遥控撤销命令,设备返回失败" +msgstr "Failed to send YK revocation command %s value %d" + +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:995 protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1171 +#, fuzzy +#| msgid "遥调失败!RtuNo:%d 遥调点:%d 系数为0" +msgid "遥调失败!测点系数为0" +msgstr "Remote adjustment failed! RtuNo:%d Remote adjustment point:%d Coefficient is 0" + +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1017 protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1193 +msgid "遥调失败!设置值超出量程" +msgstr "Remote adjustment failed! The set value is out of range." + +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1028 protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1204 +#, fuzzy +#| msgid "遥调失败!RtuNo:%d 找不到遥调点:%d" +msgid "遥调失败!找不到遥调点控制参数" +msgstr "Remote adjustment failed! RtuNo:%d cannot find remote adjustment point: %d" + +#: protocol/kbd104/KBD104DataProcThread.cpp:2191 +#, c-format +msgid "KBD104 遥控失败!RtuNo:%d 通信中断" +msgstr "KBD104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/kbd104/KBD104DataProcThread.cpp:2211 +#, fuzzy, c-format +#| msgid "KBD104 遥控失败!RtuNo:%d 通信中断" +msgid "KBD104 遥控失败! RtuNo:%d DO:%d 闭锁!" +msgstr "KBD104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/kbd104/KBD104DataProcThread.cpp:2276 +#, c-format +msgid "KBD104 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgstr "KBD104 Remote control failed! RtuNo:%d cannot find remote control point: %d" + +#: protocol/kbd104/KBD104DataProcThread.cpp:2330 +#, c-format +msgid "KBD104 遥调失败!RtuNo:%d 通信中断" +msgstr "KBD104 Remote adjustment failed! RtuNo:%d communication interrupt" + +#: protocol/kbd104/KBD104DataProcThread.cpp:2366 +#, c-format +msgid "KBD104 遥调失败!RtuNo:%d 遥调点:%d 范围超出" +msgstr "KBD104 Remote adjustment failed! RtuNo:%d Remote adjustment point: %d out of range" + +#: protocol/kbd104/KBD104DataProcThread.cpp:2446 +#, c-format +msgid "KBD104 遥调失败!RtuNo:%d 找不到遥调点" +msgstr "KBD104 Remote adjustment failed! RtuNo:%d cannot find remote adjustment point" + +#: protocol/kbd104/KBD104DataProcThread.cpp:2526 +#, c-format +msgid "遥调成功!RtuNo:%d 遥控点:%d" +msgstr "Remote adjustment success! RtuNo:%d Remote control point: %d" + +#: protocol/kbd104/KBD104DataProcThread.cpp:2533 +#, c-format +msgid "遥调失败!RtuNo:%d 遥控点:%d" +msgstr "Remote adjustment failed! RtuNo:%d Remote control point: %d" + +#: protocol/kbd104/KBD104DataProcThread.cpp:3532 protocol/kbd104/KBD104DataProcThread.cpp:3626 protocol/kbd104/KBD104DataProcThread.cpp:3720 +#: protocol/kbd104/KBD104DataProcThread.cpp:3815 protocol/kbd104/KBD104DataProcThread.cpp:3897 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:4149 protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:4154 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:4159 protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:4209 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:4220 protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:4225 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:4230 protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:4474 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:5230 protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:5235 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:5240 protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:5318 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:5323 protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:5328 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:2105 protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:2924 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:2929 protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:2934 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:2994 protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:2999 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3004 +#, c-format +msgid "RtuNo:%d %s" +msgstr "RtuNo:%d %s" + +#: protocol/kbd104/KBD104DataProcThread.cpp:3537 +#, c-format +msgid "KBD104 定值读取失败!RtuNo:%d" +msgstr "KBD104 Read const failed! RtuNo:%d" + +#: protocol/kbd104/KBD104DataProcThread.cpp:3631 +#, c-format +msgid "KBD104 定值读取成功!RtuNo:%d" +msgstr "KBD104 Read const success! RtuNo:%d" + +#: protocol/kbd104/KBD104DataProcThread.cpp:3725 +#, c-format +msgid "KBD104 定值修改失败!RtuNo:%d" +msgstr "KBD104 Modify const failed! RtuNo:%d" + +#: protocol/kbd104/KBD104DataProcThread.cpp:3820 +#, c-format +msgid "KBD104 定值修改成功!RtuNo:%d" +msgstr "KBD104 Modify const success! RtuNo:%d" + +#: protocol/kbd104/KBD104DataProcThread.cpp:3902 +#, c-format +msgid "KBD104 确认修改定值!RtuNo:%d rtuStatus:%d" +msgstr "KBD104 Confirm to modify the const! RtuNo:%d rtuStatus:%d" + +#: protocol/kbd61850m/IEC61850_DecodeResPkt.cpp:1092 +msgid "写值不成功!" +msgstr "Write value failure!" + +#: protocol/kbd61850m/IEC61850_DecodeResPkt.cpp:1135 +msgid "写值成功!" +msgstr "Write value success!" + +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:407 +#, c-format +msgid "建立双边关联失败%s" +msgstr "Failed to establish bilateral connection%s" + +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1541 +#, c-format +msgid "Ping %s...成功\n" +msgstr "Ping %s...successful\n" + +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1551 +#, c-format +msgid "Ping %s失败,下次重试\n" +msgstr "Ping %s failed,try again next time\n" + +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1671 +#, c-format +msgid "connect %s...成功!" +msgstr "connect %s...successful!" + +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1680 protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1694 protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1708 +#, c-format +msgid "connect %s...失败!" +msgstr "connect %s...failed!" + +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1735 protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1775 protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1812 +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1827 +msgid "建立传输层连接失败!" +msgstr "Failed to establish transport layer connection!" + +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1803 +msgid "建立传输层连接成功!" +msgstr "Establish transport layer connection successfully!" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:358 +#, c-format +msgid "收到总召KWH成功 %s" +msgstr "Received total call KWH success %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:380 +#, c-format +msgid "长时间没有召完树,通道:%d 退出" +msgstr "Long time not call tree finish,channel: %d exit" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:393 +#, c-format +msgid "通讯中断[%d%]" +msgstr "Communication Interrupt[%d%]" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:418 +#, c-format +msgid "server个数%d,已连接%d,本通道%s.. %s %s NoUpdateTime=%d" +msgstr "server number %d,connected %d,this channel %s.. %s %s NoUpdateTime=%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:429 +#, c-format +msgid "通道%s 通信中断,断开连接,重新建立连接" +msgstr "Channel %s communication interrupt, disconnect, reconnect" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:450 +#, c-format +msgid "通道%s 接收超时,断开连接,重新建立连接" +msgstr "Channel %s receive timeout, disconnect, reconnect" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:603 protocol/kbd61850m/KBD61850mDataProcThread.cpp:4079 +#, c-format +msgid "报告非使能%s:%s" +msgstr "Report no enable%s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:639 protocol/kbd61850m/KBD61850mDataProcThread.cpp:652 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:4115 +#, c-format +msgid "设置总召时间%s:%ld毫秒,%s" +msgstr "Set total call time%s:%ldms,%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:662 protocol/kbd61850m/KBD61850mDataProcThread.cpp:4126 +#, c-format +msgid "报告使能%s:%s" +msgstr "Report enable%s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:707 protocol/kbd61850m/KBD61850mDataProcThread.cpp:729 +#, c-format +msgid "设置TrgOp%s:%s" +msgstr "Set TrgOp%s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:767 protocol/kbd61850m/KBD61850mDataProcThread.cpp:793 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:818 +#, c-format +msgid "设置OptFlds%s:%s" +msgstr "Set OptFlds%s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:845 protocol/kbd61850m/KBD61850mDataProcThread.cpp:856 +#, c-format +msgid "读取EntryID%s:%s" +msgstr "Read EntryID%s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:864 +#, c-format +msgid "设置EntryID%s:%s" +msgstr "Set EntryID%s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:899 +msgid "PING 套接字错误" +msgstr "PING socket error" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:909 +msgid "连接服务器 开" +msgstr "Connect to server open" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:915 +#, c-format +msgid "连接服务器%s,%s,返回%d" +msgstr "Connect to server %s , %s,return %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:932 +msgid "网络不通,退出服务器" +msgstr "No network, log out of server" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:941 +msgid "网络可能断开" +msgstr "Network may be disconnected" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:960 +msgid "网络不通" +msgstr "No network" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:984 +#, c-format +msgid " 通道%d,ExitServer() ret:%d" +msgstr "Channel %d,ExitServer() ret:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:1551 +#, c-format +msgid "没有找到RTU名 %s" +msgstr "Cannot find RTU name %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:1562 +#, c-format +msgid "通道%d,RTU%d 没有配置数据集合:%s" +msgstr "Channel %d,RTU %d no dataset configure : %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:1597 protocol/kbd61850m/KBD61850mDataProcThread.cpp:4331 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:4615 protocol/kbd61850m/KBD61850mDataProcThread.cpp:4935 +msgid "上传数据路径为空" +msgstr "The upload data path is empty" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2240 +#, c-format +msgid "总召数据集%s:%s" +msgstr "Total call dataset %s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2297 +#, c-format +msgid "录波:命令[读目录]%s[返回%d]" +msgstr "Wave recording:command[Read Directory]%s[Return %d]" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2361 +#, c-format +msgid "录波:状态[目录]%s,文件个数%d" +msgstr "Wave recording:status[Directory]%s,number of file %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2428 +#, c-format +msgid "录波:命令[下载]%d,文件名%s" +msgstr "Wave recording:command[Download]%d,file name %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2449 +#, c-format +msgid "录波:所有的文件已经下载完成。错误个数%d" +msgstr "Wave recording:all files have been downloaded. Error number %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2521 +#, c-format +msgid "录波:状态[下载]%s,文件名%s" +msgstr "Wave recording:status[Download]%s,file name %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2585 +#, c-format +msgid "录波:新增%s" +msgstr "Wave recording:new %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2684 +#, c-format +msgid "通道所有发送后数据后%ds没有收到数据,退出服务器" +msgstr "After send all data in channel,no data received within %ds,log out of server" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2776 protocol/kbd61850m/KBD61850mDataProcThread.cpp:2790 +msgid "选择成功" +msgstr "Selection success" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2781 protocol/kbd61850m/KBD61850mDataProcThread.cpp:2795 +#, c-format +msgid "选择命令成功 %s 值%d" +msgstr "Selection command success %s value %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2809 +#, c-format +msgid "下发YK 选择命令成功 %s 值%d" +msgstr "Successful in send YK selection command %s value %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2813 +#, c-format +msgid "下发YK 选择命令失败 %s 值%d" +msgstr "Failed to send YK selection command %s value %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2835 +#, c-format +msgid "修改定值组号%s 找不到遥控点遥控失败,RTU:%d,YK:%d cmd:%d" +msgstr "Modify the const group number %s ,cannot find remote control point,remote control failed,RTU:%d,YK:%d cmd:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2848 +#, c-format +msgid "修改定值组号%s:%s %s" +msgstr "Modify the const group number %s:%s %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2855 +msgid "修改定值组号失败!...1" +msgstr "Failed to modify the const group number!...1" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2856 +#, c-format +msgid "修改定值组号%s 失败..1,RTU:%d,YK:%d groupno:%d" +msgstr "Failed to modify the const group number %s..1,RTU:%d,YK:%d groupno:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2866 protocol/kbd61850m/KBD61850mDataProcThread.cpp:3420 +#, c-format +msgid "确认激活定值组%s:%s %s" +msgstr "Confirm to active the const group %s:%s %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2874 +msgid "修改定值组号失败!...2" +msgstr "Failed to modify the const group number!...2" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2875 +#, c-format +msgid "修改定值组号%s 失败...2,RTU:%d,YK:%d groupno:%d" +msgstr "Failed to modify the const group number %s...2,RTU:%d,YK:%d groupno:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2887 +msgid "修改定值组号成功!" +msgstr "Modify const group number successfully!" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2888 +#, c-format +msgid "修改定值组号%s 成功...2,RTU:%d,YK:%d groupno:%d" +msgstr "Modify const group number %s successfully...2,RTU:%d,YK:%d groupno:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2909 +#, c-format +msgid "下发YK 执行命令成功 %s 值%d" +msgstr "Successful in send YK execution command %s value %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2913 +#, c-format +msgid "下发YK 执行命令失败 %s 值%d" +msgstr "Failed to send YK execution command %s value %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2924 protocol/kbd61850m/KBD61850mDataProcThread.cpp:2937 +msgid "撤销成功" +msgstr "Revocation success" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2929 protocol/kbd61850m/KBD61850mDataProcThread.cpp:2942 +#, c-format +msgid "撤销成功 %s 值%d" +msgstr "Revocation success %s value %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2955 +#, c-format +msgid "下发YK 撤销命令成功 %s 值%d" +msgstr "Successful in send YK revocation command %s value %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2959 +#, c-format +msgid "下发YK 撤销命令失败 %s 值%d" +msgstr "Failed to send YK revocation command %s value %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2981 +#, c-format +msgid "找不到遥控点遥控失败,RTU:%d,YK:%d cmd:%d" +msgstr "Cannot find remote control point,remote control failed,RTU:%d,YK:%d cmd:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3023 +#, c-format +msgid "遥控返回 retCmd.CtrlDir=%d RtuNo=%d PointID=%d" +msgstr "Return of remote control retCmd.CtrlDir=%d RtuNo=%d PointID=%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3030 +msgid "设备返回撤销成功" +msgstr "Device return revocation success" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3031 +#, c-format +msgid "设备返回撤销成功!RtuNo:%d 遥控点:%d" +msgstr "Device return revocation success! RtuNo:%d Remote control point: %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3036 +msgid "设备返回撤销失败" +msgstr "Device return revocation failed" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3037 +#, c-format +msgid "设备返回撤销失败!RtuNo:%d 遥控点:%d" +msgstr "Device return revocation failed! RtuNo:%d Remote control point: %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3056 +msgid "设备返回执行成功" +msgstr "Device return execution success" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3057 +#, c-format +msgid "设备返回执行成功!RtuNo:%d 遥控点:%d" +msgstr "Device return execution success! RtuNo:%d Remote control point: %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3093 +#, c-format +msgid "RtuNo:%d 遥控点:%d 添加脉冲遥控事件" +msgstr "RTU No: %d Remote control point: %d Added pulse remote control event" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3102 +msgid "设备返回执行失败" +msgstr "Device return execution failed" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3103 +#, c-format +msgid "设备返回执行失败!RtuNo:%d 遥控点:%d" +msgstr "Device return execution failed! RtuNo:%d Remote control point: %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3121 +msgid "设备返回选择成功" +msgstr "Device return selection success" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3122 +#, c-format +msgid "设备返回选择成功!RtuNo:%d 遥控点:%d" +msgstr "Device return selection success! RtuNo:%d Remote control point: %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3127 +msgid "设备返回选择失败" +msgstr "Device return selection failed" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3128 +#, c-format +msgid "设备返回选择失败!RtuNo:%d 遥控点:%d" +msgstr "Device return selection failed! RtuNo:%d Remote control point: %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3190 protocol/kbd61850m/KBD61850mDataProcThread.cpp:3193 +#, c-format +msgid "KBD61850 定值控制失败!RtuNo:%d 找不到对应的DS" +msgstr "KBD61850 Const control failed! RtuNo:%d cannot find the corresponding DS" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3210 protocol/kbd61850m/KBD61850mDataProcThread.cpp:3213 +#, c-format +msgid "KBD61850 定值控制失败!RtuNo:%d 通信中断" +msgstr "KBD61850 Const control failed! RtuNo:%d communication interrupt" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3400 +#, c-format +msgid "修改定值组%s:%s %s" +msgstr "Modify the const %s:%s %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3414 +msgid "修改定值组失败" +msgstr "Modify the const failed" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3435 +msgid "确认激活定值组失败" +msgstr "Confirm to active the const group failed" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3450 +msgid "激活定值组成功" +msgstr "Active the const group successfully" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3579 protocol/kbd61850m/KBD61850mDataProcThread.cpp:3864 +#, c-format +msgid "KBD61850 定值读取成功!RtuNo:%d" +msgstr "KBD61850 Read const success! RtuNo:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3580 +#, c-format +msgid "KBD61850 定值读取成功!RtuNo:%d Num=%d" +msgstr "KBD61850 Read const success! RtuNo:%d Num=%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3589 +#, c-format +msgid "读定值%s:%s" +msgstr "Read const %s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3605 +#, fuzzy, c-format +#| msgid "开始写定值 组号%s:%s %s" +msgid "开始改变定值 组号%s:%s %s" +msgstr "Start writing const,group number %s:%s %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3609 +#, c-format +msgid "开始写定值 组号%s:%s %s" +msgstr "Start writing const,group number %s:%s %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3634 +#, c-format +msgid "定值写值错误:定值%d" +msgstr "Error writing const: const %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3649 +#, c-format +msgid "改变定值%s(%s):%s" +msgstr "Change the const %s(%s):%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3659 +#, c-format +msgid "修改定值%s:%s" +msgstr "Modify the const %s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3696 +#, c-format +msgid "确认改变定值%s:%s" +msgstr "Confirm to change the const %s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3700 +#, c-format +msgid "确认修改定值%s:%s" +msgstr "Confirm to modify the const %s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3776 +msgid "定值操作错误:不能找到定值" +msgstr "Const operation error:cannot find const" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3919 +#, c-format +msgid "定值修改成功! RtuNo:%d" +msgstr "Modify const success! RtuNo:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3925 +#, c-format +msgid "定值修改失败!RtuNo:%d" +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:4179 +#, c-format +msgid "YK 脉冲%s:%s,值%d" +msgstr "YK pulse %s:%s, value %d" + +#: protocol/kbd61850m/KBD_DLL.cpp:47 +#, c-format +msgid "AbortCallback() %s异常中止,退出服务器" +msgstr "AbortCallback() %s abort, log out of sever" + +#: protocol/kbd61850m/KBD_DLL.cpp:64 protocol/kbd61850m/KBD_DLL.cpp:127 protocol/kbd61850m/KBD_DLL.cpp:191 protocol/kbd61850m/KBD_DLL.cpp:226 +#, c-format +msgid "没有找到服务器名 %s" +msgstr "Not found the name of server %s" + +#: protocol/kbd61850m/KBD_DLL.cpp:132 +#, c-format +msgid "通道%d,YK返回:%s,%d,%d,%d,%d,%d" +msgstr "Channel %d, YK return:%s,%d,%d,%d,%d,%d" + +#: protocol/kbd61850m/KBD_DLL.cpp:196 +#, c-format +msgid "通道%d,定值 %s返回:%s" +msgstr "Channel %d, const %s return : %s" + +#: protocol/khbas/KhbasDataProcThread.cpp:709 protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:647 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:3845 protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:832 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:618 protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:655 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:960 protocol/modbus_tcp/ModbusDataProcThread.cpp:755 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:802 protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:751 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:868 protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:656 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:785 protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:651 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1443 protocol/snmp/snmpDataProcThread.cpp:639 +msgid "遥调失败,量程配置错误,最大量程<=最小量程!" +msgstr "Remote adjustment failed! Range configuration error, maximum range <= minimum range!" + +#: protocol/khbas/KhbasDataProcThread.cpp:889 protocol/khbas/KhbasDataProcThread.cpp:974 protocol/modbus_tcp/ModbusDataProcThread.cpp:949 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:1014 protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:996 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:1061 protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:945 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:1010 protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:1028 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:1093 protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:816 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:881 protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:1033 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:1098 protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:811 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:876 protocol/opcclient/OpcClientDataProcThread.cpp:1601 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1665 +#, c-format +msgid "混合量输出失败!RtuNo:%d 找不到混合量输出点:%d" +msgstr "The output of mix is failed! RtuNo:%d cannot find mix output point: %d" + +#: protocol/khbas/KhbasDataProcThread.cpp:1091 +#, fuzzy, c-format +#| msgid "自定义命令输出成功!RtuNo:%d " +msgid "自定义命令个数不正确!RtuNo:%d " +msgstr "The custom command output was successful! RtuNo:%d" + +#: protocol/khbas/KhbasDataProcThread.cpp:1161 +#, fuzzy, c-format +#| msgid "自定义命令输出成功!RtuNo:%d " +msgid "自定义命令格式不正确!RtuNo:%d " +msgstr "The custom command output was successful! RtuNo:%d" + +#: protocol/khbas/KhbasDataProcThread.cpp:2516 protocol/khbas/KhbasDataProcThread.cpp:2746 +#, c-format +msgid "发送时间表成功!RtuNo:%d " +msgstr "Successfully sent the schedule! RTU No: %d" + +#: protocol/khbas/KhbasDataProcThread.cpp:2531 protocol/khbas/KhbasDataProcThread.cpp:2538 protocol/khbas/KhbasDataProcThread.cpp:2752 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "发送时间表失败!RtuNo:%d " +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/khbas/KhbasDataProcThread.cpp:2785 protocol/khbas/KhbasDataProcThread.cpp:2844 +#, fuzzy, c-format +#| msgid "KBD104 定值读取成功!RtuNo:%d" +msgid "读取时间表成功!RtuNo:%d " +msgstr "KBD104 Read const success! RtuNo:%d" + +#: protocol/khbas/KhbasDataProcThread.cpp:2850 +#, fuzzy, c-format +#| msgid "KBD104 定值读取失败!RtuNo:%d" +msgid "读取时间表失败!RtuNo:%d " +msgstr "KBD104 Read const failed! RtuNo:%d" + +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:522 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控失败,设备禁止设置! RtuNo:%d 遥控点:%d 当前点值无法读取" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:550 protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:638 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:682 protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:703 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控失败!RtuNo:%d 遥控点:%d 当前点值无法读取" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:718 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控成功!RtuNo:%d 遥控点:%d " +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:1728 protocol/virtualrtu/virtualrtuDataProcThread.cpp:157 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控放弃成功!RtuNo:%d 遥控点:%d" +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:1973 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "读取定值失败!RtuNo:%d " +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:1981 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "修改定值失败!RtuNo:%d " +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:210 +#, c-format +msgid "OPC服务器%s %s连接成功!" +msgstr "OPC server %s %s connected successfully!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:218 +#, c-format +msgid "OPC服务器%s %s添加组成功!" +msgstr "OPC server %s successfully added group %s!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:241 +#, c-format +msgid "OPC服务器%s %s添加组失败!" +msgstr "Failed to add group to OPC server %s: %s!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:249 +#, c-format +msgid "OPC服务器%s %s连接失败!" +msgstr "Connection to OPC server %s failed: %s!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:270 +#, c-format +msgid "OPC服务器%s %s通讯中断!" +msgstr "Communication with OPC server %s was interrupted: %s!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:279 +#, c-format +msgid "OPC服务器%s %s通讯正常!" +msgstr "Communication with OPC server %s is normal: %s." + +#: protocol/opcclient/OpcClientDataProcThread.cpp:526 +#, c-format +msgid "RTU%d PointNo%d 遥测点未配置OPC标签名,请配置61850路径!" +msgstr "RTU%d PointNo%d telemetry point is not configured with an OPC tag name, please configure the IEC 61850 path!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:545 +#, c-format +msgid "RTU%d PointNo%d 遥测点未配置OPC标签名,请检查61850路径配置!" +msgstr "RTU%d PointNo%d telemetry point is not configured with an OPC tag name, please check the IEC 61850 path configuration!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:554 +#, c-format +msgid "RTU%d PointNo%d 遥信点未配置OPC标签名,请配置61850路径!" +msgstr "RTU%d PointNo%d remote input point is not configured with an OPC tag name, please configure the IEC 61850 path!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:573 +#, c-format +msgid "RTU%d PointNo%d 遥信未配置OPC标签名,请检查61850路径配置!" +msgstr "RTU%d PointNo%d remote input is not configured with an OPC tag name, please check the IEC 61850 path configuration!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:582 +#, c-format +msgid "RTU%d PointNo%d 电度点未配置OPC标签名,请配置61850路径!" +msgstr "RTU%d PointNo%d energy metering point is not configured with an OPC tag name, please configure the IEC 61850 path!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:601 +#, c-format +msgid "RTU%d PointNo%d 电度点未配置OPC标签名,请检查61850路径配置!" +msgstr "RTU%d PointNo%d energy metering point is not configured with an OPC tag name, please check the IEC 61850 path configuration!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:610 +#, c-format +msgid "RTU%d PointNo%d 数字量控制点未配置OPC标签名,请配置61850路径!" +msgstr "RTU%d PointNo%d digital control point is not configured with an OPC tag name, please configure the IEC 61850 path!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:629 +#, c-format +msgid "RTU%d PointNo%d 数字量控制点未配置OPC标签名,请检查61850路径配置!" +msgstr "RTU%d PointNo%d digital control point is not configured with an OPC tag name, please check the IEC 61850 path configuration!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:638 +#, c-format +msgid "RTU%d PointNo%d 模拟量控制点未配置OPC标签名,请配置61850路径!" +msgstr "RTU%d PointNo%d analog control point is not configured with an OPC tag name, please configure the IEC 61850 path!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:657 +#, c-format +msgid "RTU%d PointNo%d 模拟量控制点未配置OPC标签名,请检查61850路径配置!" +msgstr "RTU%d PointNo%d analog control point is not configured with an OPC tag name, please check the IEC 61850 path configuration!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:1124 +#, c-format +msgid "更新YC opc通道%d,RTU%d,YcNo%d,fVal=%f" +msgstr "Update YC opc channel %d, RTU%d, YcNo%d, value=%f" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:1155 +#, c-format +msgid "YX变化 opc通道%d,RTU%d,YxNo%d,YxVal=%d,%d:%d:%d.%d" +msgstr "YX change opc channel %d, RTU%d, YxNo%d, YxVal=%d, time %d:%d:%d.%d" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:1185 +#, c-format +msgid "更新YX opc通道%d,RTU%d,YxNo%d,YxVal=%d,%d:%d:%d.%d" +msgstr "Update YX opc channel %d, RTU%d, YxNo%d, YxVal=%d, time %d:%d:%d.%d" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:1206 +#, c-format +msgid "更新Kwh opc通道%d,RTU%d,KwhNo%d,fval=%f" +msgstr "Update Kwh opc channel %d, RTU%d, KwhNo%d, value=%f" + +#: protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1012 +#, c-format +msgid "SIEMENS103 遥控失败!RtuNo:%d 通信中断" +msgstr "SIEMENS103 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1085 +#, c-format +msgid "SIEMENS103 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgstr "SIEMENS103 Remote control failed! RtuNo:%d cannot find remote control point: %d" + +#: protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1119 +#, c-format +msgid "SIEMENS103 遥控成功!RtuNo:%d 遥控点:%d" +msgstr "SIEMENS103 Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:388 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控成功!RtuNo:%d 遥控点:%d 遥控值:%d" +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:404 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控失败!RtuNo:%d 遥控点:%d 遥控值:%d 提示:需重发" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:409 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控失败!RtuNo:%d 遥控点:%d 遥控值:%d 提示:拒绝" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:414 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控失败!RtuNo:%d 遥控点:%d 遥控值:%d 提示:错误" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:1256 +#, c-format +msgid "应用层状态不对,暂不执行遥控操作!RtuNo:%d 遥控点:%d 闭锁" +msgstr "The application layer state is incorrect, remote control operation is temporarily not executed! RTU No: %d Remote control point: %d Locked" + +#: protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:1309 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控命令发送成功!RtuNo:%d 遥控点:%d " +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:1323 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "未知原因,遥控失败!RtuNo:%d" +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:240 +#, fuzzy, c-format +#| msgid "遥调成功!RtuNo:%d 遥调点:%d" +msgid "遥调成功!RtuNo:%d 遥调点:%d " +msgstr "Remote adjustment success! RtuNo:%d Remote adjustment point: %d" + +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:241 +#, fuzzy, c-format +#| msgid "遥调成功!RtuNo:%d 遥调点:%d" +msgid "遥调成功 RtuNo:%d 遥调点:%d 下发值:%f 接收命令值:%f" +msgstr "Remote adjustment success! RtuNo:%d Remote adjustment point: %d" diff --git a/resource/en/gui/icon/hmi/DataOpt.png b/resource/en/gui/icon/hmi/DataOpt.png new file mode 100644 index 0000000000000000000000000000000000000000..9028f9e2ca8aebb6c46f28c8b88f7e8cf2510455 GIT binary patch literal 805 zcmV+=1KRwFP)Px%-$_J4R7gwhl|N_{K^Vo~x2{nk#a*zl5VW+j378__3W6pWZf7r`MTCe55t{@o z6od$-NYFwsU_?Ph3nj9D&PZZ+7AZutmn2C;I><(uy} z@6G#W1pnxhf5gFm(3+k8Z`}{;y1Ke{tXpSa2G9=39EmegBgQt4H?%ikgCf5&l}^ZAx>0Q-McMB-^2f7$aR-W?qs z8%#lJm+QJk5o;7cP6YkF?_bG+q>arG+xGewBtosLeIm9a!rK6c8qQH?XXlotrj3_H z-~yZjWP55?y>n1X6#(OiZVkimSuI>omhAkn;=p>Icg|cdKO1wZQmJ&+OQce2Cm=Hb zhl3zET~qj+)ME`n=|ZhJCc+D(bX%4TFRAMdg5YL`s#}2c0Qf+1vxs~WLEB286DEyG zQr%K2l|C-V-+K>mqR~JX3f@7>qPhR(k|eoi);0tc3dMbv#VM`P7e)RRrPOXf%3AYO z6a^!H@(MNtIgVrJ^DXylk)0#C6~H@lnWhR?3tKS^wK+RVN-N2iO-=UL`1ttzY5{58 jil9Gj_*WmkwZOjvE7EYC!#nNd00000NkvXXu0mjf_nmEX literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/DevRealData.png b/resource/en/gui/icon/hmi/DevRealData.png new file mode 100644 index 0000000000000000000000000000000000000000..af8f8bc641d5e82e2588e7851929bf32c7f3f1a6 GIT binary patch literal 795 zcmV+$1LXXPP)Px%)k#D_R7gv;mO)5UaU93Lzn0J;WrG$8O(v8VFO7|PD9D*;&<^jthNF`m9HulV zX3TS53RD($NSZdmgvEOAd5FS;krz7%tCNQ?!OKPq6ukuD`^SI!=I~A3zt&D~yx;Hp z`Tu_Z-}n9hq$tWQ!(b^QI)~c*J}_q7(RF>xlq5-#3pIumwHd>ZuB&4ukSr^V|EaI9 zM|XEOY_?ODx)v8dqEILZ)yo(Xx~@L7fc$ zFwh?<8*k+s5iW^>>gwtciS(hfv-7yrB!DOp{USwCt{MhXqOififs-KS0+K`&;XaB1 z?1{){h_`EG2zXp@&%XN^O1;nc`Re>41kFfx^eJj_*;;f#~8Z~-~oVZ0Qe=8k0V$H5HPx%hDk(0R7gwJma%ITK@`Tnx3|Uw0=bPTuCO?cYEPdIPJdqe*510 z=FJfLT)yw0jbqxW)mESMvz4+23n5(3^Bw?nskw(A8e=YpVYrh;BNIpnG3J)Y`?AQgZ-3V&*qV5>MCb^)GwD_5?{Oi$wGkphA+wvR12gZ2sKb z{29k#4e%y2pVnG$bb>WNrPBOK*G(o`0Yo&)%=Z8)0(=9&^KNBfW|8)6BT1YE$4T0I z76n1@ihSR{%?vAcV2e2^lT!WDc+Fbb|m*5jig{z;$!^N~N;hsYm}0XlBMg zIy{WG0Dm>c9JBXMYVXgDB;8!WX4$-_#yPx%B1uF+R7gwBmd|U`U>L{0PjV5n!w%l+p@I&fQvDD711vOeafe=<4q+a4=%qNY zCpR(PJnT}C(n#+)&%+A+4<;2{>!gQzQmBG0(vtU)w{1p$Bwae&Vs1%zzn}Mc^2w7> zDwTR5B^Qb48kTS{^AAm<$7Gt~`?4V3z7>pwNbwR1nTlK`NF;~&b$|{4Twg?m%-oO? zIbFwZl}DqYLWmbb*aBFba~$WD7euCM-cu)1YKE@k9e~>lpa9@1fL&(()vxHklff{q zA{xDcTCIj&uQzwmB*Z`lDd`FkTSOF{Oo>Dyu&mcG3lA*#usMV)igP%D2xn2AdlQ^enTdcfs`_^oeKe}^lUbZv$LV^tvfxfA)n9tNHH-PM)lS- zwt#89x3(T3ne;~DVAHCKV$nvqTn>0PYSxYD9Y%&&EQbC4mwkZix;Q>A!?x|QR$cT4 zhmt{sY;4>@JRZl%$w$=d^^0<+?yJdgcX)Ljz#%|)=1%cn@Y!|oG)RW!eI`5^0IUHx z@RQ+k6><|m4#3aQli_lp@l~N^_*dBKez#Wj1Nj#j^ZbEGZ`S|-0000Kma$I5Kn#Yzpbm^3*~-kqidg9K3n@#wGV>m#BO@<> z#Kg|f3du_!fsL0yYAg1J0Y^GTBp0D0tx*5PXXoV4c22ouWm(dPj(VZ|OVFSmkd)-5 znOPS4yX&Y@y`rvan#leg21(D7UjGy%X#(5;*OF!)%O&MWLBKdz-${A{=D=LieM->8 z?Wf!G;MqkIkfc*!I8#9{%Q!ii$+y;A|+LCk`-Pr9i z44T;*c&QcBsMe0W>LT!GwJpbP3nGe*?lM>xZ3!jiX14eh$jla!-hnOOhu|lj0NXZ5 w6y&h8*q$!h{ntCyy;P~Uj2BR0px_%% z7sn8f&bL#~79KK?aFOTv9>64fM3$j_?{XHe15F1zveBudVWc!)Vzf+gEjIm%x5_Jt8Izw2U~-*+}&QRdrMw>CCJ{=tT;X` z{CR_#vv^n#t4`zIx3M404yXlf-x9m6cXdyjN+zF7L%+v$r%U~By~R#^bG^j%qpRet z!z4$>u*nmHjXZ)5)@r}Px&5J^NqR7gwBRzHXoR~-I+vm@9!s}>42R-T0@sDyyQ6$Ml1?R#?`oS=}9;!-5U zKqLwZiWU}zT+rem7J`CWIPdMADFT9HcOfSxMbJPXrn|!23?d|$o&EIP-s;@CcQ+$f zbp-+O`uj#A;zBG|EzzMq`Ll(o^$emZf&TCL^>!J0aN4P7Gl=WKyi4Gvd`MijHu`)PNGbiF2(J3R|5ewq)ymSPg7nk-ekI7o zxB_68G12A_2gQNs^q58aCNe+|e5fZOstP-^H4AcM8`yKX?oEY<4jhX8zIqRpj%+#UgZZmrof zza09W`|p+4>*1*9VLZ!P1I=dh_YM&h*dwjOe*j)K#vJbhSo$lg60Cd7xUYwlWBU zQ4#M1$+aR_XN>tYQ;HhUZ9}B5^)VXU_I+zO&I< z?*`-!iRm<*+0xCXa7NCsvmezq9aHIF_dAH~pBS(A4$o$>8ANrb?ya$kcDQz3FGqW`62d&eAKR>4ifKoA@df7}82&MWC4PysH%9S|xYRDkIqB|rr@ z9VD;$h7OVnf>!Lo=@g%1KcYOcl66sTcV}n3x96+y=)c#_wD5f^=v~sRRXUOuU{X{h4P@$x%D^)69k~Kl$kN^)Nt19PscDt& z0N@vZZ>v5?bHLA7Y@EeI3J@&U-j%QOHW2)F;nv?@9McOZbXWEuCO)mBDFE^tzib>2mgSRl@x-&eEPx(%t=H+R7gwJR&7jEXB2+UrA?X)u#G}A!-<*6W=0UA%lKhf=Y9|~OM9z~5lP6{ zma$}Un7K%BWK3{w6WIu&$smzTaTtVqr6g_%KPogp8B_LSS#TuI*{S2h>xdEzw>{&% zwxkGk;*TXef13N=p7XrVd7k&Ym+&72Ef+_Y-Ho9TojZTN{fFh`J_(Si2n2(=y|c6P zujqtWKn{oFd6UWfBQs9~gZhgek7weMK;os#<$9G!>H>I3)3ohgulH^wNtWfS0Gbp< zITTrQxm>A4Qa>}#ND|pQIy$aB+=-ZGa5{J9ND`~e+^wpL!|B}l5)tnJIF$%@iD+2Y zbybq2`$TjZAPW()mI4u=k93_Z%T8vL5|IT!7BlMrZUL|m(JBBlbHL5av>_DI-|y_~ z9Es(`e*+TYiWc4h@Uh8cQrp_v{tmbISt8m8Pzk`_Ynmo|z22E+134UyRVI`9vS6X> zvs=5my8aYJ+-~=4p%9mdc8ce)OHTt_qbSNpF@c;;`LGa>83O?M?%!wsg$o@4S(XnA zn**GoD9X=a7DDu2nR!4}l~7m8s+BZJr@_JXFX^)vWQSaPNzFxl28gD z4M4m|X69jl;)!@vQIzds&2G0_tX5k;5v`7h&djR;tZr#(d8)m=!^e!T0WJ*dC+bWP zVTg#T=QXn1?WPqgR&16eX$v!3h@={T%M?ZVBHW@ALXX76gu>?L<_!P}0f=8CCMPE` zGBPrJ=1l9*jT-@9Fc=(&Hph}?aJgJoB1vPWQdMoQ3$t!bN=iaSMFmn)o;HeKyY>fe z-=0K5LIT#WUyr!BII$c6u#1TNk8@xb0J+`nch|06ms(z4R+gNcj7yg;qp7J0w{8ii zKM1SUio(J|Y};l?Cl2@)BAU1RV=)Tr_8ovXdV77StE)3u<>ork-QA7x@iDAixe`~d z{Dy*p0_5fG5-DCHnm5d20Wot5fUBCOnMz9D!|d!VGBPqyR<<9twO?UuYz#+^e2Mz{ zWAOQWsIRZbnl-{F2CJW9PKJjyV&>g*!k_kdx^VL3Nn_V%&z?nkdOC;zO}m5I+M~F4 z?;eVa-$G7K4vLH46!oi#sA4%lpUnNavZ3KPhKGmI*!T_l`uYqup->2Bvl%v<)zE5U zViIX-FQBrrQam;h(L2il+CMknK5uMnL{CpIPM!MJDC+n7F*rCFZ7%rzgV?xnBMuxW ze3Md^Sv+vfdKaG`5@X5Vj$NoVidlI_Azrj5p8A0D8PZl#KidH z#~ZeY7L}InMKBmdRn-#@!S(8S>(7w&1w9 z0v2r*Kz{z~$j{Hm=;$b_s;V(FGlT5xY^+=N3~t`MiHjF|3^xiVW@cuJ60LLRs31~n z9!NM1pz*o6WLgSHuqiJu$EHo`hMn8m&Y{1*AJfy*h8ctdi;9XOQ)4u2ZR1K=qIK>M ziBKJjmDz08j~=ZVN=Zo(li3JiX^X`Y89!pFTg*WsTJWv$4;xBBxE+jkWB>pF07*qo IM6N<$f>U{4)c^nh literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/alarmManagement.png b/resource/en/gui/icon/hmi/alarmManagement.png new file mode 100644 index 0000000000000000000000000000000000000000..b383b247ffeef9203f442db4780951c22b7dd96e GIT binary patch literal 1281 zcmV+c1^)VpP)Px(yGcYrR7gwJm2YTMXB5VtbCXF}2PSJNg%+VuoYJydBK?DIMkkDvHr{(%!MSyD z;J`YC>eN=W)}dlQIOm^@b?8u7%Qoh6Z=38xM@u7EO*dwsR4OiFM}@gMyg@2-&U?@L zUK-Zbw6^;&*!^^Q^WO72=RD6jA^b-VEre5DU7h7{JaF)&879t!5xK-1%{pqxu)eMTFY+%MEB3xqTdcY9`td#)ri0F4_#4PJcyTjpF z4^TTZF6w&do!JaBr|Sd^z#f2#0JxcX1i%OpT@hGOl;Z$3FTW4qJGZ9n-@_1g1Gc%G&qh#^oOs^yfEon6~mlMG~F)@)tfq=S7k|4@o4WNjK zoXkiNA&(g+bUoB80;X&aa75Fzjngw%6y-gDKAzO=D?r2ogq}o*0TA~){$U26&-a4I zu!xJhHR1VVWjRp8Qb2L}fzn+bP(5 zL5%=fFJHclD_8olckdny58p&lQK20?_1@I9ADcJ7fs&FE5xK6*S2B16~4&%aw zi#U7s403aGap%q*Tbm_ImLQQxK!Ae5ASx^U;#_Qy{Dp$6%61qD!5Wo}SqWo3@j>GC=ph%jR-VD)x%bcCHwXHk25 zJ0g+qaO%`YcDn`!2JBqR%1Z6l?c3LAR~rnzjYW$V&E7g$Rxc1?%gh;26a{s4Z`s+3 zs+yY*VrXax%a<<~0Wmf;+u&_u##L+e)vX^dJ*VWY26k3+Gg_)e`V0CqGisdR=>lPcK rudffLX<_~P*X$Nft)PaP5b?ub`iw#wM4~9200000NkvXXu0mjf0Q*o= literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/alarmShielding.png b/resource/en/gui/icon/hmi/alarmShielding.png new file mode 100644 index 0000000000000000000000000000000000000000..59a11146f709bf43c144c58d979b4f85c99eef63 GIT binary patch literal 1100 zcmV-S1he~zP)Px(21!IgR7gwJl~G7rR~X0t-)*7}3YsCJ;G_?Iu+VmeiA!kbGA3-ulALqv<|=}d z4a`fYgGn7L?4{6x4|9lb8;Cd|!`^e$4kr_qX-kCqurZ;fbF@>0&2>{&VOtaLH;*JG z8snBe40c}v_nhzi&i#M?{};l4^iZK3DdlBmUea2BQb_G%fb6@>h->Y1{69ca$_PN0 znB9=p`rh7KOPT+Rgb+uFNHOyzt@YLH+8pUZp-`>I{TMK86uIhFIg6AfEScf&j}%(A)=R=QA>nB0enM5*BrWH`FyvSO$j$bS1Ob>?T>{Hrd0rrn)TJyRouDr{gP77%*x8jlIvOv$>bjkQ&UraTo#R*wN8`W^(cxMn*=EOeS~r-s|%ftgWrhz&4GnM6@%)3ISbSTU+ZrfBx;9FWF18EDHkz1E{L1yh23p6$<)p zbaeFi*x0V2oG&(LX?e}acze57#|i}{`}+DkiNw6g4T_4q`$8T*OqxibzP=v4y%&tV zcQzIxT|uBgz>l7up2q^+ip65JvDjyM<;q@YZf-_v>$ycDI+625k;vI+EsMJWJ`B(+ z02Z0CWHv^lopmQqo~Slva9#I6n6Y_(|A(lms>(G(Fc|dsd{3G&Vr-oAl$DiXaBvXQ z)6*Cp9zGD1wzmnc`D@>8Z<8H>elh9KcZx}VcXt;Y$AOV>zreP(oPx(5lKWrR7gwJm0xIEbri?HCpVVTjxNzUQYeM8iUar1l7W^@dJBTKtjWE%8w}dg z2@@2Z4gG_&I;<#IZ2KTxSZlLx;EIYf_ojc?1j|BwiHLSXO820&GKyO5ZXPOx+Ix@t z#iq+*lC?ev{vLmv-}#(B-*bM1|LD+eI89AWrIPf}n8SfUI2`_IH*a?ZQWT|{$T1JF zqU(C({{d1It&0e!ENfGqoSghMJ?aN#q^jz9W*jgKy*@MBf0Rzsw8PB!l9_MCpl78PO>aJvqhpPiWi_5K-2N~o#QDRRng_k)uwr;G9`vB=?~gA zUW`P-qr$0hS?AMrXIqL*}pnV%wpE0IWe$mi1zI~)+{9|3TXh@8y$ zfe7Wy7&MIVS>Z4xdw{2PT|b^4xvHu!19a|g-#!6^FF^E@2r&S{e&Rkc$g;f0?RI;a zsp>8$WZO6qiG)8DJI?8Jeglwa|Nh604Gi=P^(k9|aIUYf$7g3}OK;x%K5*m4cgvP# z#WIIItLicbQ&rU|fR1{-UIYRiC@wC})ps#(-9!}J(ZHsIOw;_r?RG!e($e;vqWI2q zc6Onnq5@rAo%uu-AfgY_4R(|fGrIsR0`O>BGxqI!6eA-e`9LBw(eEEqMmq()2B80M zQQQMcI6DP>1wg3sKG4|M7_MHuhG6hqHrOvjv>m}tK|hPK zWrBu>hjIOS6hlLUsI08amen32`eQd4{RW^kAIRhJU~X;>_4V~AC@4rlbAuWi8$C{E zp;wYH&5TokJv%Wmp%)buRp$dOF5W^Y6hcSGtEj816Q;RKrzqM*BAm>uf#2^#dwYBG zI$aFurCV57!1(w@oId?ZGAjU=h-mxU*zVERr*=DAp^J-)5DW%UQc{A}*0yBh2L|59 zg$v`DnVG@J$a&1q&tr7-L-h1?qqeqI$omixZEyQ+kSxoEE|>c@5hZ((d1`8^(c9aL z)z#JHW)M&z@0FF6q!292!qU^BbMq6nZJ%T&XEs<{TZ>q(ttnw- dvB|lD{sO>v`V1WVd~yH)002ovPDHLkV1kEz3se9A literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/alignBottom.png b/resource/en/gui/icon/hmi/alignBottom.png new file mode 100644 index 0000000000000000000000000000000000000000..b73c5297b490f36e581048492ba061683c844b1d GIT binary patch literal 321 zcmV-H0lxl;P)KmOF03KoEvMqm(J2N=i%N0NemKbB;7zgq!37Nc4Y! zZvgZZa055greI7AtR)_+Ef6EE=CL#SGv%0QHA-yD&l%S7C3(c$q#(}L$(jXcL zs9f)Wt=nT@A4-0vbt~6@k_t(M`-NtvV!n0ma74T>&r&>NH<)OBG$0nDs$KX=`4kx$KN(wb3MtqYCjD3YvouXkY&VBj@e T+deMz00000NkvXXu0mjfP7sQL literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/alignHorizontal.png b/resource/en/gui/icon/hmi/alignHorizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..71eb1db93a03fb93be10770c644d9548903dcba3 GIT binary patch literal 361 zcmV-v0ha!WP)KmZ46>KoEw%B{&dBP*-sez#CA+Ji}Qe5}ts&Cjg1W zqIiJc&;*IN2RL!(kOtuAxyH_nZGmpZ8w`~Ls^!LVLPKx{v>F(Z=so8 z0B^v`r75rvJV@FM1_G{Ip51f?nb{0D0+ucv`goS~vO057Ta+TQ3EI7sLP zkh{N@H200=eL?RIDm>17q1Tq0Mr*ruD*#Ekq@2$qS~eB*1r2JWfkNEt%xuucCn;3^ z?;M?^P!0UHMe)MZ7ST?NdOmO(X=%_;+Ez5xDS(+hdYt)uJTz#}=aZVAYD?b&ozu`% zqnyml=9M4ibq7hh@37Gca8=X32I^p!G<^6{$>IMmXzM{Au~Swu0XsDZ00000NkvXX Hu0mjf6#kk` literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/alignLeft.png b/resource/en/gui/icon/hmi/alignLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..d3d9d15c973762243e25d7079364a1da24fdfea3 GIT binary patch literal 333 zcmV-T0kZyyP)K*1c`QKp4jHKPVjy9qE#SJ|G6LDV{!31_%WMWE2LV zfDP#10*{dNL}CPr^p}E*A}n!tHnQFDNR}<#>HSIf>7H|rHqviJ=?s$OBo&QAP3GZR zgQPX^27CiQkvcEH(affmAz%y)fmsCk%X6qP1QkFA%+0I_6_MnCuTY=v=ZOEISV+nf zYCYZxy(b_5qq@+}zdwOf1j&IzEy&DPz$yYHr~Abq=>vErZRpCG07Em&qmV~3|JU%$C5iB5*aW f%~9|EyHz*8)d@ItspMit00000NkvXXu0mjfPKSv6 literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/alignRight.png b/resource/en/gui/icon/hmi/alignRight.png new file mode 100644 index 0000000000000000000000000000000000000000..0a2cf34ce4dd3a1b84a87cca3d4b46cfefe87636 GIT binary patch literal 334 zcmV-U0kQsxP)Kmc4PpKoEsLc?ccg2tv)60^ET}UhEQ_&C{r2s{HTGn=_V6=Vox5#L#p&_E2d12Qv9noN?Wz#7Oyp5IX;U<@E>5%Hz9 z=mw3dIFI=1KsRW`sla)}Hw0dQk4~Uat9H?Snn6+y9DuDe&t>b(Y#9adeK230pr2|5 z0{8^poyk++4Jbl}TcEt<807*qoM6N<$f=xAqWB>pF literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/alignTop.png b/resource/en/gui/icon/hmi/alignTop.png new file mode 100644 index 0000000000000000000000000000000000000000..c4df884b4bef85f8b3c81fb025f775ffd05b44ff GIT binary patch literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px_Tr z7sn8f&bL!-`3@QIwC-0j6EnM!kihQeAh{>}5fhJ0!{P!4vAhHCSo0XFCswhreKWe^ zx^Rn-Q{V&v|4lOL`jw~p=W3iUc3L3nqPisDHm}Q(*OsfYLbO?AYPoiHIN7$n>SGX? zsB6H)cg@t~_Uc#1EV30Cjf@*4JVHyqP7~O`uIa?%mb>bLY)- zk0u}1ylvh7{9LWm<-R&4E@4eynuKV6M_Fss9(YVY;$~o7xzm_{y zWb50ULirbrE5j8-=hp2?5Z+hk{yrh8?&TFHjeX+lonk*TZx)(sRkT6=+jpUFeBU%J V4P+uVJqCsWgQu&X%Q~loCIIxYejfk; literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/alignVertical.png b/resource/en/gui/icon/hmi/alignVertical.png new file mode 100644 index 0000000000000000000000000000000000000000..a9d4acd1a093bf8c0b94356e01bcc168e3c579d9 GIT binary patch literal 395 zcmV;60d)R}P)4RxwV)KoA@wIw&X;QN%?azz<@Ic>`@qO7a5C3!tQ= zrOE@gfb=QyfE1*oqzJWBcu%@)_AFu{C(1~xm1g7}-`?KYSyff&0%x7L9JLY2isat? zKHe3zMV6X6l6L@J0sI13M$$<0EaHX$E&$w%$h%kXyx}GK0IoEy9ew0*{Zz3gqlM;~ zh!lYggCHVV#C@vq0ts}sM@=j0Y0gQORy160o@r$?0PyJO9@olfj(W0wu-*G$@Dy=3 zsE1~rDwZ7Y6ue>h3wDf1J^*;$%Y7FU5qXITuXSt9D*#`P?j6{G9QB^At>77jTi{JZ zN-IXKD;%vvy@yMy9rPRxHIGRasR#8ou*jntTe@d-sd=E0f_K;18jVI%&EFapADV9+ pt*0@yLTBgb@E^Ya#_9btYygfkSmci|kk|kK002ovPDHLkV1iQ5rndk9 literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/align_bottom.png b/resource/en/gui/icon/hmi/align_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..b73c5297b490f36e581048492ba061683c844b1d GIT binary patch literal 321 zcmV-H0lxl;P)KmOF03KoEvMqm(J2N=i%N0NemKbB;7zgq!37Nc4Y! zZvgZZa055greI7AtR)_+Ef6EE=CL#SGv%0QHA-yD&l%S7C3(c$q#(}L$(jXcL zs9f)Wt=nT@A4-0vbt~6@k_t(M`-NtvV!n0ma74T>&r&>NH<)OBG$0nDs$KX=`4kx$KN(wb3MtqYCjD3YvouXkY&VBj@e T+deMz00000NkvXXu0mjfP7sQL literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/batchCreate.png b/resource/en/gui/icon/hmi/batchCreate.png new file mode 100644 index 0000000000000000000000000000000000000000..8f40fc7e7784df4b35ada4e651450c888bbec9e3 GIT binary patch literal 430 zcmV;f0a5;mP)Px$Xh}ptR9Hvtm$6cWFc60Sg%`M|ux3~)E#w+2Eqx0M-@v;ku=6D>>}~F@u_6p_ zpyNAO!a8w)L52`Q#ybm`pSEmgS46h60Foq0MP#QP1VOO(fylDV$^J)yIF2_&^gu*wR|h_@+SUr7)$s{p zn~)KpR^=K1djRZ}QtL5$BLFkM1Nb7MI}ZTNQlQzC$Ji5t3j9j|X1)c`ygsX<)AU&> z^<>O~AqANE1;9!~4nEO|=nTMRS(X1t! zl-`&&#m2^~s!F>($gkeevUZOma_KmcdQKKoCWL5Le`M5MSqnMFW@$a0jG>l#mi!Lg*lL zU>ZR7X>JHQNJIffEBzHCvtB#K@`;fw+ne2ep1-qyvufKGOT^V8lqEseb4(&4LH$*A zbumap)&Md9Ie?Uxdr#Qq3&0znZTmQoh-?8A03HXrzN>1^F%^LOQ6OgE2HcwF20(4D zld9H~?iBlqSVjjz&H(oAT~%X~Wy}PWZZs(MgH-h+_O*Ml4J#sU@(qAz0K0)~ z1|znQcDz5iwGxs1FQBLeaq^=n)mOJ(s#^69ngYU4^_9%bhXa07*qoM6N<$f@l`Ns{jB1 literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/blockInformation.png b/resource/en/gui/icon/hmi/blockInformation.png new file mode 100644 index 0000000000000000000000000000000000000000..a752d1633440a3efdab1ad8ad2c39234b4da20eb GIT binary patch literal 814 zcmV+}1JV46P)Px%=t)FDR7gwBmOp3|K@`Tn?@STU;!ZqJu!x0Vp`fTJsCa^)MPPR}g*Kvsf{i4g zg()Nn7N#%|u}nYU1RjA z49NEb4Pbi|&F*L)MJGhx53T`n1(32aCQ4$^_thi!VvIi0N#OQAO7)!vJ@`9_ z`yT|sW)bPP)?Q5;z+YdmD-Gt4KuW2@A{=O~y^SLB72p$6#!%$USO5q<#B(@OnDKqjrV7nAg56e*=V5sWXF&qf?K zdTX`XtHrgVCLF{)i^P|WF=I)e)*yxeI%A#GTAz3SR-HPRE`VVi%P7fhPC*24|T3#4aRULrT7l6~o zRL?pEp6Bf=6xM_yxbFgHRRt3OdbO@@S~Wid2_Sr`|I2aGW{m%ax> z^J<5+uCf!*M?j{NBBz47lxFJXb^}0qjnU;*gBG`b*%?K4Yub{0-!G=?6-80KR9gR5 z1W(g7>M}+j%40FftOI1U-ImhzBIRXf);S{;!DT=$kbJWetl4b7tkr6tv+GDkt+gX* zPxJlY5{Vm&aWd=3NiIAfvFBHcL?lcOFllE1@X5_McT^+c4D~3~fO-tE=*8y^nCe3G2cM_yDnFA-ssI2007*qoM6N<$g0gLVQUCw| literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/blq.png b/resource/en/gui/icon/hmi/blq.png new file mode 100644 index 0000000000000000000000000000000000000000..d51134701215de3d4da3ca217814474774fccb75 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px`-A z7sn8f&bQMX`I-y_T&}_kE6fwjz4tV!uUMJso6KO}(Hj`=6t!$2 z|BI3Z1?LpmyLG1Zi%l%~SFt-o>!wR{qrdyFu-X`9j;)ZA<}n zvmHcD)1J-eGZdWkIa%p_>J_PpG38%HQv^@SHkfg4RWw`wA~a><%(skJJXi1;a+*rM zGn%wAB5g`Wm%^v@_a+BkU%@4MK-m11WuK<-ibb0ipILJxJHO{&x<}UCgspW?j@#7~ fe@b1?cR)0_!$$h~F0BZl&lo&i{an^LB{Ts5M#FEL literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/bottom.png b/resource/en/gui/icon/hmi/bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..32ef16c5e668716c88b2ca50e13b4f7bfd44465d GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px|Rq z7sn8f&bL!G@-`a?xXK4sg)KP2kRxDT&$q%TU$9Gs36rIoTyHpqbo&B$YN05=3dEUB7M->#< zwLFh9EO}rV{!?m!P)6e#{^G)C-%hPm3hY?v<<%(Fv3ISQ!L?gytK2T67PR(g+ekCr z>ts6fi6thshVh-Se8m2w`ytwgO1UeZ=k9TScbCcWtwdngcl&mS-mTYk7J95|EUwSB zKeu68Th#Pji}eGgn7Tgx+TGSPCy}@Ierg4Shn1bc$Nv`2K<_emy85}Sb4q9e0Q{+T AssI20 literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/brokenLine.png b/resource/en/gui/icon/hmi/brokenLine.png new file mode 100644 index 0000000000000000000000000000000000000000..270a70e0640f88ee4913fb686d81f28f2103ec58 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkR@w zi(`mK=i4dXTnz?1F6xi27U_MBv5dKswem@@M$o5eOAo(JTDD}>jDu!JgBA(d-n`A6 zW@qatSa|oh2&2WEn~4`wQ}*yzI$oULI8&6trA2Ay*QoGCCVQ)PZ)m&AXQkV;cX{GO n(-(RV52i(~FID}u{{>t4Dv2#~)n^z2ZD;Uw^>bP0l+XkK5%ous literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/browse.png b/resource/en/gui/icon/hmi/browse.png new file mode 100644 index 0000000000000000000000000000000000000000..b4649dcad1e5badc0c718314848f2a178f81802b GIT binary patch literal 471 zcmV;|0Vw{7P)4mdj1UKoEw%AntJoqywA^a1L`OR1niaIv{jF2RIb~ z=Q$))K&3`3nJs~f@cnUe1dNEn zWo89X>zqgWuRsGd?jGKo0!66U`>K!3Y%D`P5(fZ9ZcVHhX$rUBpT774vym-o7>Vh*T{ap=V|p_lSFIZbjv4g17SlxQ^b zhQO`PFe-+L?ldWb$1U#&tl_U4R(-Mwzx*d7NS+qqiiv04g8itkT7eAQ>2#$#_S5@g zA02Ia1C-h)0Mobta-?vzUYA{f`g|^}WS3{CAX;`IeOYyXN&oM6>m7agtRi805aIv; N002ovPDHLkV1j+V%*Ox# literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/button.png b/resource/en/gui/icon/hmi/button.png new file mode 100644 index 0000000000000000000000000000000000000000..1e309ebdd525850ccb6955f3d7e1091e4ed602de GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px_Np z7sn8f&bL!9@-`U=wAuH(w`x+hU{WdJpX1Ub(huw!yI;qxVWeTOZ$_%VGC_+4`8+!loWW!-9(+ zxJ1_OxX9SisJlUM;%+9P>FFy)~xk_@yWbd!UfMt4;@?}6~X@MQ-CkW6&{CY+Lz44;?%R>-uAkDrL4Gi`sv5F pEBgOQ`IQ;Fd=9p2{wMy0W$~YeFIkNaeLz1lc)I$ztaD0e0swPubF}~f literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/byq2.png b/resource/en/gui/icon/hmi/byq2.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a5191d60b57b2957d7f33d90fea1a3da962f64 GIT binary patch literal 499 zcmV5QaY<65=6Y-@p<`xOQ*?xB+kih8wVCg+OdrMY#da39ygA4cPtT-5dcgNE9WK zvzTh!8m8MgWD!OArP1_sSM}H3Q(XoB^_yBs4NRxg*S4AM1J}TD!)ydxOL}^paH)OD zxgawufct3Z(cgzr-?^kg4z!#CIpidQ+yGrkN0N?!j`soFyKPd*9rgSD4p0Hx@ruoC z4M5U&|1Nwn6QEa?<@2IDI&sKj1X%@s0zb@b(}4r(oFe-EO*9pC`i^@oN{ zkAzk;pr9%=B#r0Td*^p&TeUT>^Vie;nRt{)`(wZO^_y zi4$PM%$7apbsb(%|Fa31@XppFPyG+xbp?Eq^x}Xm>TGfAyP(UF+2Mk`9Gxs{tRf|AgMMFd5=AVP$Sq=g3dXC+ifMGI-szfCSI zqFvy^%5YIsE)=4{?n{%vY9t+`k{V~8Gq1%t_xXDIUKB1pn|pu1d(QcuKi_jMm*sy- zU;ANfYzzi)FSg(=45En!_Ti0Ge+nD&JIvrqypB&WTd&t!zUOrS58xiWid%6M;|a7H z>#!=%D{vxp&Y?)#(fs}?X1f7xz-zb>FXK&|#$w!nXYgQFVowJ2EzaUPY{ip#-^9n2 z0rjWB zpV}B%6vYBTf<=OT4J^bm(Zg#K_+&mSrnaP$3^Qpoiix5qUna%#eHa#Wt&Go>WjS4z z<*evS1-deI`|^Cz$S)>m#2OhA8~Hu_j9O6?Q>jyBygYS=(&o&6$*3V3I*#>tI3pbp z!?;xRYEblNed_K{+Y96$X^xDHv>#82RkT+82$wj&=VrvrJT0jFn;7cPv=L!)aBFn*UeckAcE4nMcp@xUAIa!y&-#Kl-JWai%h0000jU*RJ1@J+Nfx8>dR1&K?_8IUxcWTf;Pb@ zEv%so%r-JIBB-$LNJbkbb|WNlbeuc(;hb0BZuh?4=)lW``JJ`Tkse#U25(uspkfR4n+7{Dkt;$WPP>u?^f_`g7Nuo6e( zdc1`lc{YF{+=pej1rzNYP3i0FYj@U-mv9j-PLSQD^KDpzX$d$XGXIy<>vi1~+04V) zcoOeb=sku_soPfC0rlc)(fFUL9AKyD+aS(IPb;P79`)mK9FLPlS#A7RhR za4KeFIcoS654Ou_Hr~Mv_yr@P@h4$1-bA^f=i&q0owi%?E~aAO3tb?*cp`M*cNfwQh9bVa&yqcq0wBWhQ$tj^f@nPNm+ z$qQJB?SkLR@-?o)cP;FG!xkJ>08NTzn`{FFe~J>97j{BSV>`Qs=+CqQXiSW4e;b1f z@sud>^aN<&0GuhZ>Eoe<2iNpRuqCA)=q057M{z0B~9Sim)c7@x`i&&l5# zv0m)fXnym=S`?IXPnPQxT#nWGUxRLdRE1E$Hsk)Cw#Uc(14s0jGg6&sT=u`rY3HoW^eftKZkQrjK7K?H{TLrYgH^T<8 zupi-Xg$slLotxwZhVh>#nSHFpOa4Cbzg~lsuzbO&>t#Z bJ2BR0px`}E z7sn8f&bQMZavm}eaJ%pMf4lSz-WW&q3xYBS1xuLS3s}v8Xod6@PCveNPR>`Nk{n*J zH^yClR(SuZlS}Byg^^;XSblK_T(s@*;LSO%w`A3CfB6T|HJJ}@TwMD(OGNOS=#AQm zX9Oc!^v^1W=I*j!%L@H!G(|}%S75fWdP3eq>kAs49#0!e-~3NeIFO^&xO?X#N!zJK z)zVLRuJFCpte024aQF4)9i{fCSCqXzwZYEQaaC6CM#iuMx^wy?!z=Z9LPZ(YvS-_0 tsuI50ub}-%v9n*$x4eyWiX@8-gYU_XM;;;3?LeP0c)I$ztaD0e0s!`ab2$J2 literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/cam2.png b/resource/en/gui/icon/hmi/cam2.png new file mode 100644 index 0000000000000000000000000000000000000000..0ff47ad7683e1357915c4f431ad9ff08e9045179 GIT binary patch literal 766 zcmVPx%xJg7oR7gv$R#9%7KoFf-{D&oz6O{g0EK;2lq&Y#|6T~?|ofD)vLDCbH+#o$c z+Y^LJEcRdN37Saw4|b|SyJ$_Yanc}JmSMba-psr=APih_9RC1-lRaUlS(b6k-V28U z4A2Y!Qa6@}0z`ZV0Iv!JS(d$bf#Nvk-``&wh%@hF#7zH>(R4ZuJl-3U*Xwm*LAi89v_Ql&zDGpKX0y2{isGR!u_r(VFGI(=ZGJ-}e(l{J_a!TV+uCB}0!2|Y6GGe*(H}%?h1vsnqP6~#=lRl^zJ5mb zP-7*ZO*#4da>&c1l-%%%QtGV>hcWLegn zWu2wlZ+E;KWtU}n#1_&8l2UfZzY(Qfj26i5ud*yd*NR+5&3+-GTcy;(1u`Y!-E&n{ zRWcfle%sQxK#qkqXY>k|Z(6@%+Cm7Pw5CU8S*ENrB4SqDleyK21>#EhzTa3_m(5m> ztZ;qbPuU^ZMi8-GY^L@sz)7c?qJ5AL-FipQR?*mZR^+((IJ}vRonb=3I^>UZs zdl#R(W6a?^VX4+S^*rx^h-UmjL{@&lS|g&l>urOKI#$A4lwF+%WzzjK?=1k}&6@1m wtXmdzh+~_HYD254DxR~m2H)!rN#c;0f6DgBDkKID(f|Me07*qoM6N<$f}pHo2BR0px_rz z7sn8f&bQMp@-`U=wAJ@88#Jx|zC`+jhDBpuL*4Bm=*i;^@iQMhkXy;Qr{x%H zqsS8(uExbBdLEn!>+^yIFFwunxOeQ)UcVHF1!`|sT|1`UF5dB^G3C!VSeCg&smDB1dTgF*?b>kPh4ElFwyXp3u S1nB|&&*16m=d#Wzp$PyuBY&d+ literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/checkAll.png b/resource/en/gui/icon/hmi/checkAll.png new file mode 100644 index 0000000000000000000000000000000000000000..1702acb982b8171971694f698bef4c3fc270d962 GIT binary patch literal 328 zcmV-O0k{5%P)K);(^*Fc`-1e^7TSF4D|h2*Yy@I0C&vdxBnpd%R1I z5ZEhm1Q?jpp+RyZW5*84fOw`@mi)_WzxgQIwq=UUCQ+t@UfhACA^Z4cW}m(ZNv}W& zG-h_X33WLGO#nIukQ#UcR^4?FYRs$(Krv+RyV22S(SrB(d am78C!e{fQ?9ZCKG00004mOWC#Kn#VyFx12)r7PON34lVqIRTp+z)8pr*qng$ zYTQzRZ;&G-CkTbL$!6oVVTObmG~=;lOM3cwvOU^tHk?AvPJ;3;fzF2vM5F+m9h2m7 z19-rz>Z&i!sE-UHQdyw!Kt5~0sp{g#KqBIR*XY(9SO6jO0;qt;$Y!dl{@XxS$(yN- zW&4>)sI&w^TOYbAI{>noENR=-0Cz+EH=o+T)BFjxkXLIX8B?2v#JiV&eJX(fKLdL11Zc8^Yy9C0Z_7h6QH(ib0C50 zfzqyP$^Z7H8i5`EGZBFu|HJp2^8bELP6qS^B0{uo3a7#E00000NkvXXu0mjfw(84- literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/circle.png b/resource/en/gui/icon/hmi/circle.png new file mode 100644 index 0000000000000000000000000000000000000000..7bb11686a4dcc885cf89d937a6c8a7de19dd53ca GIT binary patch literal 447 zcmV;w0YLtVP)4md$a(Fc3x`ncU+Ja0k#q$U%2^fYSjbPy!tUI`DlD zaXK&^;11#noP*bc5c)C644Gjs9!b03^RDETXMNvu4|}=`;61ac9Nh&UXxz}X zF(#i%P~Wwq5e4lS8YV#H9FPzsv&1{qh=X*WHac7Ybu2Sot2rO(jqf9mHPt=mQgjUc ztQz~6_PB!K;~cM!gNT$qz0@_a0k)P<$U0yvB3C7w1X5VeP|AYqd#PpEo1KW9Vme8X p1I>V?4x1?r_gA35*yH^L{Q#xpmi>vsbb9~*002ovPDHLkV1kggySM-V literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/circularArc.png b/resource/en/gui/icon/hmi/circularArc.png new file mode 100644 index 0000000000000000000000000000000000000000..41ed7f67f8b8327886ebaddee245ccfeff6f8e4a GIT binary patch literal 356 zcmV-q0h|7bP)KmBEd|Fc3u_tGz=9q=YRYmpSit!j`fnqy%!Fi%WnG zLI>MHIAo%=j3-V2A+h31mKD#>|DG?$S@nI-Bk=YRmzU8~7`=N15vhR>U<1?zodEm- z2UQI@!YV!9BC-cQ=kC-&tEyk|Law9OgvE*V9fY;3NPA=o@8zL66=f_nuqWW58nA~Fh8{C$+;$4s==cw!eK` literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/combine.png b/resource/en/gui/icon/hmi/combine.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9b07be9ce5882084aef194332f86702c1f7d09 GIT binary patch literal 322 zcmV-I0lof-P)Klrav1KoCVA#*#$upuOHeo4JoSk^4-c-T->^R6$i5+aSJm>JI{;7Mn#it!TvZDb1e_W` z7r+m4Y{-R5f&d;sY51{s2dV^M11v+s0+p(|PtN#JmCA|88Q6v1Xl3|=1_NEN8~3%c zJ|{>-94+dts+l+9%g}1$-``833O6aSod5s;07*qoM6N<$f{X=;!T2BR0pkTVE zi(`mK=i6xqxfm2UoQ;2(?!VQ)d9wJzC;_#L)@>V(wRxPx%!bwCyR7gwBmO*F}K@^7nx5g%i9+HaCL&1o8D_Bs`gF-|_TA`WQ6g+rPLBWGZ zL4*p5Jp}Yn@FJ+-MJlK}vmp?u9&!+@*h4|V3I!D_B9*4WmPDJ~C({rqB?+5Ui+fsT zcK+}E!<&DWut5)P5C?xi$z*Cjkv~jC2LVKx`8z-_m?`bLPhYLKpcPOunL2J+tN}#o z3vya1b!9y;8WP}sxJId%d$ot$N4lkIJncYLZ^vv$rQlsU(;G&Zx=>V%F6(y znW43Iog{fr1l0TxOrx1NY?+qao1 zNJ{%FfbQkxUp?7u_DciMHs9x&>Kt#?S}z2JNokjuIYdIpWg-d{3iF%u`Fy33fDra; zBJ6GEyxv+VZ8qb^(aMWbPSZ0bgnfeu!^{}b+PNCUQ6iD(jK#Ws09Z7jlIg0YrNz$i z@$scb0?DL((z5WVQPb30*WYjVL?Zai%(JHJ#sKsvr4BW#QV6k!$eLuvq}I;9AdaMz zy8)VF=BdCDB!q|)Ss$4BqtmVD3MhFu%MI^3j(U0QGjp#W03tA zz!1P^0)rBXL?{}KmCR8nmrIdcF88yUEAxFU)-`9MjR^6;AR{WJd;?Ig?|TPa*KL~U zLJS=t@}DzfMr&tRtDu_znUKAwlykm$m)eR5q87$2frJn{0GcMEisx1O8U<{vtpSuh zuM*E>GT&MPRkzQ+3*a1p>2evzaye&qwX^EA6MhL$-1j-{y48EEWl%L%Vn(PJ;91|N zkz#SvLtw5Fjcz$X#G@tv0G=om3WxLge7P-Mtk_$!Y7OVDqBML9q|w;h%M0000Kmcfm}Fc3vwR@`Y}OGpO`hhGQK!L~pp33bc?I#^0b z32X)75DR644HE;ouwRN4+mYXR{&~K{L-slDzrdm|2|-3i<_(k@*ss zhxbYnF_;&$1)A6fk`BNZume^pSkbRKNec(`WM-F>^*~GD6R5({pEM4OVefc;B&}l+ zgpD_0SoPOpsmt|ZFDb@Pf{tdk7*3|Va0HbE-BS%5=u%VBdGVbH>Y}U*d&`TIa!z#9 zi)VmbUOWsM`T%h+QhL+w?NR6!>o6=|2BPb8Nxz;6s_8EBYe8n#0L>Us8Oqk9D=)@? j<~Z-h7#07&Te&&|YawHs=CjKmBCHJKoCWr5qClbP=Y%kmpP|}P(hLkuq(iH;1)Rl zQ#x=7qyj<(=8#!wWv!9cSP?@07i;Ew{XDZfcG34e*U-&XC<|x-#k&2;G_w*|dDuxh zPX!gJIdVV)JPoW`QZ)<6%pQRbxEopXCTX7wO6^e_K@O4%;2wDQ+|JC_bAUp-4w4!G z-yr zfS2LgDFfU1^#N!D%*^({t9!@cqO8^hnOOtuM(i)3l=KlNCw+o^j_QPU1lB_cOspu# s+g5sbmeh^i`zuh6{@-t60sVc@H^19o;bXFK7XSbN07*qoM6N<$f+`h{h5!Hn literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/cut.png b/resource/en/gui/icon/hmi/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4dc61e3cbda6d19197c64e69a3c109a022a2f5 GIT binary patch literal 548 zcmV+<0^9wGP)4md#ZoF%X15_Hl;{))_EFfH~-F69FayCW93jOa==P zV9s@5$N)01GcXaDgIZV?njiM<^MSrt(_QM)w5of2wB2qwg#9`Q%OQ!5`-0B7Q@{g_ zq*VuI0@Q$)wD~6@Be?}8z`O&~05e`_LZ?n zia?z=T&-|Scbh%g{_+mlkVM{eI+q$2qn3+O^<|fRQcev^1Kq%d1c9;fp|)2BR0px}N_ z7sn8f&bL!f^Byt~a5>(=q@k!9z%>13vtNPcmyPU`{DPQdXPjP_B55gMd1KPi-8si5 z8K3O4*K27IlbN;SPj8mRGG>+XNLi&vNw#sXf2F1@vDH(ZUU)6zv8(vs2{WH?9=Q4C z+Me~j3^rS=Ogl@b{gZs!vH5bDXzI_49ZRks-`%lhnd_0sa~NWL!zCGaWX@$=Gw~b4 zGM8{k-KhDU+cvVY?)dU(b8W!x{#|oRZ(e&_+9iGV-wWNv@rL(I4d-3tHkGxvZP>AB QInXN%p00i_>zopr01k7R5*?8l-+H@Pz;5?AO`3Lzy?V6dl>;XV3WcI=>%j0*Z_F< z5HJC35ah}?q*16672dFP9(?_Oj&!rKEJ>!SV_+Wmq}`6d&S7S!^jI}g)fMmsoFnl7 zTpLY3fLRP00c$f`{Y1Qxh~y%26_KU;UEsMLkSvKfX z_?HdLEb&mN>axc+o?9e;Sc~PrCP?p0b_hguTChKfhEu;C*f+3^nCDC?#ki|hc2%p1 zR9kHn3iPsiOKma$3$K@f(&h}Ov?#3nExXm6u$U?HSEpFkhMM=&oC zQ>L&G@&E?J-c)~S%9JtKDV!Y4!4kaNy#s@VKMXfFv-|%$yTk2u@;ql3*xQN9pB6H+ zys%#vYKulfW_IzDpMs>WbJ7XW-AcU!nWV=UM^wnnGT`1{Uw{YqFM(6{uOv-c3z=CD zSO%3WfHU{!z;RGnU(&jYD|SYii_Dy?Abxf`_SnqFWOYO_p`Jg-UdaYHa@%-pyfwC! zP>Ho~;VOu&JXX0~ZG?t?CIjHZZQ!wC3PG$H`oJ6T2^{#Dgw4|q(%JyZnXpO4L%`( U*8spWrvLx|07*qoM6N<$g4evbAOHXW literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/delete.png b/resource/en/gui/icon/hmi/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb1bada4b8dcf60f4703ea0a5d6910b429cfa7a GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px}K^ z7sn8f&bwC~xta|GS|8rO#Qa5}DbC?S>+-UTPWlN4o4>G?U5xCQJHuS$h?#=Np(o0U z`kK!w)B4M9x&HKivFF{3-~X7d9I)UyY;1HhZ0+_%QahN;wR;rISFgSPSk8ore?ibj z)}Y9@Gg@;_uI;k)c%8emS|Y^9b<%_;SAhnla^ni&TN8RbCN%qAi(S>hqq|`@qr{CB zk=EBlx7^q@>ARQO@9EBSTjw0Ua6_EytJ)N+Ll*<`op#P~F%%CvEOF3oLB^v{ov%J8 xI{gzq8DCu4(OhbAzNN;v=5}AH@gI>dOd?lSOD+^GSPJwigQu&X%Q~loCIDr}d`tiU literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/devInfo.png b/resource/en/gui/icon/hmi/devInfo.png new file mode 100644 index 0000000000000000000000000000000000000000..14302840afe1b23e6723e205a3b9ce248a2197d5 GIT binary patch literal 347 zcmV-h0i^zkP)Px$6-h)vR7gv`mN8BPF%U)PTNE4sEDCNxLA^D_+CBlL=_t4bk)R`GE`YSDwhS!= zx1c}^MW{B~jXY?P5(=bb$B{kt{CR&o8jazcy9$A408S`DF!PsExP~$IGZkdxdw{`O z#|awwS8@xQPM=6?y_4BA4S9bP3qgI% z=g+S&#ytRZn*#DzlPAL-wM2BB62#2wd<(m|M`O-J*LCE*r{(fn`~ade(Y7n9>zew$ tj|YjBLP7o+2@Q(V^L3Q%yOrw$`2&B_cyohCo^SvF002ovPDHLkV1kv9k1qfK literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/discombine.png b/resource/en/gui/icon/hmi/discombine.png new file mode 100644 index 0000000000000000000000000000000000000000..0d6b99135d4eec8ca74054495707371b9d4e3af5 GIT binary patch literal 307 zcmV-30nGl1P)KlsyWQ7_x3j#3dAy*iD#l8k^a0PNhw={qfC>$*U!n$A?<*J%^|JbB(=SAcQZ0p)+VVIwhwWFa# zubq5oT}B!HbomHz7H<*Eu7W1(y58OOlMw^Ds|^uJfwKR_#&4FbsX-`oGx#Z_td;4Pbmbd!#dZs2a< z5$FWw400o09j9;*_<`~28e3dRx? z8HU+PCMwJJt`?~0jMVr^xg-59-_?AS0{LP#AG^z`Y-eOc0To{h^wz>8+ftyN%58fe z$R@l`&L~@%!EE#xXw-NZA9X5_%=d=FLbb;Hzda{lgx@5f3w(X2;(9RmP+p@!FMZ-Q< zYd6xb4D4bnXwjuw$nNJ}69pJEfA5QLB5O~Ma|Oj}ng2hxzD59E0hq%b-VaRCX8-^I M07*qoM6N<$f-j-G%>V!Z literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/dkq.png b/resource/en/gui/icon/hmi/dkq.png new file mode 100644 index 0000000000000000000000000000000000000000..275ec6317c078dd828b64e5aead1f7e2469a4105 GIT binary patch literal 345 zcmV-f0jBKmaz@OFc3vQh#p!BB-*Q>qRs}40BpbrumPDMi~uDi z8_@ll34nq+=%fp>5OIP75kh<^(mCh&`M%Cc8fluM4mE3`d^Jc!QoTM73f1p{O0~C$ z3;`?vj2}{4y-)H`86+Z80ErDR0NPLD8OgP89j|pF(g(1z;SxaKNoyQioLJRiAhSz% z9g|dx&RIfZl5+<(uL7DlK;LHExj~>zr@Vt|Rql%xXcgqumPhXg0InrBcvt1Ow}^DK zV(mhboxFMPIIvk;Z+w%Atjm?t`eQp&-mZHIWH#*pbOH42wn8Ge_1{sEHpa-}quI79 rf`ouF?MX(jJn;V>1?&I26(#^T3)fa;HTtpJ00000NkvXXu0mjfx~htQ literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/dl.png b/resource/en/gui/icon/hmi/dl.png new file mode 100644 index 0000000000000000000000000000000000000000..ec16d8cd565ca577f065162a2b5580241d0d620e GIT binary patch literal 2902 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 AJ^%m! literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/dlq.png b/resource/en/gui/icon/hmi/dlq.png new file mode 100644 index 0000000000000000000000000000000000000000..6184018f579e475073417ff37c240264e11a7f0d GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkT14 zi(`mKXY!x_|LvJ=8H8hVB(I2NW@Y_jPn;F)qPJkStIKk$n1iK%f0eo=ed%AeE3n&5 zS88j<6(udENw;}61kJe-H2a;M)E-B7J&82O;|C5fF!a32BR0px`D? z7sn8f&bQMX`I;33T=y@l-g|7#6SlV(zp}l1CNr-gZ-t_6yo~7#lRvU7pE&l+yioBz zP$^f?%kzS=Tt~-CxzMeaEL@QcXJ*#&Iiy>LaG9)rm7P7gqlaOh*oFTm3;IiS&K#Sw zbmP?B4vHIlnH%H|xLo@ek;%B$tZq$m*|IfzzV^mgTr6+PxEIU#%ER#6HKnBr*LF9> z2CqxbSz6Y{6_xywXU)Dz+2KRy|JwQ4k!Az5D~AoQ}#`YYQmsY|zG*(n|0T5K8Q* z>`bt+p*Z*jV6`p$1Na4J)(pwZ-8;S#i3O9qu15U#Sgk&GUlX9!QItnZsDdh(Z zBGf@3GLnVkorMBiDf|Y|i`09nA>c-_NvNd}o|u_Gc$}!1=E;APDrCY%;wcaR%mW!oh&zo)8DPb0N@9UjD{htll&t90000< KMNUMnLSTY2^U^T@ literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/dr1.png b/resource/en/gui/icon/hmi/dr1.png new file mode 100644 index 0000000000000000000000000000000000000000..727edec5bd5b843d29416b97c873304e265dfd83 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkR`x zi(`mKXY!x_|LvJ=8H8hVB)4WMQ2o;5mKb1V`A9|NraVa%!9s zejF9#Hewf(S;A0LHKDmQp{7MYsc>hFiJ<^9-=dX{&mXfcHhr_gb+K3=hlGR#Lt(4p V-sLx=)qu7!c)I$ztaD0e0sxwiIokjL literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/drdqdz.png b/resource/en/gui/icon/hmi/drdqdz.png new file mode 100644 index 0000000000000000000000000000000000000000..a9157540068dc2a193a53e338a25545ecd86077a GIT binary patch literal 390 zcmV;10eSw3P)KmN7~LK@^6+h*)ay1Oc0Qokxf_NM~t0f?mK2Sa<{D z2^4YwBeoV={f&j7wU{;_DbooHq~pqGTY9`C2~Buy3q0Yl*AoA`BQ+-VGoSx9>FVe~f*HujZ1?}Ih7 z5ikJylJ3oHH%cezstu^F8Mc7f#{1C&mu5C>1N!j@@~jSkqN4qwq)`)4T}EfX%ptR+ z8P1z#HW%dW9Oc>op4}eDEc_-g_L?1e?7=sZWwqBtQl}~K4s5&MlXUxQ zpb9M7tHY*c>*s*7&N@l4@E0!Ej=x74?{e0ETFfZ-2_baLxgmtd5JHi=w$bS==`9() kG+Dd4%3Is&cdMNNAHt@kK*GqZ-2eap07*qoM6N<$f;C^PyZ`_I literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/dydlq.png b/resource/en/gui/icon/hmi/dydlq.png new file mode 100644 index 0000000000000000000000000000000000000000..8543cbaee41807caf34c57ff20459e9ab3b034b9 GIT binary patch literal 331 zcmV-R0kr;!P)KmN9AqK@^5Rjcw2(2iS6c(s%@mw1I#JNUo3@B?n01 z4fY7zy~aX|^aks&GBAS3>h8?0g0eq6W_ir;@!tNtnL$~WTtmaFP;LSwDVJ1Anq3qW ztNQ~*+gnlrY=9@=8TbKSfHyPCPn{b@LNdU|_#izGYj*BzO6yh?xoxO29VBV$!+)EZ zhfIJq@Cm#E3*fO1g#SmU!a0{Y=Qbgx``q#Vs@!qZnnBVR@DBU|Gczmdx=^Ls)|uG{ z@Er`0@7vfps4G}w*R_R3*}Dxa>Eb&u$iJTuW_I4%sY5kX_6s}!jjC!hRF^TE`}-(a d{c|f#zz*_Fi-xQ9XJ7yT002ovPDHLkV1kr=jC241 literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/dykg.png b/resource/en/gui/icon/hmi/dykg.png new file mode 100644 index 0000000000000000000000000000000000000000..e765c11343328e7e9bd3404b66553147b4120f76 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px_Bl z7sn8f&bQMx@-i9nxc+yaBC?%P`wqvIkemZ+53%(W%s#;3u|;G9qbToD_h~T!b91__ z1Mf^%Qk^(QT>D>`24`@FA?MTgjw-H2##Sp9iFBkGZ~4dB@r3Wd+?3bR+6?KFj$dF5 zyEl>XKwdrLhb;yS=JU5N{GsuJyR7trHkW6!%(k)%io(;^S$Xo$pJ!B9oUWmLW$#_> z-X-g}y3$hq-JJa9w5IB*U7t6-+dOTB#5SJQ64w&)8E$Xn&3?b-i+4R@XC**CF?hQAxvX2BR0px^^f z7sn8f&bQY#@*Xk}XniOz*1)@Zw{Z68SPIE* zb5`PtdmPdA_2j-eQ~Qeh%r51+{?zoiOZ+w{IgS8$^WKtp8VN087xfO4sh&XSUrRFr0JwBEM*6TC62#QljJ&T z-}>^2BR0px`A> z7sn8f&bQMJaxxhTxXw>v6jRvY{`^VVgJ};6`==#HPD|8`K2#;uFQ;>Wsl`L#P*ct( zPX&cH?K@ll8`Y~#XfQlYg=ncUN#_(-#_j8Q$kn}<1K?JC39|CHlPoFj@- i;?LH%Nrp(U)G&O#Y<^JiYzY(4cMP7celF{r5}E)*uy8a0 literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/ellipse.png b/resource/en/gui/icon/hmi/ellipse.png new file mode 100644 index 0000000000000000000000000000000000000000..1ca597462d4144e7934346b90151a98f3d2f2f01 GIT binary patch literal 369 zcmV-%0gnEOP)KmBDesFc3u_OzxxvcaU^oE_)6gKnYF-aViKUm=4H! zFQxP&%Oo7B( z+5@Gk?)!X?Gv5F+RsHgPhDuj* z$YNvBuG2BR0kesKB zV~9uR+i8Y;Oo}2d^N(FRWWD2Th?ty%O>_8-qH}@HueGM^Z&b1L{GRW-xBYupQ{Bp}1-@AtFS%kG*gy2F$!)YP*nF+eRUv_) z>_FkcrR`S?*gqY#U`)?`dwYV1(E*XN#aVx3O9R-qvYs++=6tTA`8+k~uuKLUAGdd@ q9$TwfpV=q%EPbB8yF=9;uwGuKbUStWl?I@r89ZJ6T-G@yGywpd99>ud literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/equVertical.png b/resource/en/gui/icon/hmi/equVertical.png new file mode 100644 index 0000000000000000000000000000000000000000..ca1a9d8a9975cad4e034698b6fc2036068f42d11 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px{AI z7sn8f&bQMx@*Xk}aE%v8v`)Pq zaqVQ?rJt{#oRV=3JMFfQPo^5wClw%x_)ii;fA3Qv65)B8#7u$tGg>APkr`sN;a zx^?vfVbjOA+&iSg52{x!=}`#Z_~E6l(!yLWr_kjJy7x8Gg4{ROZokA(XBVm2^+qcB Q70@#bp00i_>zopr08RI2DF6Tf literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/equalLarge.png b/resource/en/gui/icon/hmi/equalLarge.png new file mode 100644 index 0000000000000000000000000000000000000000..0091d9e1a4c53fe483ef78227a8a698b2c77336b GIT binary patch literal 428 zcmV;d0aN~oP)4md|O!Pz=VulpG7m1jUe(PW1+D2gnK~BXod5+YLNI zMhJ9(v>T)+odTf~G|;KkL(bdY<%sk1_0O6bgW;y&_}xP2Ia~B-bPbDv9$Tu_J(8Cb73qci#e-*#{xej+ui}#LW8>kw|uz17%HnVw2Cc ziVZV&q4+@{g}g-G1wliX_Zq+hfF*#vc^>WU;0;SeBA4{yR$&VOZ_NA}@*h-@gM0ya z%EeTJ0ubrf??pihxdG6eAk6#&;2^T;2LvtJBeR6p%zQAFh&=-MR!EVhDmpFU#>s_R z2nwaU_C2YEoPk6xB5IvaR|}CGexmz|wq|F~^}5h~@+@P9h?;@|IzQ1<(%H%c_O8LJ z0??VIX5B`wGFGfy$wROjq*FLJATI@K^*piAmi7OCzgy#g0Q>=2 W;Bb4DX+d}Z00004l|635FbsuXii`&0BXoUJy?3aO(B3RZ=?&Tr-IIxH zj^F~>T@YXanUE+uH9X`29wbxzK#4!QaU8LQ9yXx>*ryAUea=WkJ|ib{&h6d5kAkmV z1e$ZsgH%5NP8G*qUvAw2IHVgn&`CtHS5cC;C#hHVlJ2dN3?y5UuaQkIqPfmBiUGg{ zfJX2{@=ZkER|Q!Dd;@3{0^n@GtZpt?l6vrJAcgcIGL-E9`$mny^m~j9*GLA1Jp*VX zqdV_)UY5d>_97y+c9c~uqQO%5dW-W^6OcwgvP-ru_Snr5nELP?-AAO?bTs4kui~vv z&Iq-rBEl_9kBn5`^$=loDtAY-G jXw6X7{{C9fHXs1MaSU4wcXX;A00000NkvXXu0mjf;<2S3 literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/event.png b/resource/en/gui/icon/hmi/event.png new file mode 100644 index 0000000000000000000000000000000000000000..2eed17f679fa6b407ffdd1fcb6f5972c228ea53b GIT binary patch literal 418 zcmV;T0bTxyP)KR?AVtKn#5_xkCr!xVq6npaVKE>0nE62`(Y&ARXXz zkejYf2T*|-&%Bt$mNs?{fnm^$F5V}-m8{R+v~7!P$n8~F{v^>NcPJuH0LqEJN>!~d zA_A}h@Gz06!!F&^uIeleA;b_u8$zf(%t<>8vC+er|42mclax(KU5};hNW5aG0NerC z4)ZP|n@-bj#B6C(O(GJJM*szY4=0*}YDLxA6!eiNN^VrCYGd8b5@LJXERl%309XMy zdMP*~6>V4ayE(>j<71fW;y8bp^nF3f-M?#xED=v|$?f~pL4Wi`?z>aE3 zr0t%*+=$YfL=mw@N=^MH#KwUSpGZ{?N%L8Kbf6BUOqzUjZf;oSx}o87ZYtwz%D=H; zmsZ7^RY%}Ov(9Ua?3+PEni*^2sH*OoIJb{p=PbV5;r}b>mlFZ_1bRQXIu33P(f|Me M07*qoM6N<$g4$!So&W#< literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/faultRecording.png b/resource/en/gui/icon/hmi/faultRecording.png new file mode 100644 index 0000000000000000000000000000000000000000..168f5d0415aca6645cde22972bd5cbba0dbefe3d GIT binary patch literal 555 zcmV+`0@VG9P)Px$?DD9?$gF?Ht zsNhg&pdE!yg+c|vb21iMNTGuu4xJqA;83XBOTob*xu;&A!5EX6;#&$i!@I-1@Bhv@ zoO{ltFbwlS5G(^U10VFKTLqnO~&H0U2Xs05>~8b!HAy z2AMaBAU#i3t@v;15w*NF#%coCBEMQ|@2TP?fGGf@s`yEyUjVE#^N)Xx_EgkcJIGr5 z&^Z+%%5@ji^*D}~`W1{Zb`#JBGe0@aS2vI`_VnfI#5i|}lxh%x34KwhK-=q~^Zs`^bt>g96z zb~bzCDG}DZGk`v0<_|qVSLHvsd$$F!JNP7s#+o< ze?^V}{qCH5SFKh*w>vQ`1`La#Z`BPu!~fA4253Xq?+jN#2H7{pd;&0`s*57B+q2gV zBG&Ir6xn?uOafYOHk+kOAOQ92LeBorC!+%JGprr7m&};-&AB#^Z~Mh!aU?BFqtVS@uk<=N7HPx%6iGxuR7gwhl(B0RQ4q$zZ*PkfSG@Bth@hAvmV!mZwGYScRTdTo6f9CiNWelc z_JS6c7S~^V?|FM=z_qZlut_>WEi3}ZWrcu;?Cr?QWi_ss;H_|lWV_v&+24HMn|Z{H z9?pn^Gf-ux|5NLNAn=t^^|CK%nr2Co90Wm7S4#OsJWbPKk|e|8JqUt1rPSO>argbu zx-bmqN$+DBBqE8m=0+GsuSo_)TtqUGc7K1c;u;CV)>9H|rTBK1aXpS-?*0K1ksgT` zMZsvqez&XN9)T7BxhWz(;DsbsMe42oisOUCF%*}AspVY5&)7!3B@bd{}hw$y5V0>}qr%(YWM?_Fcon#+~WXl%=2 zx68(8P698+2|=5DIiM6hG6zVd6l<$;Jd1mpsV+al7>^U>9A zx4ZY(pyPW4!2K*CdC!gRggxp5>}A>ahrM3!%g;Tkd{a(QIJ-+V3|o(;XsmK7qo^g7 otEVWOopn<*^-rm1iYnXp0~dKJj*nO`;s5{u07*qoM6N<$g6EDHvj6}9 literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/fdj.png b/resource/en/gui/icon/hmi/fdj.png new file mode 100644 index 0000000000000000000000000000000000000000..d8d2d614111a328e2206b33625932244939313ce GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR01_nk2 zPZ!4!kIuJY(Y%KZcx?C`6v!81?+&NQV{Q0x%tftk$ zbC3Qs%)iH+GV`W_*p^M~40$$Yp^YXlxi0y5ZjD=MqaS;Yht*)VjC9cN{5+_@}LhDW6Zyyb#V?W-t>mR<=-I~mrwbkg~{^D literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/fhkg.png b/resource/en/gui/icon/hmi/fhkg.png new file mode 100644 index 0000000000000000000000000000000000000000..2ca61c1acfa3fa6232f3cb9c634c332245ec89b6 GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px{kU z7sn8f&g4J;|JyU$G6=`!NPZDBG%_+XFf#g=o|00sV5RGmhQRI<> z2~^7l#0EdvMObC89A$T46Y>zT5N15Mpm~>=7{9#3K~~ZE4PyR`F09s!@|+7KdA`f8 zoN>eDLBq4%Y_lR-4wsipNJxBHktaCoeVl{tXT>o2ld6aR|Nrm!(S-TbU#B(uE@n05 i7~Hy}#BX3=z`&5MZf5pS+-g41lMJ4&elF{r5}E+CKVcgH literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/fileSync.png b/resource/en/gui/icon/hmi/fileSync.png new file mode 100644 index 0000000000000000000000000000000000000000..5c10001103b761c9fbb079c0a979066f65526523 GIT binary patch literal 396 zcmV;70dxL|P)KR?$tvFciEZ{#(YlFR}q;gE9f#05JjW1TX?jP&NQI zNWX54c7mW+JxiA3Dv1M;khq`7=h)|W@8vnOrfDz*E+$c#Qs^=zNWKENAGzgerM2=e0vP6aCCxDxjKPQwf>_peWI)!qlD?z7F>h-S)<*X~o z-`}r;1)#E1a^_g(VsTnk$fS!PS*_*@<^V1_yyoj z(gMI0fUWZn0LBTqT_+LCMX*WI0YKKWfT1}Gc5TuLNj1q^0NG*~8j;!aC@I^PoIm`8 zkYPbGdur#OqdXQ1Eq#*@l2v9tSh^o86k|owD(+N`$@S36VegC2s?5KS%1b!F-knF| qt)yN;*{eKmMJ1i#|97hl0KNfOQ+e$$c~zZk<( literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/fldkq.png b/resource/en/gui/icon/hmi/fldkq.png new file mode 100644 index 0000000000000000000000000000000000000000..06d88c13ee45f9e8e488151ea73ee6d92b0b6b4c GIT binary patch literal 710 zcmV;%0y+JOP)@L(eiT(Au)^tge~P3Tbr7i1_ z19tY|>npSkqd1KpaVPwvDW#T3Pl*43@2~{h`w8_+-3sMm&*CoH(JiKwZqiOEjpA>m zK;Djh%lira*Md??m$3@>@D85fmQo1IuoRba&g)Z38*nP3zKvJ#dT{=U#c_x|larG_ zHzRs4aAn}I@^-QEqnsrJ5xAf@z6jAwCBNf%tkVfcokw^+)hW zjPK)HTvaM_SC^3TKHy=_d5=;}cdKb~{mr<8ctmrw~^2)q}# zKgiqIp`=PJk}BnI#C$u}@2~N-V!ms`Ochb!9efevkMMr@$CSIPKCJ3~PT?#6KZBVN zTGotcG_W4-73{`mxE{W#obwZ0i}7sC@7CQBD!$>S(4xSWZo8&5&-HkQfyyg#Eng9R*07*qoM6N<$f`aKKmOW0xKoEsrP|8R+5(l823T_Z91$B+iE%Cf{5x*3Hsf&QX-m$hbg4`2&m z1K?Ka1Atf0ll*M+XuWl2_6Q&g0J-8S0H!2AVm{H0Oap;gGxm@=(pwSRR~VKM;V6 zp4T8dU4SBH-W62Wdr*nTy_voJ2k5IIcXxFV$tPXuol+jxR|k!GMwNO)dVyq|4uPQS zqgsOv(#6YQW?5j8=sdmw99zs6+H@W!^(Hn}w8C%A1?{4y^=C~#CllyL08T*Ybjjc^ R9kT!c002ovPDHLkV1gaqn6Ll< literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/glkg.png b/resource/en/gui/icon/hmi/glkg.png new file mode 100644 index 0000000000000000000000000000000000000000..bcdd73e270c80bfea84e779433f905f514c470c8 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px{YQ z7sn8f&bQMp@*Xnaaao^J9DRXPg3(N2v5E8nj+qSGK3F(T?P<}v=^G`b_+Uwm>htRs z8!ziU?-9FYy0FHiBSr4`vjt1D*tB+)s(fc)YB-#t#VFzOWS^8v5ktYe&SKGtleZu6 zl|AXrm~ti1{=}4>%D&gvGJINf&uj7a#Q~g!wsIL&A5@KO|BG$m)X?onudKR?!VaKoDIQzcio$3ZM@S(0~TE0qURu8qk0SRs$NK z0GBt(Tz1{wxet-totI1ucHet5CL7MWuHp>bPEompzCy^=Z=xtVbOe=B4(ER~bzvA9 zx#xLL@6$9DK@d=$W!YOH<7D7(gpE~IQ6x!1gu^gUv~5dko2H@bJkQuiMy6?^D2jsK z?S3QODab*ll%m*H1tU6q-~YTKpznKf7ss)&0q(gXm|!8S>$;8%avOImLd(z!5aoF; z#&M))s8ok8vMdXU)OBsG$SQ=zAm@IA03x~&x0Q#6g<#AE*Y=Rx1Aq(!5N0w2a&9pO zgiY|UY+)4wQCXG`!R=-Yhm_JVW6O2C9EKzC+egs#&u|HyEF^@u18{enJ1)n58UO$Q M07*qoM6N<$f)lio?EnA( literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/grid.png b/resource/en/gui/icon/hmi/grid.png new file mode 100644 index 0000000000000000000000000000000000000000..2febe7705ac0f81c3766d855e6a51ca787339cee GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkSz{ zi(`mKXY!x_|LvJ=8H8hVB)4`59cc2saP{icMIxK3zvsD?Y;620$dgbkd1m{MCmR|c zPM2t#?^+?uyzhjnDK`(Fe6QO3iK!Pqc;D+;+&ek2JAr{gY^h@Y^54s%fEF-#y85}S Ib4q9e08E-VegFUf literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/gzp.png b/resource/en/gui/icon/hmi/gzp.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec52aae6a26534a0cd5e39893daaa16fcee3082 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px_}- z7sn8f&bLz!avnC|ajo}yAGy%|qs8wTkGw-1lCRY@9{%G#} z{Fu1kCt%RjY)M@{23Z$e&*1;b)9oeMfj{bF3k>2TR&KhC5r*pVqQIJ&?XGo}uRH+Jg+svc9Rkn6qy6lJsp)mVfhl z8=AW=Ep(UKDTPHIE{@gzd!|g>^kx6Gu9$bT#CGaNn_pYIv;7zEZAaNF8VvG>go=A> T{~kCA^bLcjtDnm{r-UW|-V1QP literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/hgq.png b/resource/en/gui/icon/hmi/hgq.png new file mode 100644 index 0000000000000000000000000000000000000000..cb37d9840ad7e39e3dbcd0eeb4f44a5c887a3753 GIT binary patch literal 327 zcmV-N0l5B&P)b;@5Jlf^VOsa;SL>3TA<6+La|fVK4!~771nDV|0+Em$I0Ze$P%xH^jThr}<$P&1 z(){oFE9=j~&|pHOh}3#nmI*+f=e2K*X&z^vzgsu_Gb3Y6?X=-ykN`7aZLJk+tpIE7 zCA~NRFTfU%hO<>o6q1t35tumV#5pIxM0*14fKiOmR0kb^6u^5g-uq&~Qs7TD)6k$t zsr%6S37qcmC*Z51?PT<-^*f+hX&uKHwL$S4&oM?nTHgYicdh#vqovjb8ioo|<;vPl z7;%kmQ@jt#{Sp~(c)YMXdRW*32`~pXr6*{kz22Un8&npyHG*Lfk=kj)J#Ew{hG#T9 ZTmakpW)s4W-#GvP002ovPDHLkV1fPx%vPnciR7gwhmOW?`Q51#Goh&3picKmD!GI|uC~RSoBEz9G2-z?>-$=@-F8fJ?6H z-fas~%60*q4}#qbog(T)*IF-A^gl-p zd22Z$nXxQuzEY{&E|<$;$ErI?j(p#L-z~2v>Z8fY$y2?(y>oyllC>fdk!^tMQ4}q# zt*w1)25@YU*7_zOOCh-3)J0}(tTxe)}FiKagq8v-JDp7+c^^Z9&V zHaqxQ1fx+D4yTq*YyB9Ic@c~_j`O9tlcPLSDRmZ*Z4o><2FTw0E#FtybtewW)y|x? zwo3qp66Z(+MaOZLmC`>=gs$s8Yz2uRM>dOso{`ZgK;nL)9GTpZa?kfWf$XOMbNlc% zprl@>wY>#!r&YRk4Qr$$dHNVRs!IWIq_wPDVM?hX5z7R&kQ!8XgT9X>HiBUHTD#wW zy}SoXB4WyWzZjBAXQFPn!gG>kfOkC4J2ccxO-&73R%THI<8h1|#vPH3z8hkaS<^tQZ%kmv!MNP3!hAXbaUalaiSVU(M%YIVoa69)#eBw qB4!=$FHGxIbl* zx*O05%nx4E5V=LMgqxErMYisJ&eJ`)NhzU*?y6804ITcS)l|v2yHj=^=GESYOC@BEgxF@Sz>W%<9N&O{LPM*%Sr?taRde5pgu%(5< tT+eM%_n#_xVMDEFBKVr6<+g6|pl=5LI%|zhtuO!p002ovPDHLkV1jd|k;4E0 literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/hotkey.png b/resource/en/gui/icon/hmi/hotkey.png new file mode 100644 index 0000000000000000000000000000000000000000..6c057b65c9ddf186653ac9d1978747a9c0203e1f GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkTkJ zi(`mK=i8|ld0Py4obL)VZJM?j;Ozrx%{>&*iHh^U4-_XzsG z_{?$Ck*|t1UtP)Kmc2~_K@f#M5IKZonD9kF1waS1Km@UB@nTxD(2s0ZCd&>LlI#DrkuI z4|G(sNYW)RAF`&_(E>PY4w7_Y7x;!9d+5CxNYV&cr;GfKh;;Mm;nQZIh*&!x>0+Ml zfXO#l8<3S7uYe0+77>p?IvoSIz_M?H;-=~&T-w>aVZ|EMy(QfNPY$mlqSwhrgRXZ( zWUd|@Zt~S0WY`pVb{!QLZEeBk5xxP}l4d0fs$W+ke-KrDt1uvvbkRO)FH~;_u07*qoM6N<$f;Y&EFaQ7m literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/jd.png b/resource/en/gui/icon/hmi/jd.png new file mode 100644 index 0000000000000000000000000000000000000000..f15f4a034e28041d00554ac76ca52644df0d6698 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px`o3 z7sn8f&g4J;|JyU$G6=`!NL~@k%*y)5o;WMoMNeXD#+5~Z-E9+GExhx6eSKNk*w|Qg zf_^XDqAa$P{rdX&`i8SMVm5sq2?+@+jw|n%?~YJrW_D&?Db^TMCeUxAXB)wISIe%( zj)~dV_beNeBL`D2P}gy(6a#|~EBkIWBwRSyux!~g7NEJzCJ(uRa{3Bx_7}w*bvLSC jU%dFN?k5IjW@d&{%hlIi41ekebTNactDnm{r-UW|gziv( literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/jddz.png b/resource/en/gui/icon/hmi/jddz.png new file mode 100644 index 0000000000000000000000000000000000000000..5e4f6eac87fd4d83439c8a76ebc405f76d076d34 GIT binary patch literal 371 zcmV-(0gV2MP)Kmb*;@K@f&NBXUy$h-e}R$hi_I!L9&003-@96#yX_ z9oTe$qlu7Q0!Rd8hgOWAmxQk}_Qhi+NcH)gK%E-ZTo&Z3sN z(mS&(#p4*bi$L6<4EAi@ufag3@1h+H)LUI2Y>LS;da$ZaejD$)y;DqH2e&Afh}=|` zY-;7gTaT_Q^U3l*0o_*StM^@`@SOsSa$Hp#&;Cd$PuI|SVEvZKR#A@-be4Z{$_Fo?EoMNt$S^I8l@hN_yTQ71wYCIQN_ zqz{BymeE?C=ZCG^B?1Xrf)-+InkL=R9#FutEachV;afzU6dTdTBcK=*!AR4T?&)nJ zv}m4ZQP(w{sH!T}8YD*nxO~KjZ}D&&SuD@k6$20i0TJlBP62BR0px_Zt z7sn8f&bQO{@-i9nwBA>&3R_TmG?zhnBja(l9u{ebr_%)UniVFzd^EpBgLRks(v#hP zRQo;~FPU<|d9~h@c?(KY1O$B<{JLt>o}KJo_--Q0|Ewv~F2~+-m%73f8p>(Rzq3xi zl%L_a!egd{e?eC1Zb>Hv27d~}gnAqWDY$kV1AR~Fn8jsWEtNj?_luFFk U1j=$82l|J>)78&qol`;+07`CW%m4rY literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/jx.png b/resource/en/gui/icon/hmi/jx.png new file mode 100644 index 0000000000000000000000000000000000000000..717bb364f6250238d3c812f72fb0d0cc2d033a76 GIT binary patch literal 366 zcmV-!0g?WRP)4mN9C>U<`#ng&x2s2$?(O2tG!KK$9Dk9w4+Qsi)8} zM+o!|olB;ShAbTde^7V^<4G#UgbD<|AC{hFJ&E5+DNJFrNm!;NdWgPgW)-joDnTvK zlv3JIe6&X*It<`?bfO;FQIGQ|37KE#=84Vht2<|6Js|AB61d2hsn{fmSMe=xGh|Vc zN{M&CuY4!0isT5*k@~R$9$gc1Kd(krT~FEz;8XAu@Dr7IW;5K90w;MbEM(a^dJ_Sv z&^JSjEGh3Y@H!fMmrK=!@Ge21{#?RL$vJ9zSd*EfP(|8tFTjVHb?`H=3Gci_MSEb| z6T?>6=oR^wzbZN1dDMyqeL2gUOlCmd#DWKoEr=h`Un)*LNZv5IS%Nq=b~<64F6T2PwgH zkeud93Ah5ImEKC0*&UV@L=lX%vgCblzMcKEZ>DL&CF1rXl&c1joI?9`P;LBE5Xo&# zUonW}J;@V*gCjcxP0&_>WDJl80B0x1SsEASRdfW<0C)kgadaDL8hOe=n)g`A&dlC( z3DmcXmF3nfS5Xvq9%KRQ7TzMzBY@G&Qd9AywuA-kDDS7Za|U|KjDGmSlLTGG&9JV> zm-Xa8uVK5AY)c8!Hu4sOdObUms{+Vsw(I(oCJ8dLes<#b9!!1vc<$sa11VZ<*Jl7j zY8v%!kY)Zgt|9XCy3qpPR04gMK3Z*ry!8 Y2cuhNP0?o{(f|Me07*qoM6N<$f^iz4bN~PV literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/kx.png b/resource/en/gui/icon/hmi/kx.png new file mode 100644 index 0000000000000000000000000000000000000000..82ab0e8ca7be9782b9ab773b6da519da1db86bd1 GIT binary patch literal 480 zcmV<60U!Q}P)KmOn~EK@i4&BbFBL2nsnsE+D+pLeb7nattdCp1{`5 z%El(CEEBY`5X=EmXk|KMp`^;l!mMmwcGnjT0l|e~vwvp4-EY2`7g1GK(biUi@+W~r zye%pySIT`FJdKVtC z40)dcU5lZMtrN$s^|fN;g5Ih@U18J>gIMNcWKQh_a0=n8l-kQ9Qy40e&h#A;BFm=fry-=od`xiwkMa0K_zaCTT|9`iB)__mm W=j;`RJhnjq00002BR0px`M_ z7sn8f&bQY#@-{h$9Q$a0?AVb*=L}02xOMHK!wXo&3)sv8)C{hzU$}8o5p%S)wReu* zu?fx&6C@5@-*e}*>i#{}3M`(JF1S?nYOHPfwQt!HE%9=r&5^r)c6YYzTUNekyUrP% ze_I?cN!{4_ly%1MZ=th1E}8YtxVg8Ct~vk9z+Ro?Qi^6`9ARCmiLQqIm&+Vy6~6v cuk9BWZbd!Thyp1=psyG_UHx3vIVCg!0FO#=#Q*>R literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/levelDown.png b/resource/en/gui/icon/hmi/levelDown.png new file mode 100644 index 0000000000000000000000000000000000000000..5943b3af34e0059375dff45f8b9c6ef38af89c1b GIT binary patch literal 310 zcmV-60m=S}P)4m9Y(jFc3u_QF>Nj1e68h=FdS!%LwVO2w5Ovl}tbi zuCNdZAX^0GSJ+1PboRG@(f2)D=&%U|IK~4>A!l(jYbQa#Jtqh#K7jyUK$i%pfij+$ z0(E8*3ti+(SAUZs&DZjDM+f4LBIvLOS(=#t_;y~$pN}CL`M_D{JZhB+gy=Fu9H*) zEu)NaNHDY6{90rNFBH7+Y6z^nN8Z`fho_~G)u0sZ=N{$K8#Z24k-`g%hX4Qo07*qo IM6N<$f<&l(_y7O^ literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/levelUp.png b/resource/en/gui/icon/hmi/levelUp.png new file mode 100644 index 0000000000000000000000000000000000000000..4a800fb56c6c7887fda63c7124113625685f0678 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px`S{ z7sn8f&bw0&@-`drxYldEGvJaI;oE2IE> z{%=8#p@q|QXAMgQrBxj(era}eWHAUgcs}~;_$i6k;pEcbgg^!MAgj}y85}S Ib4q9e0Fiil>Hq)$ literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/link.png b/resource/en/gui/icon/hmi/link.png new file mode 100644 index 0000000000000000000000000000000000000000..58167394f5f90b2c646b5b7b40ef1f0f13bb4f12 GIT binary patch literal 1141 zcmaJ>ZD+!!c~!eAg2g^^8h(+^S*S%;J=qEb-?gCW?Deh@)rNQXXGo4OCigS+R2-|zST z{r}JZx$klVpLtjJtfnZ+o6SghGWNJ{M?3lc^7)>-WcV1TOSpiBa8t>98dhHJy=vs{4 zAC@`UO2LYrsoStnA1JEz5jCpOeR0rR6N!KUu>xwwsOgBc7`><~lDWIh(qIvSM`H9_ zQzbbEQpkoN%y52{i*O*qGkh>42*OSf;CPPZ0xTc!^MV)*h#Uu&9-2h6wIMMt^)JOD zs~BCu*b-T`TCFnGAcO2-mXAiGu0|l>CkVeYZepe8HyvM7L4uBI>lW6L30y^`jK*+` zCQjd`U|7qtrn6KgQZTlrSS-(QZc0s{EPohk7|Un}=ixiQ?-h26;}&G|&_QFiN)B$w z=Z3PxlnoV(>>@&=%_`<92qUM0ERZUM!G7J;P}NyP%d(g?9jurt%t|qu@EKj##85bp zN{4nwxRlV(^JyvBpNyorP&l|N9T9?Ip~;nyI%YrmBT(zN zkpUJH7WLL%LM`={xLRv3;g(#Mm|@*x{ogS+w@B}})8(cmi{-Y5Ch2vXH1)&3db-Jl zc#@Tp#oFKHh1ak9JTYp$=j?PNeSXv2BYIPJs!%9UnT-j)ulTQT?cS*`|Eqf#&$ka} zJ8u7;@OB-ah!+>Y#MM*xyT1Bqja8B+;@cXJ+Z&I+Ph9Mnz?8Cf^Nyc82Tz(G&ApnA zx7qQ;b#H!wy2GsmV_P?DNkmtKqUT=xxwGx-N6E%W$I4C-G&;B6%Z&ay|4H!jv&m0U zZpYc>N_zd|^L9Px&Pf0{UR7gv`)n7;iN5)qppcaKa7Ri#x$BG;B(yA0hhhcc z$Tp|TIU~qF!4|__6kLYwB8UYE`eqMeg&;lYL*`P#A%@~~r_L>HyWV>zfu6_n=l40k z^OxY13OOYQDIrSf4FF95Y=n?6|2wgi(DwFrP_NhD0T2No5JEmAVm!}hO;1m6rJ8^y zWHwvs&zwnr-rCx#D=8^vu~K@e&H5+a1?4gzr;hx+<@R904C zcXt;(Jx?${KQBu_9XkRkA&JpyYinV#R7+TIZy#o7XOD#?L2`s;k(YNCD=XiUf?2KC zV6|GYzrT+_;030prcz>ukQ`zA;&8O0xVRWyU0%%1%_(B6a%gB6;c!?JlOUx`+S(pU z$i~J7+S(o=5@Dx1xl~nE!DhQDRfa;ZFgiM_iV?H9<}$}o5rF=nS4G7o*zI-+ak<*D zv$KPuqH{+eRb=57CBS#=Dj2)29&Q1wqC(G${DPl^9BBX_7XB(FT zfj~s3(_K);=+kgG{6HyH&5utIEYAqRT{e(Xy3BEe9~&F{0bmk9c_KzBdPVWgJ+<{r z`IY~92T>4@$3x@e2BR0px`b~ z7sn8f&bQMx@-i9nxW)_E_7o{!*pbd`bg1_b$4=fCcMT5Zip;X+T!{IP|;J?>zU_+q6z=mJ8LEZ1Hljc_939!K#H^96OlW zUGf-KHToT}oVYuZ$44P_ZsX0cU`7uYrUK6;>Y-oX+x)tl|d*0JAK~OHOk-rvzGE#F}%#y+cv*i;4jb@44$rj JF6*2UngG)vV&MP) literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/ljbyq.png b/resource/en/gui/icon/hmi/ljbyq.png new file mode 100644 index 0000000000000000000000000000000000000000..42ecedc9564a2cbcee41560506b5d70097dcf0b4 GIT binary patch literal 467 zcmV;^0WAKBP)~a*8F@dhSIEly%z$<`< z%FsUall*L3qxFtNBnPlDU4_<}>3br%_11BZPDJJgYI$p1Da@U&wiO`Z!2?Z)`fM) z*dUqOar8M0XrlC9n&XW24q$Bnj;TdFpg8Fnz|{0xdM~sb+JL+}+5z}BARfJ^>bvU= zl%lC;-W)HFVtyQ)ql*@Ok_yp<-YWois%sG-g6wr{Rhd&Wj|_iIQqfE%qpFAtsD&pi?gIb-002ov JPDHLkV1o2u%7_2} literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/ljbyq1.png b/resource/en/gui/icon/hmi/ljbyq1.png new file mode 100644 index 0000000000000000000000000000000000000000..e8384f45975b2d5479aac2aa6cef106e0797a110 GIT binary patch literal 533 zcmV+w0_y#VP)bFwri0Bl+J%EeU)Qi$H^V`NiL=*yO8>+s1D~9fhnLDm^oT($CssZu<;E0*e zRa1S@DQSys_K1k60AK{*(A+T*C0}L^QxSgxC^GXnYeZE6=^G#_lA3DLhs^cG)*6)y zNHfdKecjUUqDW5r6iQaN)hWUK{-8lGi6h*iAn`SG}D$m5Pb1s)VnayU8s(GGw zyuilFIv0?33bkS~nIyM?@B7hoI=wb*!<0`Zpq^Zm6(I)VI35Q<@DT*TlQxpMirDsS zi!G}ob>%$EFsY;AaM%LyS}K)VsXDr3=JkNE#fR_zJmm{O6NWLf_29Pxw65&tzYf3; XrE0vsCBDpt00000NkvXXu0mjf8rtov literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/ljbyq2.png b/resource/en/gui/icon/hmi/ljbyq2.png new file mode 100644 index 0000000000000000000000000000000000000000..20efb02436c1afbbdaae51fdac54a612a8f9c69c GIT binary patch literal 512 zcmV+b0{{JqP)`t$$_hwtMEIqxSRCOt}*H84G zm?Sd_UWDrrrSsx_k}pINdbfcMyLb=aL3(CuM=?WEh~D;SHf;<^Q0631kv8!qSVY`Y z6aQenPm*<`fPBzL79z4`bl$N!kxwZgcj^asA4UwUCwb}cNt#XbO}^e^wF%$?n6vdO zuwArG{Ex;LfcFhoMbKqjJ-)fzj?|~X{bdB4<4d?=b2FnUkBPr@+n(BEAoPkyh zkW^fOB{1{!RFJG2Iz>{a zNT(GQ6pDEDK{}axd1qKgqUL7@^gkU~-9b8?t)=}^SYF;u)~UC`3SAS0A!_h@iXNAc VLmL!uZpi=u002ovPDHLkV1i-ji7x;E literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/menu.png b/resource/en/gui/icon/hmi/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..9a2b3018831172f6b49f895f9f3c77bcefe07220 GIT binary patch literal 369 zcmV-%0gnEOP)4l)-JoFbqYXiw=+tJVK}7J>JA4XoPH%-g)T?8NnN5 z1Lt5Wl_jc?12hQy0mBISoljBZ@8)^t75I3G$}WXIy`YF3ffLYMXaYu6{eFfA(B;Em zAD=6Q4e?J}c@bXgPWHY4gFTllw}l5}trL+0zikLf^;q@&7T%*1dHAU%y!-I55>nMG z%Y_02yN4Lhd3T7&!MMRf6B)dz8(EJ31)QxNRfvdZEn^-iT4${oys8>7;Y=Jj5Sn+w(%`6Zm^%vIfK`V zmRyR}FsSNPL?){!B+D8rO?Ru6R|*+c&fw&>@_=?{C^o*87qLHQ*q_i1+nJf2nX>v} P00000NkvXXu0mjf!FQXR literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/ml.png b/resource/en/gui/icon/hmi/ml.png new file mode 100644 index 0000000000000000000000000000000000000000..0b901bfdcb552ca25534e576b7dc1ac2a0e2a026 GIT binary patch literal 468 zcmV;_0W1EAP)4mOW0xKoEt$hbSr1Ml?QxX{abT0!Q!>I0D>&61s4M zl$4d;5jY?o-;KJgvEs04#F-#TARkl`VjYfgiqud%9_o$7t<`yLB(29QyT>9AN zI)}%Ec4cvXoAwPGv1tS z#e~9=y#imhK(48J>?iPU&qY_)`8PQM&VXAZ*ImDhV8eRsIdE-jj2plXE4f?3f`)At zv@%mo9!@0P0Db3Ne^G1a@-|yIQ(#BZGDoDe`KG?;FUFdA9q2BR0pkR}y zi(`mK=i6%+IU5XkST1x6TTWVB>SAue>GI)llX&Kr#jU?Jr?9JfW~&5loF=K!mZnA80SJ7!+Bgi><;^}=YODFJ5a|?MRx+o!)_xIbYQ^lM!E5C10 z2tDnm{r-UW| D1r17B literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/mx.png b/resource/en/gui/icon/hmi/mx.png new file mode 100644 index 0000000000000000000000000000000000000000..e44baa69b272ec61fe3fb4d57777d9580ad897d0 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0prE~{ zi(`mKXY!x_|LvJ=8H8hVB)4WKmd%lZKoCYBTi!JUGtdmw!80(NFr#_s-;?cF6wOJMoS)jqE! z-JPK{rq*arQxjibp8co&Q$eL?Z)xV{3|wO`CV^Z^?l9MN8=&axx)^93*kx60R)&J+ iBKmN81iKp2I;NJ>S^Z4^Ndus7H=|2eeq05)F08+ZiI zVELMe+nWQd;Ij52SSqoZ;F!#AW+JXl9)w}upP7$;@<@`^b z0?Z{{vPx%yh%hsR7gwRmN94(Q5eVnUpSi-I$VN6hZH-wh#e}ph!syL*c7ezPQk%0j)H?j zHwU|jgMx~>7j*5t7ZONCg%c_$D%C+8)Ip5kPL(JhmrPPb0Kq16wfbIf#BBi@O3dDL-O1A}0x@_AXCrYg_^Gl`V-hU4Yg60mx zFrEQ48dFu32otXBe)v)An2PFkjHJ`NLPXo+fS9=ku&(R-KLY)KHS+znLDS4#2C%6{ zLyyT=Q4lnD8^*RbQOTIGpp<*27pPEh@|g@iGV`)h@?g*Q7D60~vY{Xd z9+yg`RmXAi%zS|vQ$#eXZ3n;-5w1!pU(L)o2Mhz%b|BPp1_n>1Qmn#|J*_4R7KR&Eu~>W>X{tgveH96D;tIfX%$QH5u+SaG zOH#^0Vvub+Z;7x=CuqZ%u?!&JnUtA>Mx#DdsZ<(?ysoXf9jv>M2vY!tx4wN4&{(Oo z_&O=5^(%>EP0i-le7Riyln^8;0BHsNR#i%OByo*|5XS*h{V2?MUaPGg_B?Mrks=)= zgt!CHY(E&l%f9ayI$=L&2GJxUgE`D9rE1+0S(as(X6_;p<^W`R19{2!ec^dtU7u?Y zC-;dk$&7aZSGy!wZ#3v^rQ%lgWi6daf6j;U z`xMmCojk71_OGU%F3K{dnbUSP0q}xS>V`h|4fQaXDrGk882|tP07*qoM6N<$f+Yi7 AC;$Ke literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/paste.png b/resource/en/gui/icon/hmi/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..5e334740075b26e7fc6904259382323bd4c53fcc GIT binary patch literal 364 zcmV-y0h9iTP)Kmd$O0KoEsLBHwAjCD1{f!>c292k9WV5^x=JuseuL zpoF9Xa$sW-w2Q}Ui(K*~B=$%9&Cc5$DEhu<2|X=BSrWAJOp@fy@6OEHY*5e_aE|m> zKpEZ}NyK1Y&>rYw3rIQv&%gnAO~H!ssgtyEKtIjwva=EB1y}=382XjQ>0vlJo)1ae zSOj6=U1&Dru~_PIy*NsW@spslnQf+>DK8vBB|+EJ0w;#lGz?z6C4#yr>%z`?ky6f% zX1#a>$mPY|ps5cK_u?jyq#AgSzzT0*Q~hoAHnSS2f7+hv9je7PG%FVb_SYtuSqF5f@#$xxCtXxys({jS8e=;uao&wvRQ&&LR9sg80000< KMNUMnLSTYl&75=q literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/pie.png b/resource/en/gui/icon/hmi/pie.png new file mode 100644 index 0000000000000000000000000000000000000000..491b41d2f675334a6220a62f839c22e86f800476 GIT binary patch literal 464 zcmV;>0WbcEP)4mcebpKoCVAQSQ(|O2DZA=P+m7K}-kfASFNtxP!oX zE~J7$2c(0z0_U)^k}+d1L=gwRWZAnK=K1gJEFLvY!!7i16UtqJ9#a7#G671U0A|38 zs_sOj0X~5puu|2Zp*(|*M5F+Yz|tUH&472{C?e&bK=#8AU_6w-GzQipQe6cyCu{{7)47_!Nyj@q= zeVcF+wRGn4?u6$kv-|D>NT1GjsOKmy+n^g&9bH3CHmsveM3OfxW$LA0*atYEy2LkNW<~?aW%YrnZ(aZu^W-$9XGep{kXauNP#noUjZ}y+J`W z!O2-|E&>^BLO7NRf`i!5HNo8ms8VNQ67*lXzmJoffqntr33~4YPzP-Q00004mD_QHFc3wLGx^6QPy(qSaDO45N`K?>Lp z=pd9p38n(_p=B&%#3K*qac7v3#NEBx(ba0xbse|B-Az>frO^Fw!5H%lWI!z8~z^?s)O-#d2T^yhceLJK!WDRg7@ux&dnZZhN%&%D`9BSLpCn zM=^Jg@*r6Yq#|-q>!!Mfa`Mjzg*J5}a_T2Kb`kDsp)bRnP}BaQu~-B^Imbv2VBB@RO;Px&DM>^@R7gv$mQP3&Q5?s=ziA02!`+QQsKCIeL(nPcAT$w(n5^$jMTG@ILH?4h8o+4;54b!Gh9+U^{O-|v0q z{r-HvLs;cw+jiCZ^&9F7X}_n^>GV`7M^Gt2wrxjZu~<7ZIsh~hQ6!W%$sF9uWHPs1 z*ZpPQx3(VMWLa51l}ddp#{CoIIL?6}Kpznrn0bN-BLF6IIrv1_OoUb->R3r2$8jz(<08Nl0M03;o-I`YDdjGJ2AO#W5jp`fIa(=owj_`c&MN@p znauQsVp*0ewdq|f7FYTBW)s7VF0GSSO9GYBKNBN_bDan_Gd>Z`fU1~-Lt5*hih|nO zoFhbh9KcQ@st0)7^SpiGD*SU8O1)JvuBoYM-PqXJ&xLsv2QBwu^FXGd0DRYV{ng%N zg(0bNUH8WfD3M4sSXQJ5;NwIzmCN~dDwXR@ixZCjMsU`9q>Hwd^8%rTrfZ$P)eOL;6U)c9IjTI$xWtvc=dzXuk|*I%fKmAeswKoEvM9dqqKOP~Xz&FMfpkPgHSumkPDd?P!c z1n593z+}~vfg4cqHU7!X?PI=yeO#|73SOc9ODI1H8ng)(kq}7i8ma28X>PAcGl)oF zfN9CKH(>e@NJK^km^tQ^olD2IHQ=E&NJJta28L$Z19Mf)%s&A(T)*-N#HyN5p-Pa5 zWWd<2Ii7krb-To?>ZBZ3*LCNlH4ylUZoa@`-P}f?vv$7!?!XR!w*!A~VE>@bK%s31 zuPi3K2b9~n08$&uI!Fkl7VGBT=)Eh*fpx!BOTccQi3(u158pHNF>~~Npc79QeGd}w RrNjUL002ovPDHLkV1hnkgxCN8 literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/protectConsValue.png b/resource/en/gui/icon/hmi/protectConsValue.png new file mode 100644 index 0000000000000000000000000000000000000000..e5b7c6659fdaec0a627978f8fea0ccb975cf76f8 GIT binary patch literal 1205 zcmV;m1WNmfP)Px(Z%IT!R7gvumS0F)cNE9JC&@}mVrN1h_E3V-Jt&I0%B(9L&A>sSin&o~=lak} zp~YHOq_93XwX6=?4W{Tr2d&!onR|nZ!&;h$fg3|~urccfI&m1>Xi`KPHMwUw*ThAQ zf9ifux%r*n`P_4U-*e6-?6Eu^PbOgc1i(=ueyFPI&wHIow@>5y4(3Wvjw1A#zPQItYvbP$m{>71D-0h%OYO;uI@PEb-5<Nhn_>r8t`isD@oV`g*{@l-Tw3JeVN z|GJ-axZQ5+kt5Dxvza{r-D1Y5rujbH3B!ps&TvKSg<+|@MSXGz$B zK_U=wCXSiWN5rDYV?<~LsA(O}gP~BUM#OR;P(?*mj>W>iCF-Y1Rn;~{@y-CqB0^Ry zMmZ)EOQd#Y{fee(j}8Qqf^|3?pU3Ozhh$x(fs_b@prFTQy>olex(*W<*AcVt7F?_~jr!g6#yR_gcrf7}P?TKq0< zOC-I$z1z&o%g>>%t`1M0jN;U(_h7TxqK0A>Mfoz(r}{L_cR3x%?>gH`M?$MTk&pHk;4h zzkkmzbuuwAfv&D@gu~%Ytm5KgG&VNk@L_5ExI{#ccN%ubh6Jjg4V`{x2Ll^ado7{CxTJFjgxO-H{)=es0y&)VvvuM$1Lc04%yrf0)hq zPSVNDZvpr^{&jRAP3qKR>5tL3VEF*aj zU=5%Iu$1cz;N9(J*2L>BazwJ#f@6Z~6~G}PKr}AQ>|&1vu5mQ8qK`pJe1k@cc2WUF z;z{-c$vjjxHb-lnypggPFY+xlH>oIvQohGvPMFisUWWUORpcjq^MU~I>7W0{W1kb` zY!cCAj18Sv)Q04yGpJJ0Gd_p*v5LA1+bdL#T3=`1M{~b%Q<0Y^fNeKc$#<8uyRfTh zSta{9uDVf*bT0}K?PM;43fsw7#N8p4qb58R$?y{AsTSnQNUl_YgG9dB#|>qfE@v-D zUYS!w-fA8a{!zF|WM(Hd&p#u|N&c1~A0n#NyW+B)f;wC?+nZsq1(DqLg`x+QnN^dC kMDmkRCiD9L+?oaeU&d8@eVmSc6#xJL07*qoM6N<$f@0IYhyVZp literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/qybyq.png b/resource/en/gui/icon/hmi/qybyq.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa8ec828c9abc77104065dc1cc9eed52449b6de GIT binary patch literal 548 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 Zz5#MDto_}YX002ovPDHLkV1gE+xGVqw literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/rectangular.png b/resource/en/gui/icon/hmi/rectangular.png new file mode 100644 index 0000000000000000000000000000000000000000..42e9c5aae32dd03f06afa7944c2d548787964dc9 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkRQf zi(`mKXY!x_|LvJ=8H8hVB)4`59cc2saP{icMIxK3zvsD?Y;620$dgbkY1g2y(iWd2 zu{Gn$qQLI939c2Vt-QPoQyk3Y4g1Xe+;p258Dwq=Fz&a?o(MFX!PC{xWt~$(699C_ BF)siB literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/redo.png b/resource/en/gui/icon/hmi/redo.png new file mode 100644 index 0000000000000000000000000000000000000000..ce5c628447fa336ec541a806b09e7d7027349bef GIT binary patch literal 538 zcmV+#0_FXQP)JJf_+1xEn9&AchySFuP=b~re zR?wFP&RQY${I)Ir~z=~sTwvt*&4N&=B&AW$H zem91$b!!L7G_xh}62v!7R5IpH(k#hi=&EQ*hTDQ{6$O$SNh{zYmq(&`sRt&oD+#?& zdU_(!tC?-x{fMR@dm1sIiRU9x$Fa-*m|2q(dM>Vj2mf7_ddyoS_ST^4n(WZE6FvjA z$G!!o8W`TodeWm(Str8AV?PS7%ru01x_U(3q?-{vyQxBPBeuRAH2h%JNm_HvRgR9( z>49WPHi%tE4`b82qCdx4U{JEzqnN_gG17;p9=;m*or$I%zD>!Ke2BR0px^;d z7sn8f&bQMpavm}eam_zkAN#oOCEF{uyae~v(mNXaF6_5%7j|J1b&{%l$|SJuOQ7fU#EA>M{*QaGwnYKljtG-P9|5C6aSajkN*QKAkwyDI{zyI+r zDDX~q8N)lji`6{ABH=}T>wX_HR&7(+{q+0U;0s$G&x(*Qv(Ed;@PTQ`E$f~@^|rl0 Pzc6^Z`njxgN@xNArlMzZ literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/run.png b/resource/en/gui/icon/hmi/run.png new file mode 100644 index 0000000000000000000000000000000000000000..d58786e5c29835f75bece1aae8a203641eeb532a GIT binary patch literal 405 zcmV;G0c!qKmeEbbFbsx&5bwPa?$uA%5nuvfgE9d(LPt0z=xqR< z07fWJe!UUs1VxelNWpc}194XgVJT9Z#QtK(c6%`l1I{6rXQBK_(AC@q5m^DKI5uYa z9l$;eRsG1>$tHt{+|f|MsUASb=hDnqs`~P6kcb2i8osswYE|vbo&c)>+;ZwcRrg1O z=*jb(^2DL;Jgk)SJ(3>7${hbp7c!nQdQs5b?OwfF$;=ylV;rxz!S$hQ(IAIw7y)yazm_xCQ~yW z1Z=LOPQGkYO$?p>Gm*ef|Ka;h`Tq<0nE?0%6d$r2BR0px}B> z7sn8f&bQNi`I;33+~j?~R|)TJynANl%^T7$d~XR~;5D0S@K0!#z!j`5hjU;-a$8E;{j4m`!}T)F6~fzFYtwlbGou|lJ3 zvt7gYm~OeYHQHHV_HOr(i5e`z&wkytI>mldS8H$VQ@I$R(-}Nn{an^LB{Ts5ZD3>t literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/saveAs.png b/resource/en/gui/icon/hmi/saveAs.png new file mode 100644 index 0000000000000000000000000000000000000000..01142b6bbff08bd133477f9b84bea2c4d5c1ae70 GIT binary patch literal 356 zcmV-q0h|7bP)4mN8DlKoCWr5gm;=K~hj6g&UA&dTx*$fFd`*oPaC% z3e>*|H-MfZ+#pEwricxr%^I`BHd0aa59QzOwp-N%xn!@_ptB1 zq@q>ic&g(J$Xy;X1t!27uyOewQIVuMe4nt%L(HrI?toHK;qpC>uNnTQ>mpphSFK`9 z>v(mj=&X)iEuSAGl62m+!Efn0Q7Y>o_AfHCC6I>`p`p*NTLKSeRt_y%0q?*fCQG`y zAKJX(mEC+?nAwM<+dqj&o9vf9NfJrQ+Sbf0XV+~r;03tx>wVU!bdtHG?NFi(@EDT- zWd7&Gy|8T$U5u5a=dO?1YLrs+&N&CciH79(9==aSPfVc{cY{s<00002BR0px{+c z7sn8f&a>Cm)-=WA=yI-b}ruHkj+Q&3plOE0AbklH^+LffelNZj=IDAaqxheF1 z*ao#j3*%n9t#9wV#H_f;-R1g<@;lFhes!NrFxz{!E@D$u(;2bQ&ACl$%=WQutJ7Ye m@Lk4FDCftH)Zzw~27R+bXJ7g~wBrPNkipZ{&t;ucLK6T0(Q`Zi literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/sc_down.png b/resource/en/gui/icon/hmi/sc_down.png new file mode 100644 index 0000000000000000000000000000000000000000..ecee2723edb707501cd1cd3835acbaf40ef0ed1d GIT binary patch literal 15147 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 OKMbC(elF{r5}E*8wrpYm literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/sjbyq.png b/resource/en/gui/icon/hmi/sjbyq.png new file mode 100644 index 0000000000000000000000000000000000000000..c699b0235ab2d205f83594377666e4f8ef779199 GIT binary patch literal 522 zcmV+l0`>igP)4md$O#KoEr=QI3`Z9pvaaL~#dD0#fdn0|ih5B~U;P zz&%n*fDYg^*OUN~?~aDNMZ;nnq$G}%l~%i+ot>Zk#$I>IvP2v0t`#qBI=a6_Nkkq2 z%m54lJWzZ9@NRNd{kUf1DkBle0IZ#Z4adH7I8fDXlbyz+V|p zjtNI&_6(rw0=i&!#;AgcwVh+~Mh6M!J+AGjTgxmihM0*(*B6m4nG{a9Fqy3}+XMFm zXESd&E`}k;DaUt$eie~|%t9Nn5E7>w_U6u3WkwdshS7%%&A|&dcgSqddCs*WWWc=} z$GFnbueI3GiHXZ7fM2qNyX+-pp+Jrqd1g%+g>#-q%q9fAa=I(ZCXwzuvQ_D5#z=Az zS$JlQG;z9#tHvV}?#XH6tm^*eg~eCZm_imY31@DyC-!Av8ZpZ%zvPxtT~E_=k)~;B z<9BqdH{M75jBMQ}X&T-!GMhUlSKmdy>qFbqaN5CgD5x%vhh!33}YWdoR?Y(#Iq(hb<4 zsFIQT6DM|yDh~J()ouFx+9=MVu4~K@%ULLMf>!+m5v>7iC%(62=2sL1AO~=q2)Y3{ zwG*AiKtzqnLoP2PA!iwP%v=UR0(%0;034Y4?jaD-9zX%0V&+ZzUT87oz0niu+yO`| zs>Vtx^w?x#Gx!qP@*ZOqof8Cktx`5B$Wo#ASrufpve-mH)=I7BQBcatYLf&RDmMSe zBuKOJ*qA`Qit|KH4ReQW?}3sE?rB3r=TAP a0eA!F<#nVZ1b;aI0000KmcdQKKoCWrQSM0xq=TdcU;aHE03EmkQUa*}N(kqF zF&#h$l#mY0!DA7v$OepMU;L$!<-hj){j;Od7ERMI25v@CnT7s?MM_8-q&sXE=kL=w z>X7c}x42Z1=^X(`S^-tWvU4e^46ck%k3ePnbSc+0M@QfhSSEZKQODXHu*)U7CR76t zKkzTW+V&1O1eX=cmd^GbK+cJ)Ygz}lz#&SQ zMPEl1Z4-O|CrNur_qiXkXOzJ2BR0px{zZ z7sn8f&bQMJ@*Xnaag7gTPiX18z#G6{&+nGNY~|#BLeB00N6!I{y9zQ4oz5z2ri68! zm|n9n$JX*^*rg*9H=TC-YKU%e$<155gzrVe%`-zAnW4hEYiFn{v9!puIe>|D^!b;ZppuAcVw*8d*7=we?gR_5`2BR0px{(b z7sn8f&bQb0@-{p0v^^AeIq!A-j$9(MTVitxzj@CAEuR8SAr%qEo%8)ezHi<3=S1&Q zwUz_2nfZZQA(Q+}PgMVBP&+X5=BMcCIbU4oIq;uxw>^4+@21hIh0G}io2QF-Ic{1Q zqQZU3aniyV6;3V3MGJ#exPlbw6-A3UH75pp^v-drS+{{_XOql^RRRsm?9@eXePa7Q W)nDHy&*Bi!fefCmelF{r5}E)fCs0uU literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/tablewidget.png b/resource/en/gui/icon/hmi/tablewidget.png new file mode 100644 index 0000000000000000000000000000000000000000..2febe7705ac0f81c3766d855e6a51ca787339cee GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkSz{ zi(`mKXY!x_|LvJ=8H8hVB)4`59cc2saP{icMIxK3zvsD?Y;620$dgbkd1m{MCmR|c zPM2t#?^+?uyzhjnDK`(Fe6QO3iK!Pqc;D+;+&ek2JAr{gY^h@Y^54s%fEF-#y85}S Ib4q9e08E-VegFUf literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/terminal.png b/resource/en/gui/icon/hmi/terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..0edc5028aa8e0e5710c444b45aea4eae74405d58 GIT binary patch literal 420 zcmV;V0bBlwP)4meFy8FbqIndi@V0ut7RPfAmi$2%RL!Bqb9x|N3Es zut7#B6C@wVjd5(Cy@uXJcN{jB^khi}7U%PsIpk>;%0q&l#}q^)14_GA!EyssK&7f* zLw*)R%^)I$Ia-dy(*mWc9)1iGkrMdu9_@hx;3Cg}0$6)G@2Xl&2H8$NZQ5A0$3#H6 z1>n;97Tehk$ZB$;OIHKDj^*EMYJ;^v9@@mZuH;&iVhjRcI;BmQ-gp!QuvgX77{r4e z>FVhF_?B3EyIkMoSwyzL#-=+}-3BTLy5 z=%4Risi?w4fL0_ThX O00002BR0pkSP* zi(`mKXY!x_|LvJ=8H8hVB&UgOT)@3!*RCMdOJ(oxo$WXyZy|q>VOMto!?R?kPcIT4 z)U=#ldW0$FS9|;?xvd#j76o>pfwvQ4sJ>Zv2sdYjL?PicBMUE)QWAcHWg?BsV* STW$hvV(@hJb6Mw<&;$Sgpg-^c literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/textInput.png b/resource/en/gui/icon/hmi/textInput.png new file mode 100644 index 0000000000000000000000000000000000000000..365487f426e1999330305412ea1b0e7bec61b0b8 GIT binary patch literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px|*& z7sn8f&bL!G@*Xk}aE%vW4hS-GGHZDDEMdwFUJ1qOKTR7Lm6xP+UtoD@An2zw(Ic=f z`R>nm_BS`_XU}TW+%mIelgEW?>}h38d3NfW-ZQ_v{LR4ln{V<2CdT%VgErypHjkM+ z6;m(8-TfKvd+lrgnKevWo(InqB|P8uxvX|ajPA;BwHwoG7U{({CNFx%R5O#Gb*jVD zM~7zafBOA+qsmk}v(1anwuh|0{z>gHm(*Ij^VZjDd0r$Nt+`y?@oetB{}(>}yO^>- Z{QEE0E6W-bZvwr<;OXk;vd$@?2>@>ubaVg! literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/textbox.png b/resource/en/gui/icon/hmi/textbox.png new file mode 100644 index 0000000000000000000000000000000000000000..91e2fe6c9e0c4e863815c90c0f63768e9876b962 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px`o3 z7sn8f&bQMx@-`a?xXK4sJ=<|kT4i=?&LNGHY$f|sTYVmwC`9rpHB6j1A^v&%kCS${ zpP#Ds=hKVSv2?v&kdU_f-Qp!#K_(vRyWmgRG*RJi=8O_ o%abdwb4B0mYjRWGUo&gamr7G}y8Syv1n6Q0Pgg&ebxsLQ0PhG}x&QzG literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/tiaozha.png b/resource/en/gui/icon/hmi/tiaozha.png new file mode 100644 index 0000000000000000000000000000000000000000..597c12010a7cdf093ccb19f9f96662cdab065fee GIT binary patch literal 433 zcmV;i0Z#sjP)KRxwV)KoFcjN~GimP&Dw z>ZCf7a{!lJK{^4EoH?6bBdK)Wmlc4Cn@(Jz9{^^O-Unj@z{+;!s@&L8K#RKDzW{IzVBhD4mOE0zFc3gr82aQ0zCkzw6x*Ac!sZ6t2)m^r{WduQ zzCn&a`pksFyF^hWn=r)8WM@3GtzEsVW$&{vy%u zyJ1uEtA>r5&l8^Anaw!_`s3=vvHv|(1K8z169Me-#yG4D literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/top.png b/resource/en/gui/icon/hmi/top.png new file mode 100644 index 0000000000000000000000000000000000000000..db2d270f911d58b55218db39a186b409930a85d4 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px`A> z7sn8f&bL<_`I-y_S|9E|W*e>;=MZsbo^pkW<#C-ioIK$lSxO&HFkx9bm96*V+7}l- zEKQ9PcS`7fV;0y@Ya=jm*^}d;SI;{gSgOLZBVFJCuS6J=X~5A|%Zz}lX}wBHau&z7 zo}Km3I5vG{?#t|;ozFk_whFoQ!;JT`o-W|%JnuHO zS=UK;Nq^i|%ZO85y95KTUXIxET=2D*L;8Z=iJaGN&6$4kl@)^^XWNdYI}7XHbNzC@ j&!4*e`|h86*Y0NKK4feA-rRoz(02@;u6{1-oD!M2BR0px`}E z7sn8f&bQMJ@*XnaakcNT)-E_>zg7BxM$Z9_H5Ys@@m777GH?t~311a7>zK&bfFD6i z%sT&0Iq~JLYsZPL@t2<`-MG{F?!7|rhL}Y=S9OP8?L3j2<=ir{hT%kfdf^(J6 zV>TSiJuhj-r*w0o%+!schVEyk?%u_9AZfz06>Y+5-@}gPze?dXYTjZhvb{ZS|HZ`Y wNs-Mu7fyT+x)40~#~uNbOaIGX8#7igmZf*HmKtqY3iK(1r>mdKI;Vst05jx$i~s-t literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/travelBriefing.png b/resource/en/gui/icon/hmi/travelBriefing.png new file mode 100644 index 0000000000000000000000000000000000000000..f7cd96664db890ba3ec930a93b4a4334d22755c5 GIT binary patch literal 665 zcmV;K0%rY*P)Px%Q%OWYR7gwJmcNVCP!Pwzlih`F?g(e8#et2&34)EHU=9zwV!eHd78Y7rc!h<9 zf`xy8!W9-4HdY>7f?63tJH&+WNX0_WF&lAZeAa+)k-4oGwkz|XR-_O(?S1=IEk{2Sf2f%z&7ZDu+U?)key4~)} zY05M%RLau;R-)*~u^Hiyt7k5j^osA+g`~YjN{s%*X#5%Afsk-c7~b1Oyn~iy0k}1xlf4bO0I>3O%dt; z4xQWs=q7+BAbTRR%FL-8PxVMCbq&Y^(NHA5YgtxvALN*#5W!O-s^`Jx%F)J#ce+-? z8xh6f;L=KNmIBBJOB`lDtJbY+#V6N3aq`OwZ30;4U|e3)>M!wUlCH1tw)AL z^w9VHuYUzp=FxEln)urjE8$R;&s6oVN~2BR0px_Ko z7sn8f&g4J;|JyU$G6=`!NKO;mC=m4E)hn+Mm3Q~{&K8{i=fOuoo(DyS8|~z3?3AuO z-NA6T=7>kuNrumo3q#x{xvpEcjy2#JtIET_0k;G_&oE^DWQj==>{?uBQ}lad$HOfd z1xu}*K05kz$?OPmKT&FMUvM=a8=GC_=8fSI7%SZ{yu{Y4(#%eK7`qq|{3` ab1>BV*_5AR^9cvKk-^i|&t;ucLK6TCsa8?| literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/trend.png b/resource/en/gui/icon/hmi/trend.png new file mode 100644 index 0000000000000000000000000000000000000000..15b7fb5ffb5b590474396a5a455b9f638e07c51f GIT binary patch literal 393 zcmV;40e1e0P)Kma$4hK@dex#6qwzovk*)?eYi4zYrTOEfottLtDYZ z6oOx&@dq@5a2pF-yI5F97Dfo~k?iJ0lg3+KX7{|A+1Y)q(P+dXw6YM&B0;NFL(&a! zIOo1S+ehO@tw)lQ@d*qXLOQ^P?bf(i%P2Ik-EBgV)CYE}{_=WMDoH0mJHmHtAN)E< zQY!03#k;qCJ!ws&(%DXZ*ayDG?6+xaiZhb51snr+VO;_1zz49ITVIrsq;zBroCD9m zQ#!)H3vd=;!?{2KNu^qgjUUte0k1&U_ARh&d+OYkl&&9NUz_$H*?!M$Qc}99kWytc zs$M0328tfFGhxHIdK82Cko%a3-HZ8}9h4SIIxWm-A|wk6*kvxJL`%QDJMpeGQKuBt ni>JKyc+H?*HT3^?tC@gr-UVZv_;?)#00000NkvXXu0mjfhUll+ literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/trtczhkg.png b/resource/en/gui/icon/hmi/trtczhkg.png new file mode 100644 index 0000000000000000000000000000000000000000..0a789eaf7f3b30ecbda243b28d4a1469091e4883 GIT binary patch literal 341 zcmV-b0jmCqP)4mfdl}Fc5@yGrWfqT!K4*bdU~02`<4UP(n(e1WJGo zTmq?JGnX70jWD(>kRGx#H?~ga`>cOa5^CtB3Z*7!HRdGwP=88d63F!h;Ixp@0(iYg zzcF(IIF8j#nSJw{@-}X&ML#0hdV)^UXW;LHupz9=Y7u~gm(7|eMp0~jiva9A!Cul3 z_}_x}%UqIKkfe(ba_m1Q{N$gK*AdCxlEm2{>pGH64Unym>6!H;kZD7*s{u0gB-bTD zXMb83?n{Egwemr7TM87b7-)#fv%5j4lr88gn{8{ilcYuClnnB%=zU4@P@|UE nzOfT_3Y4v6Pzn9B>lT1-ni0P!pt#^;00000NkvXXu0mjfUZal4 literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/txzc.png b/resource/en/gui/icon/hmi/txzc.png new file mode 100644 index 0000000000000000000000000000000000000000..b03d2b603ec496f34a976284ee187bc4d9356fca GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkThI zi(`mK=i6%sc^v`-TrYZ?6qj2q5Sbg$G^ylUZq5yXPwGeNUwitceG&^^I;F!yc9F=7 z{S$Vr*lkt+xFl=!xA3&t>H-GLvH^2>_q{H8wS@1cVgifPg5x(GqyImbxv;S`_Jo^d j@PgZ#_Rft>iV3V@TLi-D&M#2|TFv0;>gTe~DWM4f?IT1P literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/tyztxs.png b/resource/en/gui/icon/hmi/tyztxs.png new file mode 100644 index 0000000000000000000000000000000000000000..8e860f58384619d3c1f27475464e79f948b40ba8 GIT binary patch literal 407 zcmV;I0cie-P)KR>5t~2GJ-Zpx=BXJ22CcYMyNN4 zU;K82cmfA3PJlp5a)P#LA0c2^ppQI~I@x|0#}T)%$D6R+iN0ftOJbdK8vuGO&7%&$ zUPShDIjX92&OHMN0AA=C035k)0W@6q0KABNUQI-jBa>;Ot%wAJ@#<$GT0~nStL;%B z$pOI1lBm(QBBo)?Piz&3ZiJD*_blXwN{gKl}P8!r4>P!iMPI@ za7rC%f`;cLnm36%`o4_Vrcltlym^LBx!?ppEAMPa1ojNvB?2jt?1=44@4cEBJmtF9 zYRwoUiDxHkVkekrfB#Z7gunZl_({9}ocwbl0B6D!n3$O{z~}$~002ovPDHLkV1oHR BuweiI literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/undo.png b/resource/en/gui/icon/hmi/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..8ef6ac5e4bdc4e025ee4e6f99c5d54fa730d6529 GIT binary patch literal 415 zcmV;Q0bu@#P)4mLXQeFc5~nY2|A2T5RnzI1`1Uz zb^GT5BvjFz^_L{+N@3=v6zJL{gi zJNqLBOPUyD2^0qJ3{_2mTkB@-`>uO5bY~?^8PD1R33{DpXPX$rBC~eg9_%#L7VMt> z_T!xwHC2P9Js|)q-{3Aj6N$CIF7T)z5lMgx;1j2Wqk+sLe=O_4RcKJ&TL2Ooh27YY z*NCHHuw-pV?}|rN^Px(T1iAfR7gv`mQiS1RT#(r-{p4gpyEyNVWL98JxrL`J;*9nh*;3D(42E)aAIYB z5H|2(1uIq*?887tCr+H8;KLp&bhO@cl6IsrWsyxbnXritDywwj1fiN-VbGQ(=d-6t zSWMF7lJSu~@9z^P-1|Fu-i)wbmcq%bA*jgb+P|bB+kR znfYgcKewP*EY{_D(btK12%tU8>;iNRFq2^zewNSYSGPJ$Q;?MYB>;PkDZiM>WWKV& z7Ea{k0PF#98Q?qsml=IT)DK{R*~GQhH=DsWfs)D8^Nz#w#*`0cGMO_r$Yv6WM6UvP zm($6vD0j+~4?}FqV zBAir8y}6z8q?GRiG@?|nvn5Cf|2=@;EtT%{%+1aHVFRS}R{*x4x3>qSCYa5L)~cfo zka!fJ1tLr-rCzNlPF^LVRi%Qbwg>qan9)^VjoSJxA&PSm@1dipUno}RZI4YEeF6tDV1pju_d-;G=}Y6&Qy#R;{a|drGB*WBxPy>;3LIi zA(GGMOVtM5(n=bkQp!UBjaloly=F}{5{VX>VaH34G3EYjHv0=n=}+5{pj7Z!-8fh> zhQ~4)b-ayi-eRV{Ff6=m$A-PjbUJe)&*sYB~0 zIbABz-r3nNuWtt$930&3IBt%JyOdIo*l_{SurcLh%>1|OcKi6LQuLxMo)0 z2u>!G`-z-+fEKO4Sy9+|z05RD#H-BI6^4b!Ba!HhicO)< z7<0t_cWeSl=`R83X$7f%pHV7E4-WbV*4@3Eh)-F|BH{r6lg7}Z&1R#I8aGTN(hu#} yQFhw_t*os4X+=<5E2Vq_K!Ta4wAR1Y@9{5GsXg9<(Qf?!00004mfdZHFbsgdtNPwVV<;Am+2lA+_s7qyvt?tC>E4URA4<_0by5I00Wk zduK}`IU@iO`37nmp6wMTk=x#<6+KE;MgSrb08};PtjnpOtQ#5M-}j6!xvTUQrG5Y^tqz{T_7uT zJu}r?#V-!Tat2Gb@<1Ze@OyLLbF{fA(PprA?trHiml3F9?VkFDT?>NEh1e$92ey>| b_q%lgyw0tBX<9=@00000NkvXXu0mjf$uOlS literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/viewOff.png b/resource/en/gui/icon/hmi/viewOff.png new file mode 100644 index 0000000000000000000000000000000000000000..d1125b53867669cc4b302ed4efe9a32ee1cb1ca1 GIT binary patch literal 502 zcmVM(w9D-5{LEu_ouVi(#sokDESU#6a1fD`rUIyw$p^I>%&n3+Oq6@E@)=eb0^! zwo70SeAZ;&LUydbjg5qJqwPIRt@+q@vC2-`wAe_fw@C_Mj2T5JB5~LHn5Ov^xO7~! sGaz??!yghJT)pu_=8ZH5LJ>KA1Nw1||5TYg)&Kwi07*qoM6N<$f|x|!+yDRo literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/viewOn.png b/resource/en/gui/icon/hmi/viewOn.png new file mode 100644 index 0000000000000000000000000000000000000000..b4649dcad1e5badc0c718314848f2a178f81802b GIT binary patch literal 471 zcmV;|0Vw{7P)4mdj1UKoEw%AntJoqywA^a1L`OR1niaIv{jF2RIb~ z=Q$))K&3`3nJs~f@cnUe1dNEn zWo89X>zqgWuRsGd?jGKo0!66U`>K!3Y%D`P5(fZ9ZcVHhX$rUBpT774vym-o7>Vh*T{ap=V|p_lSFIZbjv4g17SlxQ^b zhQO`PFe-+L?ldWb$1U#&tl_U4R(-Mwzx*d7NS+qqiiv04g8itkT7eAQ>2#$#_S5@g zA02Ia1C-h)0Mobta-?vzUYA{f`g|^}WS3{CAX;`IeOYyXN&oM6>m7agtRi805aIv; N002ovPDHLkV1j+V%*Ox# literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/wgbc.png b/resource/en/gui/icon/hmi/wgbc.png new file mode 100644 index 0000000000000000000000000000000000000000..27c80cd4d23f7fa9fc7d5e0e3e1273a33d7114b8 GIT binary patch literal 531 zcmV+u0_^>XP)@e-HDaXexR`U6a~?Cev4&`KC|!&BRCrwu*bwWR;(H!fFo!2qgH@sh z>@p0^gN9pIaW05{P1>vy-NP*2bRa0PH)L^gWha7ld%t}ji@YyN#ksdPT58JBl26U|3USKy@4G#jWc+NPx!0|;Ux4Fc{+sm zib%W;+pRe+LwKR>;0WdvH+m8B`RHa{Q|*V`)`4hC$YPx$%t=H+R7gwhmcL6IVHn51PspHCxZ)<2hAOx#!E9Nan&ExVIw?pI{{+v;t%HR8 z2?|*<33qR@NVg0HOK9n8Aw>z@S}O!0Cwh5Gl!G(xt9RF?1)(<`&yVlt``*332$9FO z?N@^V*NA8;8fQjFDR(X!3*V(&*#NjUnq$Vtt1HN(Blp`dN6`WyKpi;F&iFvFN-+hANA%A?#bOaN zGtV{N>FF8T?RKn>#3QQL>zJIJ&;}&$V4-3w0{YtZ?uU)slJn;_$h$68U#VL*Xy0?%H8nEhty1o8G*>E>CM@gOX8`kN81H+Yw`IDV90GW4X!0*Eep;Px%{YgYYR7gw3mS0FyQ5?s=Klg`$KFo(*g!$m`!IwP*rYMMz^b(2PyKZ3C+MvXe zkv$}iOv*nG_Et?4dnwXJFx{O!1@1vjsh2_O9;yXfU?TW1Q;}eUllSI^>E>N4^uFD5 ze&_f3eShbB?mdKKdgz!qI9U+S+ok~+0|9@Pnqon)y=ROWHa6l_Gcz;EZ1EWt34$#y zgCxnXs#p+gOir%VYK%Ug??+aUAP6Ijq2@q+8|ldINgBJ_z94AyBTC zkUyjVqTz73q`!Xvi9`Y>lL^JeMnt1A<-NMP3U0SsPU$=Z;(6PHgRnrr-+OS(=ktw; zqIk8d%Z*4Rf~KY>l$V!7uh+qBE>!?KJ3Hv>>xI>7{g8L-CMW%@vGF{bn=hlFpa5R) zD>xiZMM-DpU3~cxfh0)~#fxZZY5AGAqEIOGuA-u%&ThY^7-4MeB?bo{AruNJ@1iJT ze0*F{>U27i|FTDp-S63pwzivCUtdQ@$8E?C3IUVvO$O zY6Lls<4i`6=gGslxj76EkEET(aU5o6XR*4vs+hy$c`7?^fOuX=$UnKifuv&h`VX(y zi;0QJKT?>@X7u#j2gh+S09FzN;R<7PIvNP^rme5~I;5mX?;Vxw!?4rA%p~ zMx$8)aF&QZtKJE6DS$C{0e}lot_1S=`U>Fn?tkhr5h?eG{{qUTm|rKmCXslKoEsr#G_zJ(Bqt92U?OP#12w|CD?)$Xio2_ z9jFyV2A>BvLdg0DvIEOZh9O_(%`C~9rolIC@D)k|CD2bm!!TiHIe?|kSm_IZiewoJ zYF$_}+XE={xRsyF*Cb~#pa<#9tQ4dMFeSP0^m*qe_0GncN{BuY;Oi*0tWgY3H}E zH*N#;7p-(j3qd?y#X|6`qfc4-O(f92f&g3r1jbuSJ3UoT00000NkvXXu0mjflTdk* literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/xdc.png b/resource/en/gui/icon/hmi/xdc.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba144bb13cbfa7eb32b4995ea71cb6d71d3fda0 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0kesKB zV~9uR+i3?mk0^+^s3*Q(nVeU)K{MCen{%hH?8*a2kFqNN|KQoA^5D*&6ZL1xMcO5l zqcU=wUM_HNhq(9sN@u6{1-oD!MKmO)CxP!NW{id(Sfp#q2$7;xDsF+cu zip(rp@d&&DAHaix7uifzd8`g_1MC3@z_q&%R#nu|bqpNqkYlRq68^OSYp*BYaYmyQ zbgAo|+LR8OWML`cwqnv6r66>u(XM-UpYfA@@~-r=&hoie%sfx92oz^=rj@qndspX} zwZuPnyo?Qt{r*5V(Jx$tH)imKR?!VaKoFg~+&2wSfT%zRDo_Chh&ps23Q&O#R3HkV z0UB_5lbg$sjgW}sE?%-(#(Hnx%w&1Y^GsLZd5Ov`^b<%Ns=%z zVweSao*RXXse_ZIX{f5I1-TI5`8bYztwpwAbcA%l6@~z*!@!Q=?kJ3oilX2dZp4w0 z!;N;g7n@xNa!C!`XhGlixrTb};nZbW#!f)CMjXdnKRAOp>PVjk!aL|b6BgeiIT=8J z9YSbbY@|$D9i-YJV%UU0pA1H!v+& literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/yfjdzhkg.png b/resource/en/gui/icon/hmi/yfjdzhkg.png new file mode 100644 index 0000000000000000000000000000000000000000..58a3bc75b6218c69b22463c197adb7cee0132288 GIT binary patch literal 336 zcmV-W0k8gvP)KR>2LzFbupy{9%NSkPYYvYyfP)2#nAX7@;F{gt7r6 zlnIQC@`y?j>Q>E*ldQUNl(XZ+4n+hduqnb)k_ftWW6|M-Qjgc%W_)-7=#73m0K1qW zN7Rc*ZDAqV0XW2LKXXLVksL^#Bet`*xu0HSa@2Xf4f0h5bE;sx^J~O@ z5)FZVB55j5OWMS0M9=E4wLAlZiw`BREf3YChE^ iR1=$n|8r{|0K5Tpe#@|(PxR{m0000Kmcb2zKoCX0#yfVP9)A_sfhA}OUO8zAmSCvB0yyZE z28Nr~Km!k$}Kma$3$K@>$#MA0r5en2|8L@<9~v=qejHhw~|6+&!m z#YV8Rv9L0Bb_TQ+(>?5Bsg?FZWWrmC%WT{P2?%?u-Pt#D=FYpjY-unUFbmDigi?V1 z1!#WsM$(@~(9B9vkn02JO|kA0unH{49>zdDGpkDq6Dnplgi5LbeKUJcPmt6E+CUk2 z0Yc6CXic<74tWEfB()?}!ZmP^s;fxq0w)eR1!@lZp{y_*0t>)7a0ILYufSHyMR2>} zE;h}q8FQRfJNZJ-CZ~UchSxQj0Kt5rKHf z0KYj3u$EumOWJW4$CJ3o1xh5T;gGVsY6KS{Fp}z#4MrVif;@Qvu!x4lmGw#07*qoM6N<$f=!>f;Q#;t literal 0 HcmV?d00001 diff --git a/resource/en/gui/icon/hmi/zlq2.png b/resource/en/gui/icon/hmi/zlq2.png new file mode 100644 index 0000000000000000000000000000000000000000..678d09d708ccee78472cda8841d8d1d7f06f263b GIT binary patch literal 354 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 vryz0)6t+-q`H0d$99!FTg1 + + + + AddBtnForm + + + Form + Form + + + + AddObjAlarmDialog + + Dialog + Dialog + + + 设备 + Device + + + 自定义告警名称 + Name + + + 类型 + Type + + + 告警等级定义 + Level + + + 告警点计算函数 + Calc function + + + 告警规则 + Alarm role + + + 越上限值 + Limit up1 + + + 越下限值 + Limit low1 + + + 数字量文本: + Digital text: + + + 添加 + Add + + + 取消 + Cancel + + + 新增告警点 + Custom alarm + + + 值 + Value + + + 模拟量 + Analog + + + 选择参数 + Select Parameters + + + 数字量 + Digital + + + 枚举量 + Mix + + + 提示 + Tip + + + 自定义告警名称不能为空! + Name is required! + + + 无告警点计算函数,请先配置计算点函数! + No calculation function,please configure the calculation point function first! + + + 参数:%1的参数标签不能为空! + Param:The parameter label of %1 cannot be empty! + + + 越下限值必须小于越上限值! + The lower limit must be less than the upper limit! + + + 无数字量文本,请先配置数字量文本! + No digital text,please configure digital text first! + + + 添加失败!正在回滚事务~ + Add failed!transaction is being rolled back + + + 添加成功 + Add success + + + 计次告警描述 + Counting alarm description + + + 计时告警描述 + Timing alarm description + + + + AlarmCalcParaTableModel + + 参数名称 + Parameter name + + + 参数标签 + Parameter tag + + + 操作 + Operating + + + + AlarmDevTreeModel + + 位置/设备组 + Location/DeviceGroup + + + + AlarmManageForm + + Form + Form + + + + AlarmManageWidget + + AlarmManageWidget + AlarmManageWidget + + + 请输入搜索内容 + Please output search content + + + 查询 + Search + + + 新增告警点 + Custom alarm + + + 屏蔽一览表 + Shield list + + + 保存 + Save + + + 描述设置 + Describe settings + + + 计算公式 + Calculation Formula + + + 计算函数 + Calculation Function + + + 测点描述 + Point desc + + + 屏蔽设置 + Shield settings + + + 是否告警屏蔽 + Alarm shield + + + 屏蔽时段类型 + Time type + + + 屏蔽事由 + Reasons + + + 开始时间 + Start time + + + 结束时间 + End time + + + 一 + MON + + + 二 + TUE + + + 三 + WED + + + 四 + THU + + + 五 + FRI + + + 六 + SAT + + + 七 + SUN + + + 日期 + Date + + + 至 + To + + + 告警动作 + Alarm action + + + 是否自定义告警 + Custom alarm + + + 告警优先级 + Priority + + + 模拟量 + Analog + + + 数字量 + Digital + + + 多选 + MultiSelection + + + 越限等级 + Limit number + + + 告警推图文件 + Pic name + + + 选择 + Select + + + ... + ... + + + 告警声音文件 + Sound name + + + 越限设置 + Limit settings + + + 越线等级 + Limit level + + + 越上限值 + Upper limit + + + 越下限值 + Lower limit + + + 越上上限值 + Upper 2 limit + + + 越下下限值 + Lower 2 limit + + + 越限告警 + Limit alarm + + + 是 + Yes + + + 否 + No + + + 一次性 + One time + + + 每周 + Week + + + 每月 + Month + + + 0 + 0 + + + 1 + 1 + + + 2 + 2 + + + 提示 + Tip + + + 保存失败!正在回滚事务~ + Save failed!transaction is being rolled back + + + 保存成功! + Save success! + + + 确认删除? + Confirm on delete? + + + 删除失败!正在回滚事务~ + Failure to delete!Rollback transaction~ + + + 选择参数 + Select Parameters + + + 枚举量 + Mix + + + 值 + Value + + + 当前登录用户无修改权限! + The current user have no perm to modify! + + + 越下下限值必须小于越下限值 + The lower 2 limit must be less than the lower limit + + + 越下限值必须小于越上限值 + The lower limit must be less than the upper limit + + + 越上限值必须小于越上上限值 + The upper limit must be less than the upper 2 limit + + + 当前登录用户无新增告警点权限! + The current user have no perm to add custom alarm! + + + 全选 + Check All + + + 全不选 + Unchecked All + + + 删除 + Delete + + + 点描述不能为空! + Description can not be empty! + + + 操作名称不能为空! + Operation name can not be empty! + + + 开始时间要小于结束时间! + Start time must be less than end time! + + + 请选中需要屏蔽的礼拜! + Please select the time to be blocked! + + + 开始日不能大于结束日! + The start date can not be greater than the end date! + + + 未知的屏蔽时间类型 + Unknown shield time type + + + 越下下限不能大于越下限 + The lower 2 limit can not be greater than the lower limit + + + 越下限不能大于越上限 + The lower limit can not be greater than the upper limit + + + 越上限不能大于越上上限 + The upper limit can not be greater than the upper 2 limit + + + 请选择要添加自定义告警的设备组! + Please select the device group to add custom alarms! + + + 此设备组下无可用设备,请重新选择设备组! + There is no available device under this device group,please reselect the device group! + + + Open Pic + Open Picture + + + Pic Files (*.glx) + GLX Picture Files (*.glx) + + + Open Voice + Open Audio + + + Pic Files (*.wav) + Wave Audio Files (*.wav) + + + + AlarmMng + + 未知车站 + Unknown loction + + + 未知设备组 + Unknonwn device group + + + 未知设备 + Unknown device + + + 未知 + Unknown + + + 其他 + Other + + + + AlarmPointTableModel + + 告警点名称 + Name + + + 所属厂站 + Location + + + 是否屏蔽 + Shield + + + 屏蔽时段 + Shield time + + + 告警等级 + Alarm level + + + 告警动作 + Alarm action + + + 所属位置 + Location + + + 所属设备组 + Device Group + + + 所属设备 + Device + + + 是 + Yes + + + 否 + No + + + / + / + + + 每周( + Week( + + + 每月( + Month( + + + 未知 + Unknown + + + + AlarmShieldDelegate + + 删除 + Delete + + + 启用 + Enable + + + 取消 + Cancel + + + 提示 + Tip + + + 删除失败! + Failed to deleted! + + + 删除成功! + Successfully deleted! + + + + AlarmShieldDialog + + Dialog + Dialog + + + 启用 + Enabled + + + 取消 + Cancel + + + 删除 + Delete + + + 屏蔽状态 + Enable status + + + 名称 + Name + + + 查询 + Search + + + 屏蔽一览表 + Shield list + + + 全部 + All + + + 已启用 + Enabled + + + 未启用 + Unenabled + + + 提示 + Tip + + + 启用失败,正在回滚 + Enable failed,rolling back + + + 取消失败,正在回滚 + Cancel failed,rolling back + + + 删除失败,正在回滚! + Delete failed,rolling back! + + + 删除成功! + Successfully deleted! + + + + AlarmShieldTableModel + + 名称 + Name + + + 屏蔽类型 + Shield Type + + + 屏蔽属性 + Shield attribute + + + 屏蔽模式 + Shield mode + + + 是否启用 + Enable + + + 时段类型 + Time type + + + 屏蔽时段 + Shield time + + + 操作用户 + User + + + 操作主机 + Hostname + + + 操作 + Operating + + + 全站屏蔽 + Shield location + + + 设备屏蔽 + Shield device + + + 测点屏蔽 + Shield point + + + 电压屏蔽 + Shield voltage + + + 设备组屏蔽 + Shield dev group + + + 责任区屏蔽 + Shield region + + + 未知 + Unknown + + + 已启用 + Enabled + + + 未启用 + Unenabled + + + 一次性屏蔽 + Once time + + + 每周 + Week + + + 每月 + Month + + + 每周( + Week( + + + 每月( + Month( + + + + BriefReportWidget + + 运行简报 + BriefReport + + + 位置 + Location + + + 日 + Day + + + 周 + Week + + + 月 + Month + + + 季 + Quarter + + + 年 + Year + + + 查询 + Search + + + 导出 + Export + + + 关键告警 + Key Alarms + + + 操作记录 + Operate Events + + + 巡检记录 + Inspection Events + + + 检修记录 + Overhaul Events + + + 保存 + Save + + + 时间 + Time + + + Tab 1 + Tab 1 + + + Tab 2 + Tab 2 + + + Tab 3 + Tab 3 + + + Tab 4 + Tab 4 + + + + BrowserDialog + + 下载模板 + Download Template + + + + CAccidentReviewDialog + + 事故追忆 + Accident Memory + + + 确认 + Confirm + + + 取消 + Cancel + + + 提示 + Prompt + + + 请选择一张画面! + Please select a graph! + + + 请选择其他画面! + Please select other graph! + + + + CActionSequModel + + 标记 + Marker + + + 开关名称 + Switch Name + + + 目标状态 + Target State + + + 执行状态 + Execution Status + + + 实际状态 + Actual Status + + + 延时 + Delay + + + 未执行 + non-execution + + + 正在执行 + executing + + + 已触发 + triggered + + + 执行失败 + execution failure + + + 执行成功 + execution success + + + 执行终止 + execution termination + + + 执行暂停 + execution pause + + + 执行跳过 + execution skip + + + + CAddBtnForm + + + 添加图片 + Add Image + + + + 添加边框 + Add Border + + + + 添加渐变 + Add Gradient + + + + 添加颜色 + Add Color + + + + 添加字体 + Add Font + + + + 添加副控制 + Add SubControl + + + + 添加状态 + Add State + + + + 背景图片 + Background Image + + + + 边框图片 + Border Image + + + + 图片 + Image + + + + 颜色 + Color + + + + 背景颜色 + Background Color + + + + 间隔背景颜色 + Alternate Background Color + + + + 边框颜色 + Border Color + + + + 上边框颜色 + Top Border Color + + + + 右边框颜色 + Right Border Color + + + + 下边框颜色 + Bottom Border Color + + + + 左边框颜色 + Left Border Color + + + + 网格颜色 + Gridline Color + + + + 选中颜色 + Selection Color + + + + 选中背景颜色 + Selection Background Color + + + + add-line + Add Line + + + + add-page + Add Page + + + + branch + Branch + + + + chunk + Chunk + + + + close-button + Close Button + + + + corner + Corner + + + + down-arrow + Down Arrow + + + + down-button + Down Button + + + + drop-down + Drop Down + + + + float-button + Float Button + + + + groove + Groove + + + + indicator + Indicator + + + + handle + Handle + + + + icon + Icon + + + + item + Item + + + + left-arrow + Left Arrow + + + + left-corner + Left Corner + + + + menu-arrow + Menu Arrow + + + + menu-button + Menu Button + + + + menu-indicator + Menu Indicator + + + + right-arrow + Right Arrow + + + + pane + Pane + + + + right-corner + Right Corner + + + + scroller + Scroller + + + + section + Section + + + + separator + Separator + + + + sub-line + Sub Line + + + + sub-page + Sub Page + + + + tab + Tab + + + + tab-bar + Tab Bar + + + + tear + Tear + + + + tearoff + Tear Off + + + + text + Text + + + + title + Title + + + + up-arrow + Up Arrow + + + + up-button + Up Button + + + + active + Active + + + + adjoins-item + Adjoins Item + + + + alternate + Alternate + + + + bottom + Bottom + + + + checked + Checked + + + + closable + Closable + + + + closed + Closed + + + + default + Default + + + + disabled + Disabled + + + + editable + Editable + + + + edit-focus + Edit Focus + + + + enabled + Enabled + + + + exclusive + Exclusive + + + + first + First + + + + flat + Flat + + + + floatable + Floatable + + + + focus + Focus + + + + has-children + Has Children + + + + has-siblings + Has Siblings + + + + horizontal + Horizontal + + + + hover + Hover + + + + indeterminate + Indeterminate + + + + last + Last + + + + left + Left + + + + maximized + Maximized + + + + middle + Middle + + + + minimized + Minimized + + + + movable + Movable + + + + no-frame + No Frame + + + + non-exclusive + Non-Exclusive + + + + off + Off + + + + on + On + + + + only-one + Only One + + + + open + Open + + + + next-selected + Next Selected + + + + pressed + Pressed + + + + previous-selected + Previous Selected + + + + read-only + Read Only + + + + right + Right + + + + selected + Selected + + + + top + Top + + + + unchecked + Unchecked + + + + vertical + Vertical + + + + window + Window + + + + 无边框 + No Border + + + + 点状边框 + Dotted Border + + + + 虚线边框 + Dashed Border + + + + 实线边框 + Solid Border + + + + 双线边框 + Double Border + + + + 边框圆角 + Border Radius + + + + 左上边框圆角 + TopLeft Border Radius + + + + 右上边框圆角 + TopRight Border Radius + + + + 左下边框圆角 + BottomLeft Border Radius + + + + 右下边框圆角 + BottomRight Border Radius + + + + 选择文件 + Select File + + + + 渐变配置 + 选择渐变 + Select Gradient + + + + 选择颜色 + Select Color + + + + CAddShieldDialog + + 新增告警屏蔽 + New Alarm Shield + + + 对象类型 + Type + + + 显示勾选项 + Show Checked Only + + + 关键字过滤 + Filter by keyword + + + 对象名称 + Name + + + 屏蔽类型 + Shield Type + + + 名称 + Name + + + 时段类型 + Type + + + 结束时间 + End Time + + + 开始时间 + Start Time + + + 一 + Mon + + + 二 + Tue + + + 三 + Wed + + + 四 + Thur + + + 五 + Fri + + + 六 + Sat + + + 七 + Sun + + + 至 + to + + + 日期 + Date + + + 屏蔽描述 + Shield Description + + + 新增 + New + + + 取消 + Cancel + + + 保存 + Save + + + 修改告警屏蔽 + Modify Alarm Shield + + + 编辑告警屏蔽 + Modify Alarm Shield + + + 位置 + Location + + + 设备组 + Device Group + + + 设备 + Device + + + 测点 + Point + + + 一次性 + Once + + + 每周 + Week + + + 每月 + Month + + + 请先取消屏蔽! + Please disable first! + + + 请至少勾选一项! + Please check at least one item! + + + 当前用户无标签设置功能权限! + The current user have no perm to operate! + + + 对象名称不能为空! + Name cannot be empty! + + + 屏蔽类型为空! + Shield type cannot be empty! + + + 时段类型为空! + Time type cannot be empty! + + + 开始时间不能大于结束时间! + Start time cannot be more than end time! + + + 周一到周七至少需要选择一天! + At least check one day from monday to sunday! + + + 获取当前登录用户失败! + Failed to get current user! + + + 保存失败! + Failed to save! + + + 提示 + Prompt + + + + CAiAlarmDelegate + + 当前无告警! + No alarm at present! + + + + CAiAlarmTreeModel + + 时间 + Time + + + 优先级 + Priority + + + 位置 + Location + + + 责任区 + Region + + + 告警类型 + Alarm Type + + + 告警状态 + Alarm State + + + 确认状态 + Confirm State + + + 告警内容 + Alarm Content + + + 复归状态 + Resume State + + + + CAlarmBaseData + + 其他 + Other + + + + CAlarmColorWidget + + Form + Form + + + 动作颜色 + ActionColor + + + 恢复颜色 + ResumeColor + + + 确认颜色 + ConfirmColor + + + 闪烁颜色 + FlickerColor + + + + CAlarmCompare + + Form + Form + + + 告警等级 + Alarm level + + + 统计类型 + StatisType + + + 日 + Day + + + 月 + Month + + + 时间段 + Time + + + 告警内容关键字 + Alarm Content Keywords + + + 关键字 + Keyword + + + 查询 + Search + + + 11 + 11 + + + 22 + 22 + + + 33 + 33 + + + 警告 + Warning + + + 未选择告警等级 + No alarm level checked + + + 开始时间需小于等于结束时间 + The start time must be equal or less than the end time + + + 当前类型最多七天 + Current statis type up to seven days + + + 当前类型最多六个月 + Current statis type up to six months + + + 请选择位置 + Please select a location + + + 位置最少选择2个 + At least two location + + + 位置最多选择%1个 + Location cannot more than %1 + + + 请选择设备组 + Please select a device group + + + 设备组最多选择%1个 + Device group cannot more than %1 + + + 提示 + Prompt + + + 告警条数过多,仅显示前 %1 条 + Too many alarm,show only %1 + + + yyyy-MM-dd + yyyy-MM-dd + + + + CAlarmDelegate + + 当前无告警! + No alarm at present! + + + + CAlarmDeviceTreeModel + + 系统信息 + System Information + + + + CAlarmDeviceTreeView + + 禁止告警 + Inhibit Alarm + + + + CAlarmFilterDialog + + 过滤 + Filter + + + 优先级 + Priority + + + 全选 + Check All + + + 位置 + Location + + + 责任区 + Region + + + 告警状态 + Alarm State + + + 复归 + Resume + + + 已复归 + Resumed + + + 未复归 + Unresumed + + + 设备类型 + Device Type + + + 时间 + Time + + + 开始时间 + Start Time + + + 结束时间 + End Time + + + 告警内容关键字 + Alarm Content Keywords + + + 区域 + Location + + + 状态 + State + + + 已确认 + Confirmed + + + 未确认 + Unconfirmed + + + 确定 + Confirm + + + 取消 + Cancel + + + yyyy/MM/dd hh:mm + yyyy/MM/dd hh:mm + + + 提示 + Hint + + + 结束时间大于开始时间! + End time should be later than the start time! + + + + CAlarmForm + + Form + Form + + + 导出 + Export + + + 过滤 + Filter + + + 禁止告警列表 + Alarm Inhibition List + + + 时间: + Time: + + + 告警状态: + Alarm State: + + + 禁止列表 + Prohibited List + + + 优先级: + Priority: + + + 确认 + Confirm + + + 关闭 + Close + + + 全勾选 + Select All + + + 删除 + Delete + + + 0 + 0 + + + 过滤告警数量: + Number of Filtered Alarms: + + + 当前显示数量: + Current Display Count: + + + 位置: + Location: + + + 智能告警 + Intelligent Alarm + + + 设置 + Settings + + + 请选择时间 + Please Select Time + + + 请选择优先级 + Select Priority + + + 请选择位置 + Select Location + + + 请选择告警状态 + Select Alarm State + + + 确定删除所有事件? + Are you sure you want to delete all events? + + + 删除完成! + Deletion completed! + + + Save File + Save File + + + 提示 + Prompt + + + 导出成功 + Export succeeded + + + 全选 + Check All + + + 全不选 + All Unchecked + + + 视频 + Video + + + 事故追忆 + Accident Memory + + + 禁止告警 + Inhibit Alarm + + + 禁止告警失败! + Failure to inhibit alarm! + + + 警告 + Warning + + + 当前测点告警已禁止,无需重复禁止! + The current Measuring point alarm is forbidden, there is no need to repeat the prohibition! + + + 工单管理 + Work Management + + + 合并 + Merge + + + 分离 + Separate + + + 当前未选中任何项! + No item is currently selected! + + + 当前用户不具备该告警删除操作权限! + The current user does not have the right to delete the alarm operation! + + + 是否跳过该项? + Do you want to skip this item? + + + 跳过 + Skip + + + 全部跳过 + Skip All + + + 取消 + Cancel + + + 包含未确认告警! + Contains unconfirmed alarm! + + + 当前未选中任何智能告警和未聚类的原始告警! + No intelligent alarms and unclustered original alarms is currently selected! + + + 包含未确认原始告警告警! + Contains unconfirmed original warning warning! + + + 当前用户不具备该告警确认操作权限! + The current user does not have the warning to confirm the operation permission! + + + 包含智能告警,无法合并! + Contains intelligent alarm, cannot merge! + + + 包含已经聚类的原始告警,无法合并! + Contains original warnings that have been clustered, cannot be merged! + + + 当前用户无此条原始告警合并权限! + The current user does not have this original warning merge permission! + + + 包含不同域的原始告警,无法合并! + Original alerts containing different domains cannot be merged! + + + 包含智能告警,无法分离! + Contains intelligent warning, cannot separate! + + + 无原始告警,无法分离! + No original warning, no separation! + + + 包含未聚类的原始告警,无法分离! + Contains unclustered original warnings, cannot be separated! + + + 无此条智能告警的编辑权限! + No edit permission of this intelligent alarm! + + + 包含不同智能告警下的原始告警,无法分离! + Contains different intelligent alarms under the original alarm, can not be separated! + + + 请选中含有趋势的告警(模拟量和累积量)! + Please select the alarm with trend(Ai and Pi)! + + + 请选中具有视频的告警! + Please select the alarm with video! + + + 确定 + OK + + + 按设备组关键字搜索 + Search by device group keyword + + + 禁止告警失败,请检查实时库连接! + Failed to inhibit alarm, please check the real-time database connection! + + + 请选择至少一条告警! + Please select at least one alarm! + + + 无禁止告警权限! + Have no permission to inhibit alarm! + + + 初始化权限失败! + Failed to initialize permissions! + + + 故障录播暂不实现 + Fault not achieved + + + + CAlarmInhibitDialog + + 禁止告警列表 + Prohibit List + + + 关闭 + Close + + + 取消禁止告警 + Cancel + + + 时间 + Time + + + 优先级 + Priority + + + 位置 + Location + + + 责任区 + Region + + + 告警类型 + Alarm Type + + + 确认状态 + Confirm State + + + 告警内容 + Alarm Content + + + 未确认 + Unconfirmed + + + 已确认 + Confirmed + + + 警告 + Warning + + + 请选择取消禁止告警所在的行! + Please select the row where the alarm is cancelled! + + + + CAlarmItemModel + + 时间 + Time + + + 优先级 + Priority + + + 位置 + Location + + + 责任区 + Region + + + 告警类型 + Alarm Type + + + 告警状态 + Alarm State + + + 确认状态 + Confirm State + + + 告警内容 + Alarm Content + + + 复归状态 + Resume state + + + 告警内容 + Alarm Content + + + 未复归 + Resumed + + + 已复归 + Unresumed + + + 未知优先级: + Unknown Priority: + + + 未知位置: + Unknown Location: + + + 未知责任区: + Unknown Region: + + + 未知告警类型: + Unknown Alarm Type: + + + 未知告警状态: + Unknown Alarm State: + + + 未确认 + Unconfirmed + + + 已确认 + Confirmed + + + 其他 + Other + + + - + - + + + + CAlarmModel + + 时间 + Time + + + 优先级 + Priority + + + 所属位置 + Location + + + 告警内容 + Alarm Content + + + 操作 + Operation + + + 趋势 + Trend + + + 录波 + Wave Recording + + + + CAlarmMsgManage + + 其他 + Other + + + + CAlarmPlugin + + 提示 + Tip + + + 此次一共确认 + A total of + + + 条告警 + alarms were confirmed this time + + + 当前用户不具备该告警确认操作权限! + The current user does not have the warning to confirm the operation permission! + + + 是否跳过该项? + Do you want to skip this item? + + + 跳过 + Skip + + + 全部跳过 + Skip All + + + 取消 + Cancel + + + 包含未确认告警! + Contains unconfirmed alarm! + + + + CAlarmReport + + Dialog + Dialog + + + 导出 + Export + + + 选择导出目录 + Select the export directory + + + + CAlarmSetDlg + + 设置 + Config + + + 动作选择 + Action + + + 声音告警 + Sound alarm + + + 语音告警 + Voice alarm + + + 告警方式 + Alarm method + + + 方式 + Style + + + 次数 + Number of alarms + + + 优先级颜色选择 + Priority color selection + + + <html><head/><body><p>选中告警时,告警的文字颜色</p></body></html> + <html><head/><body><p>The color of alarm text when alarm selected</p></body></html> + + + 选中文字颜色 + Text Selected Color + + + 颜色 + Color + + + <html><head/><body><p>选中告警时,告警的背景颜色</p></body></html> + <html><head/><body><p>The color of alarm backgournd when alarm selected</p></body></html> + + + 选中背景颜色 + Back Selected Color + + + <html><head/><body><p>无告警时,告警小窗中&quot;当前无告警&quot;文字颜色</p></body></html> + <html><head/><body><p>The text color of &quot;No alarm at present&quot; when no alarm</p></body></html> + + + 无告警文字颜色 + Text No Alarm + + + 选中颜色 + Selected color + + + 文字颜色 + Text color + + + 无告警颜色 + No alarm color + + + 语音引擎 + Speech engine + + + 引擎 + Engine + + + 语言 + Language + + + 语音名称 + Voice name + + + 确定 + OK + + + 取消 + Cancel + + + -1:重复 0:不报 x:重复x次 + -1:repeat x:repeat x times + + + 不报 + No Alarm + + + 重复 + Repeat + + + 重复x次 + Repeat x times + + + + CAlarmSetMng + + 当前无告警! + No alarm at present! + + + 未知告警等级 + Unknown Alarm Level + + + + CAlarmShield + + 屏蔽设备树 + Device Tree + + + 新增 + New + + + 批量启用 + Enable + + + 批量取消 + Disable + + + 批量删除 + Delete + + + 屏蔽状态 + Shield Status + + + 名称 + Name + + + 查询 + Search + + + 提示 + Prompt + + + 请勾选一条未启用的屏蔽信息! + Please check a disable shield info! + + + 屏蔽失败! + Enable failure! + + + 请勾选一条已启用的屏蔽信息! + Please check a enable shield info! + + + 解除失败! + Disable failure! + + + 请先取消屏蔽! + Please disable first! + + + 请勾选一条屏蔽信息! + Please check a shield info! + + + 删除失败! + Delete failure! + + + 全部 + All + + + 未启用 + Disable + + + 已启用 + Enable + + + 已过期 + Expired + + + CAlarmShield + CAlarmShield + + + + CAlarmShiledDialog + + 禁止告警 + Inhibit Alarm + + + 未找到插件 + No Plugin + + + 装载异常 + Load abnormal + + + + CAlarmStatWidget + + Form + Form + + + 按设备类型统计 + Statistics by device type + + + 按时间统计 + Time-based Statistics + + + PushButton + PushButton + + + 图表 + Chart + + + 列表 + List + + + 时间段 + Time Period + + + ~ + ~ + + + 设备类型: + Device Type: + + + yyyy-MM-dd + yyyy-MM-dd + + + 告警级别: + Alarm Level: + + + 查询 + Query + + + 位置: + Position: + + + 提示 + Tip + + + 警告 + Warning + + + 没有查询到任何站点信息 + No site information was found in the query. + + + 开始时间需小于等于结束时间 + The start time must be less than or equal to the end time. + + + 最多查询31天的数据 + You can query data for a maximum of 31 days. + + + + CAlarmStatisTableModel + + 统计日期 + Statistical Date + + + 区域名称 + Location + + + 设备类型 + Device Type + + + %1总数 + Number of %1 + + + + CAlarmStatisWidget + + 区域: + Location: + + + 统计方式: + Statistical Style: + + + 设备类型: + Device Type: + + + 开始时间: + Start Time: + + + 结束时间: + End Time: + + + 查询 + Search + + + 打印 + Print + + + 清除 + Clear + + + 日统计 + Day + + + 月统计 + Month + + + 年统计 + Year + + + 提示 + Prompt + + + 结束时间不能小于开始时间! + The end time cannot be less than start time! + + + 保存 + Save + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + 保存失败 + Failed to save + + + + CAlarmStatistics + + CAlarmStatistics + 告警统计 + + + 位置 + Location + + + 告警等级 + Alarm Level + + + 时间段 + Time + + + 关键字 + Keyword + + + 告警内容关键字 + Alarm Content Keywords + + + 查询 + Search + + + 普通告警 + Alarm + + + 智能告警 + Intelligent Alarm + + + 告警比对 + Alarm Compare + + + 分析报告 + Analysis Report + + + 22 + 22 + + + 33 + 33 + + + 警告 + Warning + + + 未选择告警等级 + No alarm selected + + + 开始时间需小于等于结束时间 + The start time must equal or less than the end time + + + yyyy-MM-dd + yyyy-MM-dd + + + - + - + + + + CAlarmTaskMngDlg + + 工单管理 + Work management + + + 作业组状态: + Work status: + + + 未创建 + No created + + + 创建作业组 + Create job group + + + 查看作业组 + View job group + + + 查看资产 + View assets + + + 提醒 + Remind + + + 艾动接口初始化失败 + Idong interface failed to initialize + + + 未关联作业组,请先关联作业组 + Assignment group not associated,please associate first + + + 创建作业组成功 + Successfully created job group + + + 创建作业组失败 + Faild to create job group + + + 获取作业组信息失败 + Failed to obtain job group information + + + + CAlarmWidget + + 确认 + Confirm + + + 当前用户不具备该告警所在位置的操作权限! + The current user does not have the operation authority of the location of the alarm! + + + 当前用户不具备该告警所在责任区的操作权限! + The current user does not have the operation authority of the responsible area of the alarm! + + + + CAnaAxisShow + + Hide This Channel + 隐藏此通道 + + + Restore to Default Group + 恢复至默认分组 + + + Wave Amplitude Zoom In + 波形幅度放大 + + + Wave Amplitude Zoom Out + 波形幅度缩小 + + + + CAnimationConfigDialog + + + + 动画配置 + Animation Configuration + + + + 取消 + Cancel + + + + 确定 + Confirm + + + + 旋转动画 + Rotation Animation + + + + + + 动画过渡间隔: + Animation Excessive Interval: + + + + + + ms + ms + + + + + + 关联测点: + Point: + + + + + ° + ° + + + + + + 最小值 + Minimum + + + + 旋转偏移角度 + Rotation offset + + + + + + 最大值 + Maximum + + + + + + 测点值 + Measuring Point Value + + + + + + + + + None + None + + + + + + 动画值配置: + Animation Value Configuration: + + + + 位移动画 + Translation Animation + + + + 水平偏移像素 + Horizontal Offset Pixel + + + + 垂直偏移像素 + Vertical Offset Pixel + + + + + + + px + px + + + + 缩放动画 + Scale Animation + + + + 水平缩放比例 + Horizontal Scaling + + + + 垂直缩放比例 + Vertical Scaling + + + + + + + % + % + + + + CAssetDataMng + + 需要导入的资产信息为空 + Asset info is empty + + + 数据库打开失败,导入资产信息失败 + Failure to open database,failure to import asset info + + + 满足条件的导入条数为0 + No matched number + + + 执行插入语句失败,导入资产信息失败 + Failure to insert sql,failure to import asset info + + + 一共%1条,成功导入%2条 + Total %1,%2 import successful + + + 需要导入的维护记录为空 + Maintenance records is empty + + + 数据库打开失败,导入维护记录失败 + Failure to open database,failure to import maintenance records + + + 执行插入语句失败,导入维护记录失败 + Failure to insert sql,failure to import maintenance records + + + + CAssetTableModel + + 设备名称 + Device Name + + + 备注 + Remark + + + 设备ID + DeviceId + + + 型号 + Type + + + 参数 + Parameter + + + 安装日期 + Installation Date + + + 状态 + Status + + + 厂家联系方式 + Manufacturer Contact + + + 维护周期 + Maintenance Period + + + 一个月 + One Month + + + 三个月 + Three Months + + + 半年 + Six Months + + + 一年 + One Year + + + + CAssetView + + 全选 + Check All + + + 全不选 + Unchecked All + + + + CAssetWidget + + 添加 + Add + + + 删除 + Delete + + + 导入 + Import + + + 导出 + Export + + + 关键字 + Keywords + + + 查询 + Search + + + 未知设备组 + Unknonwn device group + + + Save File + Save File + + + 当前未选中任何项! + No item is currently selected! + + + CAssetWidget + CAssetWidget + + + 位置/设备组 + Location/DeviceGroup + + + 设备组 + DeviceGroup + + + 设备管理 + DeviceManage + + + 添加资产信息 + Add asset info + + + 同时会删除维护记录 + Delete maintenance records at the same time + + + 对设备名称、型号、参数和内容生效 + Effective for device name、type、parameter and content + + + 未知位置 + Unknonwn location + + + 提示 + Prompt + + + 所属设备组 + Device Group + + + Open File + Open File + + + 请先选中位置或设备组 + Please select location and device group first + + + 设备组为空 + Device group is empty + + + 添加成功! + Successful add! + + + 删除失败! + Failure to delete! + + + 删除成功! + Successful delete! + + + 资产信息 + Asset info + + + 维护记录 + Maintenance records + + + + CBIWidget + + 用户不具有指定权限 + The user does not have the specified permissions + + + 无用户登录信息 + No user login information + + + 输入名称不存在 + The input name does not exist + + + 输入名称不唯一 + The input name is not unique + + + 不允许在该节点登录 + Logon on this node is not allowed + + + 用户口令错误 + Password error + + + 用户已失效 + User deactivated + + + 用户已锁定 + User locked + + + 用户不属于所选用户组 + The user does not belong to the selected user group + + + 未知错误,系统可能未正常启动 + Unknown error, system may not start properly + + + 未知错误 + Unknown error + + + 内存出错 + Memory error + + + + CBindCheckModel + + + 检查结果 + Result + + + + 对象名称 + Object Name + + + + 点描述 + Description + + + + 点标签 + Library + + + + 正常 + Normal + + + + 无对象名称 + No name + + + + 对象名称重复 + Repeat name + + + + 联库错误 + Library error + + + + 未联库 + No library + + + + CBindCheckWidget + + + 检查 + Check + + + + 正常项 + Normal + + + + 异常项 + abNormal + + + + 未联库 + No library + + + + CBoxTreeWidget + + + 搜索... + Search... + + + + CBrowserWidget + + 下载模板 + Download Template + + + + CButtonGroupWidget + + 配置错误! + Configuration Error! + + + + CChanRealStatusWidget + + 通讯状态 + Communication status + + + 正常 + Normal + + + 异常 + Abnormal + + + 未找到组号%1! + Not found group %1! + + + + CChartShape + + + 饼图 + Pie Chart + + + + 棒图 + Bar Chart + + + + 折线图 + Line Chart + + + + 实时图 + Real-time Chart + + + + CColorConfigWidget + + + 颜色选择 + Select Color + + + + CColorLabel + + 颜色选择 + Select Color + + + + CCombBoxDelegate + + 星期日 + Sunday + + + 星期一 + Monday + + + 星期二 + Tuesday + + + 星期三 + Wednesday + + + 星期四 + Thursday + + + 星期五 + Friday + + + 星期六 + Saturday + + + 否 + No + + + 是 + Yes + + + + CComtradeFile + + The Filename is Error! + 文件名错误! + + + The Path is Error! + 路径错误! + + + The Header File's Format is Error + 头部文件格式错误 + + + Config Files Open Failed + 配置文件打开失败 + + + Config File, Line + 配置文件,行 + + + Channel Count Error + 通道数量错误 + + + Channel Count Over Limited + 通道数量超过限制 + + + Wave Channel Data Lost! + 波形通道数据丢失! + + + on-off Channel Data Lost! + 开关通道数据丢失! + + + Format Error! + 格式错误! + + + Data File Open Failed + 数据文件打开失败 + + + Info File Open Failed + 信息文件打开失败 + + + Display Attribute + 显示属性 + + + SHENZHEN KANGBIDA CONTROL TECHNOLOGY CO.LTD + 深圳市远信储能技术有限公司 + + + Value Type + 值类型 + + + Sampling Width + 采样宽度 + + + Grid Height + 网格高度 + + + State Channel Height + 状态通道高度 + + + Analogous Channel Display + 模拟通道显示 + + + Analogous Channel Count + 模拟通道数量 + + + Analogous Channel + 模拟通道 + + + State Channel Display + 状态通道显示 + + + State Channel Count + 状态通道数量 + + + Status Channel + 状态通道 + + + + CConditionModel + + 参数 + Parameter + + + 条件 + Condition + + + 且 + And + + + 小于 %1 + less than %1 + + + 小于等于 %1 + less than or equal to %1 + + + 等于 %1 + equals %1 + + + 大于等于 %1 + greater than or equal to %1 + + + 大于 %1 + greater than %1 + + + 不等于 %1 + not equal to %1 + + + + CConfigDialog + + + 基础配置 + 配置 + Configuration + + + + 背景: + Background: + + + + * + * + + + + 首页: + Homepage: + + + + 像素 + Pixels + + + + 页面配置 + Page Configuration + + + + 分辨率: + Resolution: + + + + 失电颜色: + Power Loss Color: + + + + 单屏显示 + Single Screen Display + + + + 多屏配置 + Multi-Screen Configuration + + + 脚本配置 + ScriptConfig + + + + 屏幕个数: + Screen Number: + + + + 确定 + Confirm + + + + 取消 + Cancel + + + + CConfirmDialog + + 提交 + Submit + + + 日志信息: + Log Information: + + + 确认 + Confirm + + + 取消 + Cancel + + + 无修改 + No Changes + + + 添加 + Add + + + 冲突 + Conflict + + + 删除 + Delete + + + 忽略 + Ignore + + + 修改 + Modify + + + 替换 + Replace + + + 未纳入版本控制的目录,被外部引用的目录所创建 + Directory not under version control, created by an external reference + + + 未纳入版本控制 + Not under version control + + + 遗失 + Lost + + + 重名 + Duplicate Name + + + 自定义非法状态 + Custom Illegal State + + + 改变 + Changed + + + 未锁定 + Unlocked + + + 锁定 + Locked + + + 没有历史 + No History + + + 包含历史 + Contains History + + + 正常 + Normal + + + 以切换 + Switched + + + 被外部引用创建的文件 + Files created by external references + + + 没有被锁定标记 + Not marked as locked + + + 存在锁定标记 + Marked as locked + + + 树冲突 + Tree conflict + + + 名称 + Name + + + 状态 + Status + + + + CConstCurves + + 查询 + Search + + + 名称 + Name + + + 值 + Value + + + CConstCurves + CConstCurves + + + 提示 + Prompt + + + %1 定值读取失败: %2 + %1 failure to read const: %2 + + + %1 定值读取超时 + %1 timeout + + + %1 下发定值读取命令失败 + %1 failure to send read command + + + + CCurveChartView + + 位置: + Location: + + + 设备类型: + DeviceType: + + + + CCurveLegendModel + + 颜色 + Color + + + 值 + Value + + + 最大值 + Maximum + + + 最大值时间 + Maximum Time + + + 最小值 + Minimum + + + 最小值时间 + Minimum Time + + + 平均值 + Average Value + + + 单位 + Unit + + + Y轴缩放系数 + Yaxis Scaling Factor + + + Y轴偏移系数 + Yaxis Offset Factor + + + 名称 + Name + + + 设备组-测点 + DeviceGroup-Point + + + 设备-测点 + Device - Measurement Point + + + + CCurveLegendView + + 全不选 + Unchecked All + + + 删除 + Delete + + + 查看最大值 + Show Maximum + + + 查看最小值 + Show Minimun + + + + CDataBindModel + + + 标签名称 + Label Name + + + + CDataBindView + + + 提示 + Prompt + + + + 当前测点已经存在! + The current measuring point already exists! + + + + 警告 + Warning + + + + 当前未选中任何行! + No rows are currently selected! + + + + 删除 + Delete + + + + 清空 + Clear + + + + 新建 + New + + + + CDataOptWidget + + 专业 + Subsystem + + + 设备组/点 + Device group/point + + + 位置 + Location + + + 刷新 + Refresh + + + 全部 + All + + + 未知 + Unknown + + + CDataOptWidget + CDataOptWidget + + + 位置: + Location: + + + 标签类型: + Type: + + + 设备组 + Device Group + + + 设备 + Device + + + 标签名 + Point Name + + + 标签类型 + Type + + + 操作时间 + Operate Time + + + 设置值 + Value + + + 状态文本 + State Text + + + 主机 + Hostname + + + 操作员 + Operator + + + 用户组 + UserGroup + + + 点标签 + Point Tag + + + 表名 + Table Name + + + 总数 + Total + + + 取消设置 + Cancel + + + 无取消人工置数权限! + Have no perm to cancel manual setting! + + + 获取当前登录用户失败! + Failed to retrieve the current logged-in user! + + + 无操作权限! + No operation permission! + + + 初始化权限失败! + Failure to initialize perm! + + + 提示 + Prompt + + + 请至少选择一项人工置数信息! + Please select a record first! + + + 获取标签操作信息有误,%1 + Failure to read tag operate record,%1 + + + 获取标签信息有误,%1 + Failure to read tag info,%1 + + + 下发取消命令失败 + Failure to send cancel command + + + + CDataOptWork + + 读取标签信息表失败 + Failure to read tag info + + + 读取标签信息表失败,或者请检查标签信息表中是否存在残留数据! + Failed to read the tag information table, or please check if there is any residual data in the tag information table! + + + + CDesignerScene + + + + + + 提示 + Prompt + + + + 组合图元不可镜像! + Composite primitive cannot be mirrored! + + + + 精灵图元不可镜像! + Sprite elements cannot be mirrored! + + + + 控件图元不可镜像! + Wiget primitive cannot be mirrored! + + + + 图表图元不可镜像! + Chart primitive cannot be mirrored! + + + + CDesignerView + + + + 视图 + View + + + + 动画配置 + Animation Configuration + + + + 添加到精灵图元 + Add to Sprite + + + 文字编辑 + Text Edit + + + + 文本编辑 + Text Editor + + + + 数据源配置 + Data Source Configuration + + + + 检索器 + Retriever + + + + + 显示网格 + Show Grid + + + + + 网格间距 + Grid Spacing + + + + + 网格颜色 + Grid Color + + + + 编辑图元 + Edit Primitive + + + + 文本替换 + Text Replace + + + + CDesignerWnd + + + 清空联库 + Clear Library + + + + 设计窗口 + Design Window + + + + 窗口 + Window + + + + 图形已被修改! +保存所作的改动? + The graphics have been modified! +Save the changes? + + + + 保存 + Save + + + + 不保存 + Discard + + + + + + 取消 + Cancel + + + + 新建 + New + + + + 提醒 + Warn + + + + 请选择新建类型? + Select new type? + + + + 新建图形 + New Graphics + + + + 新建图元 + New primitive + + + + + 打开 + Open + + + + + 打开文件 + Open File + + + + pic (*.glx *.ilx *.elx) + pic (*.glx *.ilx *.elx) + + + + + + + + + + + + + + + 提示 + Warn + + + + 找不到文件: + File Not Found: + + + + + + 保存文件 + Save File + + + + 另存文件 + Save As File + + + + + + 图元名称首字母不能为数字! + 图元名称的首字母不能是数字! + + + + + + 图元名称只支持中文、字母、数字和下划线 + 图元名称仅支持中文、字母、数字和下划线 + + + + 非法的命名 + Illegal naming + + + + + 精灵图元 + Sprite + + + + 未设置所属专业.位置 + No Subsystem.Station + + + + 无效的位置信息 + Invalid Station + + + + + 操作dev_topo_info失败 + Operate dev_topo_info failed + + + + + + 操作dev_topo_ver失败 + Operate dev_topo_ver failed + + + + 上传拓扑成功! + Successful upload topology! + + + + F5 + F5 + + + + + + + + 错误 + Error + + + 图表图元不允许嵌套! + Chart primitive are not allowed to be nested! + + + 当前选中的图元包含非基础图元! + The currently selected primitive contains non-base primitive! + + + 当前未选中图元! + No primitive are currently selected! + + + 取消组合的图元不允许超过一个! + No more than one uncombined primitive is allowed! + + + 当前选中的图元不是组合图元! + The currently selected primitive is not a composite primitive! + + + + 执行上传拓扑? + Perform upload topology? + + + + 确认 + Confirm + + + error + error + + + 未设置所属应用.专业.车站名 + No App.Subsystem.Station + + + + + + + + + + + + + + + + + + + 警告 + Warning + + + 操作数据库失败 + Failed to operate database + + + + 关闭 + Close + + + + Ctrl+N + Ctrl+N + + + + Ctrl+O + Ctrl+O + + + + Ctrl+S + Ctrl+S + + + + F11 + F11 + + + 调试 + Debug + + + + 重新联库 + Connect Library Again + + + + Ctrl+F + Ctrl+F + + + + 检索器 + Retriever + + + + F2 + F2 + + + + 图层管理 + Layer Management + + + + Delete + Delete + + + + + Ctrl+C + Ctrl+C + + + + 全选 + Check All + + + + Ctrl+A + Ctrl+A + + + + Ctrl+X + Ctrl+X + + + + Ctrl+V + Ctrl+V + + + + Ctrl+k + Ctrl+k + + + + Ctrl+b + Ctrl+b + + + + 添加图元 + Add primitive + + + + 移除图元 + Remove primitive + + + + 编辑图元 + Edit primitive + + + + 增加图库 + Add Gallery + + + + 删除图库 + Delete Gallery + + + + + 位置: + Location: + + + + 栅格 + Grid + + + + 捕捉 + Catch + + + + 正交 + Quadrature + + + + 属性编辑 + Property Edit + + + + 联库信息 + Library Information + + + + 模型检查 + Library Check + + + + + 图层 + Layer Management + + + + + + + + + + + - + - + + + 属性 + Attribute + + + + 图层显示 + Layer Display + + + + 状态 + State + + + + + 图层数量已达到最大值,不允许继续添加图层! + The number of layers has reached its maximum value. It is not allowed to continue adding layers! + + + + 图层%1 + Layer%1 + + + + 状态%1 + State%1 + + + + %1 - %2[*] + %1 - %2[*] + + + + 当前图元名称已存在,不允许重复添加! + The current primitive name already exists. Repeat addition is not allowed! + + + + 请输入新建图库的名称 + Please enter the name of the new gallery + + + + 图库名称不能为空! + Gallery name cannot be empty! + + + + 图库名称首字母不能为数字! + Gallery name initials can not be a number! + + + + 图库名称首字母不能为空格! + Gallery name initials can not be space! + + + + 图库名称只支持中文、字母、数字和下划线 + The name of the graphic library only supports Chinese characters, letters, numbers, and underscores + + + + 该图库名称已存在! + The name of the gallery already exists! + + + + 图元状态数量已达到最大值,不允许继续添加图元状态! + The maximum number of primitive states has been reached,continue to adding primitive state is not allowed! + + + + 精灵图元编辑模式下不允许添加图层! + Sprite element editing mode does not allow adding layers! + + + + 图层数量至少为1,不允许继续删除图层! + The number of layers should be at least 1,continue to delete layer is not allowed! + + + + 图元状态数量至少为1,不允许继续删除图元状态! + The number of primitive state should be at least 1,continue to delete primitive state is not allowed! + + + + 精灵图元编辑模式下不允许删除图层! + Deleting layers is not allowed in sprite element editing mode! + + + + 非图表图元暂不支持关联统计量! + Correlation statistics are not supported for non-chart primitive! + + + 另存为 + Save as + + + 运行 + Run + + + 浏览 + Browse + + + 图形设计 + Graphic Design + + + 新建编辑图形 + New graphics + + + 工具箱 + ToolBox + + + 属性编辑器 + Property Editor + + + 设置 + Config + + + 页面配置 + Config + + + 全局变量 + Global Parameter + + + 着色策略 + Strategy + + + 文件同步 + FileSync + + + web发布 + Web Publish + + + 上传拓扑 + UploadTopo + + + 脚本编辑器 + Script Editor + + + 剪切 + Cut + + + 拷贝 + Copy + + + 复制 + Copy + + + 粘贴 + Paste + + + 撤消 + Undo + + + 恢复 + Redo + + + 删除 + Delete + + + 组合 + Group + + + 取消组合 + Ungroup + + + 上移一层 + Level Up + + + 下移一层 + Level Down + + + 置顶 + To Top + + + 置底 + To Bottom + + + 左对齐 + Left Align + + + 右对齐 + Right Align + + + 上对齐 + Top Align + + + 下对齐 + Bottom Align + + + 水平居中对齐 + Horizontal Center Align + + + 垂直居中对齐 + Vertical Center Align + + + 水平等距 + Horizontal Equidistant + + + 垂直等距 + Vertical Equidistant + + + 水平镜像 + Horizontal Mirror + + + 垂直镜像 + Vertical Mirror + + + 等大 + EqualLarge + + + 等小 + EqualSmall + + + 位置工具 + Align Tool + + + 文件(&F) + File(&F) + + + 窗口(&W) + Window(&W) + + + 系统(&S) + System(&S) + + + 工具(&T) + Tool(&T) + + + 编辑(&E) + Edit(&E) + + + 页面 + Page + + + + CDevHisDataWidget + + 区域: + Location: + + + 开始时间: + Start Time: + + + 设备类型: + Device Type: + + + 结束时间: + End Time: + + + 设备名称: + Device Name: + + + 查询 + Search + + + Excel格式导出 + Export to Excel Format + + + Pdf格式导出 + Export to PDF Format + + + 打印 + Print + + + 清除 + Clear + + + 保存 + Save + + + 提示 + Prompt + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + 保存失败 + Failed to save + + + CDevHisDataWidget + CDevHisDataWidget + + + yyyy-MM-dd HH:mm + yyyy-MM-dd HH:mm + + + + CDevHisTableModel + + 日期/时间 + Date/Time + + + 设备名称 + Device Name + + + 所属区域 + Location + + + + CDevRealDataWidget + + 位置 + Location + + + 点类型 + Point Type + + + 设备 + Device + + + 设备组 + DevGroup + + + 专业 + Subsystem + + + 过滤 + Filter + + + 按测点过滤 + Filter by measuring point + + + 禁止告警 + Inhibit Alarm + + + 全部 + All + + + 模拟量 + Analog + + + 数字量 + Digital + + + 累积量 + Accuml + + + 混合量 + Mix + + + 测点关键字查询 + Measurement Point Keyword Search + + + 查询 + Query + + + 所有 + All + + + CDevRealDataWidget + 实时数据控件 + + + 关键字查询 + Keyword Search + + + 禁止控制 + Prohibit Control + + + 恢复控制 + Resume Control + + + 禁止刷新 + Prohibit Refresh + + + 恢复刷新 + Resume Refresh + + + 恢复告警 + Resume Alarm + + + 人工置数 + Manual Setting + + + 取消置数 + Cancel Setting + + + 查询设备组信息失败! + Failed to retrieve device group information! + + + 请至少选择一项! + Please select at least one item! + + + 行“%1”,%2 + Row "%1", %2 + + + “%1”等,共(%2)项 + "%1" and others, a total of (%2) items + + + “%1”,%2 + "%1", %2 + + + 下发取消命令失败 + Failure to send cancel command + + + 提示 + Prompt + + + 获取登录信息失败! + Failure to get login info! + + + 获取登录账户失败! + Failure to get login user! + + + 无标签操作权限! + Have no perm to operate! + + + + CDevSpePointWidget + + 测点标签为空! + Measurement point label is empty! + + + 数据库连接打开失败! + Failed to open the database connection! + + + 测点标签不合法! + + 测点标签不合法! + Measurement point label is not valid! + + + 重复添加! + + 重复添加! + Duplicate addition! + + + 查询设备描述失败! + + 查询设备描述失败! + Failed to query device description! + + + 传入参数个数不一致! + Number of input parameters is inconsistent! + + + + CDevTreeModel + + 位置/设备组/设备 + Location/DevGroup/Device + + + + CDevTreeView + + 全选 + Check All + + + 清空 + Clear + + + + CDeviceNavWidget + + Form + Form + + + + CDgtNameShow + + Hide This Channel + Hide This Channel + + + Restore to Default Group + Restore to Default Group + + + + CDisposalPlanDialog + + Dialog + Dialog + + + 告警时间: + Alarm Time: + + + 告警内容: + Alarm Content: + + + 处置预案: + Disposal Plan: + + + 处置预案 + Disposal Plan + + + + CDocumentManageWidget + + 文档管理 + Document Management + + + 添加 + Add + + + 修改 + Modify + + + 删除 + Delete + + + 下载 + Download + + + 上传 + Upload + + + 查询 + Search + + + 输入文档名称查询 + Enter Document Name to Search + + + 打开 + Open + + + + CDrillDownChart + + 位置 + Location + + + 总共: + Total: + + + + CDropListWidget + + 删除选中项 + Delete the selected item + + + + CDutyDefineDialog + + Dialog + Dialog + + + 保存 + Save + + + 添加一行 + Add a row + + + 删除最后一行 + Delete the last row + + + + CDutySetting + + 导出 + Export + + + 保存 + Save + + + CDutySetting + CDutySetting + + + 用户组 + UserGroup + + + 上一周 + Last week + + + 本周 + This week + + + 下一周 + Next week + + + 引用上周 + Refer to last week + + + 班次管理 + Shift management + + + 选择导出目录 + Select the export directory + + + + CEditCollectWidget + + 趋势名称: + Trend Name: + + + 确定 + Confirm + + + 取消 + Cancel + + + + CEventDataCollect + + 其他 + Other + + + 系统信息 + System Information + + + + CEventDeviceTreeModel + + 系统信息 + System Information + + + + CEventFilterDialog + + 过滤 + Filter + + + 优先级 + Priority + + + 全选 + Check All + + + 位置 + Location + + + 责任区 + Responsibility Area + + + 事件状态 + Event State + + + 设备类型 + Device Type + + + 事件内容关键字 + Event content keywords + + + 时间 + Time + + + 开始时间 + Start Time + + + 结束时间 + End Time + + + 确定 + Confirm + + + 取消 + Cancel + + + yyyy/MM/dd hh:mm + yyyy/MM/dd hh:mm + + + 区域 + Location + + + 复归 + Resume + + + 已复归 + Resumed + + + 未复归 + unResumed + + + 提示 + Prompt + + + 历史事件过滤必须选择时间! + Select time before filter! + + + 开始时间不能大于结束时间! + The start time cannot more than the end time! + + + 时间间隔不得超过90天! + The time interval cannot more than 90 days! + + + + CEventForm + + 事件 + Event + + + 位置: + Location: + + + 时间: + Time: + + + 刷新 + Refresh + + + 过滤 + Filter + + + 全勾选 + Select All + + + 全不选 + Deselect All + + + 清空 + Clear + + + 导出 + Export + + + 优先级: + Priority: + + + 关闭 + Close + + + 事件状态: + Event State: + + + 事件总数: + Number of Event: + + + 按设备组关键字搜索 + Search by device group keyword + + + 请选择时间 + Select time + + + 请选择优先级 + Select priority + + + 请选择位置 + Select location + + + 请选择告警状态 + Select Alarm State + + + 请选择事件状态 + Select event state + + + 事故追忆 + Accident Memory + + + 实时事件 + RealTime Event + + + 历史事件 + Historical Event + + + 实时事件总数: + RealTime Event: + + + 正在查询历史事件... + Querying historical events... + + + 错误 + Error + + + 当前用户不具备事件浏览权限 + The current user does not have the right to browse the events + + + 导出成功 + Export succeeded + + + 历史事件数量: + History Event: + + + 提示 + Prompt + + + %1 历史事件数量超出%2条,未予显示! + The number of %1 historical events exceeds %2,not displayed! + + + 实时事件总数: + Total number of realtime event: + + + 0 + 0 + + + 历史事件总数: + Total number of historical event: + + + 历史事件数量: + Number of historical event: + + + 历史事件数量超出10000条,超出部分不显示 + The number of historical events beyond 10000,the excess part does not show + + + 历史事件数量超出%1条,未予显示! + The number of historical events beyond %1,not shown! + + + Save File + Save File + + + + CEventHistoryModel + + 时间 + Time + + + 优先级 + Priority + + + 位置 + Location + + + 责任区 + Responsibility Area + + + 事件类型 + Event Type + + + 事件状态 + Event State + + + 确认人 + Confirmor + + + 确认时间 + Confirm time + + + 事件内容 + Event Content + + + 复归状态 + Resume Status + + + 事件内容 + Event Content + + + 未复归 + unResumed + + + 已复归 + Resumed + + + + CEventItemModel + + 时间 + Time + + + 优先级 + Priority + + + 位置 + Location + + + 责任区 + Responsibility Area + + + 事件类型 + Event Type + + + 事件状态 + Event State + + + 事件内容 + Event Content + + + 复归状态 + Resume Status + + + 未复归 + unResumed + + + 已复归 + Resumed + + + + CExplorerWnd + + + + + + + + 打开文件 + Open File + + + + + + 提示 + Prompt + + + + 加密狗运行异常! + Dongle running abnormal! + + + + 加密狗检测正常! + Dongle detection normal! + + + + 确认退出系统? + Exit system? + + + + 确认 + Confirm + + + + 取消 + Cancel + + + + 编辑图形 + Edit graphics + + + + Ctrl+d + Ctrl+d + + + + 加密狗状态 + Dongle state + + + + Ctrl+R + Ctrl+R + + + + Ctrl+E + Ctrl+E + + + + 退出 + Exit + + + + 导航图 + Navigation Chart + + + + %1 - %2 + %1 - %2 + + + + 导出图形 + Export graphics + + + + 图形文件(*.png) + Graphics file(*.png) + + + + CFaultRecallRecordWidget + + 位置 + Location + + + 名称 + Name + + + 刷新 + Refresh + + + 清空 + Clear + + + 删除 + Delete + + + 全部 + All + + + CFaultRecallRecordWidget + CFaultRecallRecordWidget + + + 开始时间 + Start time + + + 结束时间 + End time + + + 画面 + Graph + + + 播放 + Play + + + 提示 + Prompt + + + 请选择一项记录! + Please select a record! + + + 确定开始播放“%1”? + Confirm to start playing “%1”? + + + 请选择删除项! + Please select a record! + + + 确定删除记录“%1”? + Confirm to delete “%1”? + + + 打开数据库失败。 + Failure to open database. + + + 删除“%1”失败! + Failure to delete “%1”! + + + 确定清空所有记录? + Confirm to clear all records? + + + 清空失败! + Failure to clear! + + + + CFileFolderTree + + 名称: + Name: + + + 提示 + Hint + + + 非法的命名 + Illegal Naming + + + 当前登录用户无运维管理功能权限 + The current logged-in user does not have operational management permissions + + + 添加目录 + Add Directory + + + 目录已存在 + The directory already exists. + + + 添加目录失败 + Failed to add the directory. + + + 请选择要修改的目录 + Please select the directory to modify. + + + 修改目录名称 + Modify directory name + + + 修改目录名称失败 + Failed to modify the directory name. + + + 请选择要删除的目录 + Please select the directory to delete. + + + 确认删除? + Confirm on delete? + + + 删除目录失败 + Failed to delete the directory + + + 添加 + Add + + + 修改 + Modify + + + 删除 + Delete + + + + CFileSyncDialog + + 文件同步 + FileSync + + + 提交 + Submit + + + 删除 + Delete + + + 添加 + Add + + + 提示 + Hint + + + 无需添加 + No need to add + + + 确认添加 + Confirm to add + + + 添加失败: + Add failed: + + + 无需删除 + No need to delete + + + 确认删除 + Confirm + + + 删除失败: + Deletion failed: + + + 选择文件 + Select File + + + 名称 + Name + + + 修改日期 + Modification Date + + + 状态 + Status + + + (异常) + (Abnormal) + + + 无需提交 + No Need to Submit + + + 提交失败: + Submission Failed: + + + + CFileTableWidget + + 提示 + Hint + + + 当前登录用户无运维管理功能权限 + The current logged-in user does not have operational management permissions. + + + 请选择上传目录 + Please select the upload directory. + + + 上传文档 + Upload document + + + 文档已存在: %1,是否替换? + The document already exists: %1, do you want to replace it? + + + %1 上传失败 + %1 Upload failed + + + 上传成功 + Upload successful + + + 请选择文档 + Please select a document + + + 请选择下载路径 + Please select a download path + + + %1 下载失败 + %1 Download failed + + + 下载成功 + Download successful + + + 确认删除? + Confirm on delete? + + + 删除 %1 失败 + Failed to delete %1 + + + 文档不存在 + The document does not exist + + + 打开文档失败 + Failed to open the document + + + 序号 + Serial Number + + + 文档名称 + Document Name + + + 文档修改时间 + Document Modification Time + + + 文档路径 + Document Path + + + 请选择一个录波文件 + Please select an oscillogram file + + + 请选择导出路径 + Please select an export path + + + 文件已存在: %1,是否替换? + File already exists: %1, do you want to replace it? + + + %1 导出失败 + %1 Export failed + + + 导出成功 + Export succeeded + + + 设备名 + Device Name + + + 创建时间 + Creation Time + + + 文件名 + File Name + + + + CFindReplace + + + 联库替换 + Connection Replace + + + + 已替换:%1个 + Replaced: %1 + + + + CFlowLine + + + + 潮流颜色 + Flow color + + + + + 潮流长度 + Flow lenth + + + + CGTableWidget + + + 导出xlsx文件为 + Export xlsx file to + + + + CGlobalConfigDialog + + + 全局变量 + Global Parameter + + + + + + + + + + + - + - + + + + 确定 + Confirm + + + + 取消 + Cancel + + + + 全局变量配置 + Global Variable Configuration + + + + 描述 + Description + + + + 名称 + Name + + + + 类型 + Type + + + + 值 + Value + + + + 提示 + Prompt + + + + 保存失败! + Failed to save! + + + + 数值型 + Number + + + + 布尔型 + Bool + + + + 字符串 + String + + + + CGradientDialog + + + 填充配置 + Fill Configuration + + + + CGraphApp + + + + + 提示 + Prompt + + + + 系统未启动! + System not started! + + + + 加密狗检测异常! + WatchDog running abnormal! + + + + 加密狗运行异常! + WatchDog running abnormal! + + + + CGraphDataAcess + + + 用户不具有指定权限 + The user does not have the specified permissions + + + + 无用户登录信息 + No user login information + + + + 输入名称不存在 + The input name does not exist + + + + 输入名称不唯一 + The input name is not unique + + + + 不允许在该节点登录 + Logon on this node is not allowed + + + 用户口令错误 + Password error + + + + 密码错误 + Password error + + + + 用户已失效 + User deactivated + + + + 用户已锁定 + User locked + + + + 用户不属于所选用户组 + The user does not belong to the selected user group + + + + 未知错误,系统可能未正常启动 + Unknown error, the system may not have started properly + + + + 未知错误 + Unknown error + + + + 内存出错 + Memory error + + + + CGraphFileTree + + + 搜索... + Search... + + + + 刷新 + 刷新 + + + + CGraphView + + + + 标题 + Title + + + + + + 图幅 + Sheet + + + + + 背景色 + Background Color + + + + + 背景图片 + Background Image + + + + + 是否缩放 + Whether to Zoom + + + + + 是否拓扑 + Whether Topology + + + + + 自适应显示 + Adaptive display + + + + + 窗口标识 + Window Identifier + + + + + 发布类型 + Publish Type + + + + + 图层显示 + Layer Display + + + + + 窗口关闭按钮 + Window Close Button + + + + + 专业.位置 + Subsystem.Station + + + + + 模态 + Modal + + + 平面显示 + Graphic Display + + + 是否带电:%1 + Charged:%1 + + + 设备名:%1 +所属站:%2 +值:%3 +状态:%4 +%5 + Device Name:%1 Location:%2 Value:%3 State:%4 %5 + + + 设备名:%1 +所属站:%2 +值:%3 +状态:%4 + Device Name:%1 Location:%2 Value:%3 State:%4 + + + + CGridShape + + + 网格线颜色 + Gridline color + + + + 网格填充颜色 + Grid color + + + + 交替填充颜色 + Alternate color + + + + CGroupManageDialog + + 轮询组配置 + Polling Group + + + 新增 + Add + + + 删除 + Delete + + + 保存 + Save + + + 轮询组 + Group + + + 提示 + Prompt + + + 轮询组不能为空! + Polling group cannot be empty! + + + 轮询组不能重复! + Polling group cannot repeat! + + + 轮询组不能有特殊符号! + Polling group invalid! + + + + CHangPanelWidget + + 位置 + Location + + + 设备名称 + Device Name + + + 专业 + Subsystem + + + 操作主机 + Hostname + + + 操作人 + Operator + + + 刷新 + Refresh + + + 未知 + Unknown + + + CHangPanelWidget + CHangPanelWidget + + + 位置: + Location: + + + 专业: + Subsystem: + + + 设备组 + Device Group + + + 挂牌类型 + Type + + + 挂牌时间 + Time + + + 操作人组 + Operator Group + + + 备注信息 + Remark + + + 标签名 + Tag Name + + + 总数 + Total + + + 取消挂牌 + Cancel + + + 无取消挂牌操作权限! + Have no perm to operate! + + + 初始化权限失败! + Failure to initialize perm! + + + 提示 + Prompt + + + 请选择一项挂牌信息! + Please select a record! + + + 获取标签挂牌信息有误,%1 + Failure to read token info,%1 + + + 下发取消挂牌命令失败 + Failure to send cancel command + + + + CHangPanelWork + + 读取标签信息表失败 + Failure to read tag info + + + + CHisEventManage + + 未查询到该设备相关事件! + No event related to this device was found! + + + + CHistoryActionModel + + 动作 + Action + + + 车站 + Location + + + 描述 + Description + + + 执行结果 + Executing results + + + 位置 + Location + + + + CHistoryLinkFilterDialog + + 过滤 + Filter + + + 位置 + Location + + + 用户 + User + + + 结果 + Result + + + 类型 + Type + + + 时间 + Time + + + 起始时间: + Start Time: + + + 结束时间: + End Time: + + + 执行成功 + execution success + + + 执行失败 + execution failure + + + 执行终止 + execution termination + + + 执行跳过 + execution skip + + + 标准联动 + Standard Linkage + + + 自定义联动 + Custom Linkage + + + + CHistoryLinkModel + + 名称 + Name + + + 车站 + Location + + + 时间 + Time + + + 用户 + User + + + 类型 + Type + + + 执行结果 + Executing results + + + 位置 + Location + + + + CHistorySequenceFilterDialog + + 过滤 + Filter + + + 位置 + 车站 + Location + + + 用户 + User + + + 结果 + Result + + + 类型 + Type + + + 标准顺控 + Standard sequence + + + 自定义顺控 + Custom sequence control + + + 时间 + Time + + + 起始时间: + Start Time: + + + 结束时间: + End Time: + + + 执行成功 + execution success + + + 执行失败 + execution failure + + + 执行终止 + execution termination + + + 执行跳过 + execution skip + + + + CHistorySequenceModel + + 名称 + Name + + + 车站 + Location + + + 时间 + Time + + + 用户 + User + + + 类型 + Type + + + 执行结果 + Executing results + + + 位置 + Location + + + 标准顺控 + Standard sequence control + + + 自定义顺控 + Custom sequence + + + + CHmiConfig + + + 页面配置 + Page Configuration + + + + 屏幕首页面 + Home Screen + + + + 屏幕号 + Screen Number + + + + 提示 + Prompt + + + + 保存失败! + Failed to save! + + + 描述 + Description + + + 名称 + Name + + + 类型 + Type + + + 值 + Value + + + 数值型 + Number + + + 布尔型 + Bool + + + 字符串 + String + + + + CIconActDialog + + 图元动作 + Graphic Element Action + + + 添加 + Add + + + + + + + + + 删除 + Delete + + + - + - + + + 确认 + Confirm + + + 取消 + Cancel + + + 选择文件 + Select File + + + 提示 + Hint + + + 保存失败! + Save Failed! + + + 左键单击 + Left-click + + + 左键双击 + Double-click with the left mouse button + + + 禁止 + Prohibit + + + 允许 + Allow + + + + CLayerDlg + + + 图层工具 + Layer Tool + + + + CLimitOptWidget + + 确认 + Confirm + + + 关闭 + Close + + + 未知 + Unknown + + + 否 + No + + + 是 + Yes + + + CLimitOptWidget + CLimitOptWidget + + + 提示 + Prompt + + + %1[%2-%3], 无标签操作权限! + %1[%2-%3], not perm! + + + 设置成功 + Setting successful + + + 设备属性 + Name + + + 是否越限 + Limit + + + 越限级别数量 + Limit Number + + + 越限级别 + Exceedance Level + + + 越上限 + Upper Limit + + + 越下限 + Lower Limit + + + 越上上限 + Upper Limit 2 + + + 越下下限 + Lower Limit 2 + + + 越三级上限 + Upper Limit 3 + + + 越三级下限 + Lower Limit 3 + + + 越上限应大于越下限! + The upper limit must more than the lower limit! + + + 越上上限应大于越下下限! + The upper limit 2 must more than the lower limit 2! + + + 越下下限应小于越下限! + The lower limit 2 must less than the lower limit! + + + 越上上限应大于越上限! + The upper limit 2 must more than the upper limit! + + + 无越限 + No Exceedance + + + 一级越限 + First-Level Exceedance + + + 二级越限 + Second-Level Exceedance + + + + CLimitOptWork + + 系统初始化失败! + Failure to initialize system! + + + 更改是否越限失败! + Failure to set isLimit! + + + 更改越限信息失败! + Failure to change limit info! + + + 越限设置 + Set limit + + + 取消越限设置 + Cancel limit + + + 操作员: + Operator: + + + 操作主机: + Hostname: + + + + CLineEditWithBt + + + + 选择文件 + Select File + + + + CLineEditWithBtn + + 选择文件 + Select file + + + + CLineStatusShow + + Line B + Line B + + + Dot No. + Dot No. + + + Absolute Timestamp + Absolute Timestamp + + + Relative Time Difference + Relative Time Difference + + + Line C + Line C + + + Dot Difference + Dot Difference + + + Time Difference + Time Difference + + + + CLinkCtrlTableModel + + 联动名称 + Linkage Name + + + 联动类型 + Linkage Type + + + 联动状态 + Linkage State + + + 执行方式 + Executive Mode + + + 触发时间 + Trigger Time + + + 车站火灾 + Location fire + + + 区间阻塞 + Interval blocking + + + 日常运营 + Daily operations + + + 自定义1 + Custom 1 + + + 自定义2 + Custom 2 + + + 未执行 + non execution + + + 正在执行 + executing + + + 已触发 + triggered + + + 执行失败 + execution failure + + + 执行成功 + execution success + + + 执行终止 + execution termination + + + 执行暂停 + execution pause + + + 执行跳过 + execution skip + + + 过期配置 + Expired Configuration + + + 全自动 + Automatic + + + 半自动 + Simi-automatic + + + 手动 + Manual + + + 请点击“所有联动”按钮刷新配置 + Please click the "All Linkages" button to refresh the configuration + + + + CLinkCtrlTreeModel + + 内容 + Content + + + 选择 + Select + + + 执行方式 + Executive Mode + + + 延迟时间 + Delay Time + + + 失败处理 + Failure handling + + + 执行状态 + Executive state + + + 串行 + Serial + + + 并行 + Parallel + + + 秒 + second + + + 自动跳过 + Automatic skip + + + 人工干预 + Manual intervention + + + 终止联动 + 自动终止 + Linkage termination + + + 执行下个功能 + 自动重试 + Next Function + + + 未执行 + non execution + + + 正在执行 + executing + + + 已触发 + triggered + + + 执行失败 + execution failure + + + 执行成功 + execution success + + + 执行终止 + execution termination + + + 执行暂停 + execution pause + + + 执行跳过 + execution skip + + + + CLinkCtrlWidget + + 联动 + Linkage + + + 联动分类 + Classification of Linkage + + + 待执行联动 + Pending linkage + + + 所有联动 + All linkage + + + 联动类型 + Linkage Type + + + 车站火灾 + Location fire + + + 区间阻塞 + Interval blocking + + + 日常运营 + Daily operations + + + 自定义1 + Custom 1 + + + 自定义2 + Custom 2 + + + 联动列表 + LinkageList + + + 搜索 + Search + + + 动作列表 + ActionList + + + 终止 + Terminate + + + 执行 + Execute + + + 单步 + Step + + + 暂停 + Pause + + + 导出 + Export + + + 打印 + Print + + + 当前用户不具备联动操作权限! + The current user does not have linkage operation authority! + + + 错误 + Error + + + 当前未选中联动 + Not linkage selected currently + + + 继续 + continue + + + 联动名称: + Linkage Name: + + + 错误代码: + Error code: + + + 错误描述: + Error description: + + + 联动操作请求失败 + Linkage operation request failed + + + 执行失败,请求人工干预! + Execution failed, manual intervention request! + + + 功能名称: + Function name: + + + 动作名称: + Action name: + + + 人工干预请求 + Manual intervention request + + + 重试 + Retry + + + 跳过 + Skip + + + Save File + Save File + + + 联动报告 + Linkage Report + + + 历史列表 + HistoryList + + + 执行详情 + Execute Detail + + + 过滤 + Filter + + + (*.pdf *) + (*.pdf *) + + + + CLinkLine + + 置换端 + Displacement end + + + + CLoadDefTblWidget + + 位置 + Location + + + 添加记录 + Translate the following string into English: "添加记录" + + + 删除记录 + Translate the following string into English: "删除记录" + + + 撤销更改 + Translate the following string into English: "撤销更改" + + + 保存 + Save + + + Excel导出 + Translate the following string into English: "Excel导出" + + + Excel导入 + Translate the following string into English: "Excel导入" + + + + CLocationSequModel + + 标记 + Marker + + + 场站 + Station + + + 顺控名称 + Sequence name + + + 执行状态 + Execution status + + + 未执行 + Not executed + + + 正在执行 + Executing + + + 已触发 + triggered + + + 执行失败 + execution failure + + + 执行成功 + execution success + + + 执行终止 + execution termination + + + 执行暂停 + execution pause + + + 执行跳过 + execution skip + + + + CLoginDlg + + 登录 + Login + + + 用户 + User + + + 用户组 + UserGroup + + + 密码 + Password + + + 取消 + Cancel + + + 警告 + Warning + + + 登录失败 + Login Failed + + + + CMainWidget + + 告警统计 + Alarm Statistic + + + 告警对比 + Alarm Compare + + + + CMainWindow + + CMainWindow + CMainWindow + + + 设备/点 + Device/Point + + + 清除测点 + Clear Measurement Points + + + 收藏夹 + Favorite + + + + CMediaAVWidget + + Form + Form + + + current time + current time + + + duration + duration + + + 多媒体 + Multimedia + + + + CMediaWidget + + CRobotLinkCtrlWidget + CRobotLinkCtrlWidget + + + 多媒体 + Multimedia + + + + CMsgDeal + + 发送消息失败 + Failed to send message + + + 创建系统信息访问库实例失败! + Failed to create an instance of the system information access library! + + + 权限接口初始化失败! + Failed to initialize the permission interface! + + + 总线订阅失败! + Failed to subscribe to the bus! + + + 消息解析错误 + Error parsing message + + + 未知的命令 + Unknown command + + + 未接收到消息 + No message received + + + + CMyCalendar + + Form + Form + + + 至 + To + + + 取消 + Cancel + + + 确认 + Confirm + + + + CNavigationConfigDialog + + 打开 + Open + + + 新建项目_ + New Item + + + + CNavigationDialog + + 导航栏配置工具 + Navigation Bar Configuration Tool + + + 添加节点 + Add Node + + + + + + + + + 添加子节点 + Add ChildNode + + + ∟ + + + + 删除节点 + Delete Node + + + - + - + + + 清空节点 + Clear Node + + + × + Close (X) + + + 上移节点 + Move Node Up + + + ↑ + Up Arrow + + + 下移节点 + Move Node Down + + + ↓ + Down Arrow + + + 导入 + Import + + + 导出 + Export + + + 确认 + Confirm + + + 取消 + Cancel + + + 属性 + Attribute + + + 是否使用 + Enable + + + 操作 + Operation + + + 图标 + Icon + + + 数据 + Data + + + Web发布 + Web Publishing + + + Web类型 + Web Type + + + 网址 + Website URL + + + 是 + Yes + + + 否 + No + + + 切换画面 + Switch Screen + + + 切换导航 + Switch navigation + + + 调用程序 + call program + + + 加载网页 + Load Webpage + + + 自定义项目 + Custom Item + + + 新建项目_ + New Project + + + 最大支持四层结构: %1-%2-%3-%4 + Maximum of four levels of structure supported: %1-%2-%3-%4 + + + 全部展开 + ExpandAll + + + 全部收缩 + CollapseAll + + + 提示 + Hint + + + 保存失败! + Save Failed! + + + 页面 + Page + + + 一级 + First Level + + + 二级 + Second Level + + + 三级 + Third Level + + + web发布 + Web deployment + + + web类型 + Web type + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + 导出失败 + Export Failed + + + 行: %1, [%2] 不符合规范! + Line: %1, [%2] does not comply with the standard! + + + + CNavigationWidget + + 导入 + Import + + + 导出 + Export + + + 当前节点名称 + Node Name + + + 画面文件 + Data File + + + 图标文件 + Icon File + + + 上级节点名称 + Second Node + + + 上上级节点名称 + First Node + + + 是 + Yes + + + 否 + No + + + 提示 + Prompt + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + 保存失败 + Failure to save + + + 切换画面 + switch graph + + + 调用程序 + call program + + + 一级 + First Level + + + 二级 + Second Level + + + 三级 + Third Level + + + 是否使用 + Enable + + + 操作 + Operate + + + 图标 + Icon + + + 数据 + Data + + + web发布 + web publish + + + 属性配置 + Attribute Configuration + + + 全部展开 + ExpandAll + + + 全部收缩 + CollapseAll + + + + COperationOrderForm + + 典型票库 + Library + + + 操作开始时间 + Start Time + + + 操作结束时间 + End Time + + + 操作票号: + Operation Banks: + + + 操作任务 + Operation tasks + + + 备注: + Remark: + + + 操作人 + Operator + + + 监护人 + Guardian + + + 值班负责人 + Principal + + + 增加 + Add + + + 删除 + Delete + + + 上移 + Up + + + 下移 + Down + + + 保存 + Save + + + 打印 + Print + + + 预览 + Preview + + + 提示 + Prompt + + + 打开历史表失败! + Failed to open history table! + + + 保存失败! + Save failed! + + + 操作票号:kbdct_ + Operation Banks:kbdct_ + + + 操作开始时间: + Start Time: + + + 操作结束时间: + End Time: + + + 备注:<br> + Remark:<br> + + + 操作人: + Operator: + + + 监护人: + Guardian: + + + 值班负责人: + Principal: + + + 步骤 + Steps + + + 备注 + Remark + + + 行:%1 保存失败! + Row:%1 save failed! + + + 保存成功! + Save successed! + + + 典型票名为空! + Typical ticket name is null! + + + 操作票号为空! + Operation Banks is null! + + + 操作人为空! + Operator is null! + + + 监护人为空! + Guardian is null! + + + 值班负责人为空! + Principal is null! + + + 行:%1 顺序为空! + Row : %1 number is null! + + + 行:%1 与行:%2 顺序重复! + Row : %1 and Row : %2 have the same number! + + + 行:%1 操作任务为空! + Row : %1 operation tasks is null! + + + 典型票名已存在! + Typical ticket name already exist! + + + 典型票名: '%1' 保存失败! + Typical ticket name: '%1' save failed! + + + 是否保存更改? + Save the change ? + + + 打印成功! + Print successfully! + + + 打印失败! + Print failed! + + + 保存模板 + Save + + + 开票打印 + Print + + + 电子签章 + Electronic signature + + + yyyy/MM/dd HH:mm:ss + yyyy/MM/dd HH:mm:ss + + + 结束时间 + End Time + + + 操作票号 + Operation Banks + + + 开始时间 + Begin Time + + + 签章 + Signature + + + 操作内容 + Operation Content + + + key_id_tag + key_id_tag + + + ctrl_value + ctrl_value + + + 行:%1 操作内容为空! + Row:%1 Operate content is empty! + + + 已经存在“%1”,是否覆盖? + “%1” is already exist,replace? + + + 操作票号: + Operation Banks: + + + 操作开始时间: + Operation begin time: + + + 操作结束时间: + Operation end time: + + + 操作任务: + Operation task: + + + 当前登录用户无运维管理功能权限! + Current user have no perm to operate! + + + + COperationOrderModelForm + + 提示 + Prompt + + + 是否保存模板更改? + Save the template change? + + + + COrderManageWidget + + 典型票管理 + Typical ticket management + + + 刷新 + Refresh + + + 删除 + Delete + + + 编辑 + Edit + + + 典型票库 + Typical ticket library + + + 序号 + number + + + 操作序列简述 + Description of operation sequence + + + 删除 (%1) + Delete(%1) + + + 请选中一条记录! + Please select a record! + + + 提示 + Prompt + + + 是否删除 %1 ? + Delete %1 ? + + + 删除失败! + Delete failed! + + + 自动开票 + Automatic Ticket + + + 当前登录用户无运维管理功能权限! + Current user have no perm to operate! + + + + CPenDialog + + + Pen + Pen + + + + 线宽: + Line Width: + + + + 线型: + Line Style: + + + + 预览 + Preview + + + + 画笔配置 + Brush Configuration + + + + + NoPen + NoPen + + + + + SolidLine + SolidLine + + + + + DashLine + DashLine + + + + + DotLine + DotLine + + + + + DashDotLine + DashDotLine + + + + + DashDotDotLine + DashDotDotLine + + + + CPixmapShape + + 错误 + error + + + 不支持的格式 + Unsupported format + + + + CPlanCurvesConfigure + + 类型配置 + Type Config + + + 年时段配置 + Year Interval Config + + + 周时段配置 + Week Interval Config + + + 日时段模板配置 + Day Interval Temp Config + + + 计划曲线配置 + PlanCurve Config + + + 新建类型 + New Type + + + 保存 + Save + + + 计划类型 + Plan Type + + + 删除 + Delete + + + 新建模板类型 + New Temp Type + + + 日时段模板类型 + Day Interval Temp Type + + + 新建年时段配置 + New Year Interval + + + 新建周时段配置 + New Week Interval + + + 新建日时段配置 + New Day Interval + + + 日模板类型 + Day Temp Type + + + 新建计划曲线 + New PlanCurve + + + 关联标签 + Related Tag + + + 计划曲线名称 + Name + + + 类型ID + Type ID + + + 所属位置 + Location + + + 所属专业 + Subsystem + + + 时段曲线配置 + Interval Curve Config + + + 导入模板 + Import Temp + + + 新建 + New + + + 预览 + Preview + + + 否 + No + + + 是 + Yes + + + 星期日 + Sunday + + + 星期一 + Monday + + + 星期二 + Tuesday + + + 星期三 + Wednesday + + + 星期四 + Thursday + + + 星期五 + Friday + + + 星期六 + Saturday + + + 类型名称 + Name + + + 年时段名称 + Name + + + 是否例外 + isException + + + 开始月 + Start Month + + + 开始日 + Start Day + + + 结束月 + End Month + + + 结束日 + End Day + + + 周时段名称 + Name + + + 星期 + Week + + + 年时段 + Year Interval + + + 周时段 + Week Interval + + + 日时段名称 + Name + + + 开始时间 + Start Time + + + 结束时间 + End Time + + + 值 + Value + + + 提示 + Prompt + + + 保存成功! + Save Successfully! + + + 保存失败! + Save failed! + + + 行: %1 结束时间不能小于开始时间! + Row:%1 End time cannot less than start time! + + + 行: %1 与行:%2 时间段不连续! + Row: %1 is not discontinuous with Row: %2! + + + 周时段配置需覆盖一整周 + Week interval configuration needs to cover the entire week + + + %1 : 开始月不能大于结束月! + %1 : Begin month cannot be bigger than the end month! + + + %1 : 开始日不能大于结束日! + %1 : Begin day cannot be bigger than the end day! + + + 年配置需要覆盖全年! + Year interval configuration need to cover the whole year! + + + 请从1月1日开始配置! + Please start configuration from January 1st! + + + 请配置到12月31日! + Please configure until December 31! + + + 模拟量出口 + Analog output + + + 是否删除曲线'%1'? + Delete curve '%1' ? + + + 删除成功! + Delete successfully! + + + 删除失败! + Delete failed! + + + 计划类型为空,请检查类型配置! + The plan type is empty,please check type config! + + + 周时段配置被使用,无法保存! + Week interval configuration is in use, cannot be saved! + + + 日模板类型为空,请检查类型配置! + The day temp type is empty,please check type config! + + + 未找到年描述 + No year description found + + + 未找到周描述 + No week description found + + + 导入失败 + Import failed + + + 导入成功 + Import successfully + + + + CPlotWidget + + Form + Form + + + 对比 + Contrast + + + 告警描点 + Alarm Plot + + + 收藏 + Collect + + + 导出 + Export + + + 打印 + Print + + + 运行趋势分析 + Run Trend Analysis + + + 保存图片 + Save Image + + + 日 + Day + + + 实时 + Real + + + 周 + Week + + + 月 + Month + + + 季 + Quarter + + + 年 + Year + + + 秒 + Second + + + 自定义 + Custom + + + 昨日曲线 + Yesterday's Curve + + + 趋势图 + Trend Graph + + + 清空 + Clear + + + 开始时间 + Start Time + + + 结束时间 + End Time + + + 查询 + Search + + + 上一页 + Preview + + + 下一页 + Next + + + 一小时 + One Hour + + + 八小时 + Eight Hour + + + 一天 + One Day + + + 曲线 + Curve + + + 表格 + Table + + + 错误 + Error + + + 当前趋势曲线已达最大支持数量[64]! + The current trend curve has reached the maximum number of supports [64]! + + + 实时趋势 + Realtime + + + 秒趋势 + Second + + + 日趋势 + Day + + + 周趋势 + Week + + + 月趋势 + Month + + + 季度趋势 + Quarter + + + 年趋势 + Year + + + 自定义趋势 + Custom + + + 保存为 + Save as + + + 提示 + Prompt + + + 保存成功 + Save successed + + + 保存失败 + Failure to save + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + 请选择告警状态 + Select Alarm State + + + 查询中 + Searching + + + 查询开始时间不能大于结束时间! + The start time cannot more than the end time! + + + 开始时间和结束时间之差不能小于查询时间间隔! + The difference between the start time and the end time cannot less than the time interval! + + + 一秒种 + One Second + + + 一分种 + One Minute + + + 十分种 + Ten Minute + + + yyyy/MM/dd HH:mm + yyyy/MM/dd HH:mm + + + 一秒钟 + One Second + + + 一分钟 + One Minute + + + 十分钟 + Ten Minute + + + 双击输入值 + Input on double click + + + 当前趋势曲线已达最大支持数量[%1]! + The current trend curve has reached the maximum supported quantity of [%1]! + + + 昨日曲线- + Yesterday's Curve - + + + (*.jpg) + (*.jpg) + + + (*.xlsx) + (*.xlsx) + + + + CPointLockWidget + + 添加 + Add + + + 删除 + Delete + + + 确认 + Confirm + + + 闭锁配置 + Interlock Configuration + + + 1-1AH5-断路器 + 1-1AH5 + + + 控制状态 + Control Status + + + 启用 + Enable + + + 取消 + Cancel + + + 条件 + Condition + + + 无 + None + + + 小于 + < + + + 小于等于 + <= + + + 等于 + == + + + 大于等于 + >= + + + 大于 + > + + + 不等于 + != + + + 且 + and + + + 设备列表 + Device List + + + 状态值 + Status Value + + + 提示 + Prompt + + + 请选中需要删除的行 + Please select a row + + + 请选择测点标签 + Please add a point + + + 添加失败 + Failure to add + + + + CPointRealDataWidget + + 通讯状态 + Communication status + + + 正常 + Normal + + + 异常 + Abnormal + + + 未找到组号%1! + Not found group %1! + + + + CPreviewForm + + + + + + + + + + + + + + + + + + + + + + + + + + 新建项目 + New Item + + + + CPrintPreview + + Print Preview + Print Preview + + + Print... + Print... + + + Next + Next + + + Prev + Prev + + + Single/Dual + Single/Dual + + + Zoom In + Zoom In + + + Zoom Out + Zoom Out + + + Close + Close + + + + CProcessBarDialog + + Dialog + Dialog + + + 取消 + Cancel + + + + CProcessDialog + + Form + Form + + + 取消 + Cancel + + + + CPropertyDialog + + Dialog + Dialog + + + 备注 + Remark + + + 设备名称 + Device Name + + + 确认 + Confirm + + + 添加 + Add + + + 编辑 + Edit + + + 安装日期 + Installation Date + + + 型号 + Type + + + 参数 + Parameter + + + 维护周期 + Maintenance Period + + + yyyy-MM-dd + yyyy-MM-dd + + + 厂家联系方式 + Manufacturer Contact + + + 所属设备组 + Device Group + + + 状态 + State + + + 取消 + Cancel + + + 已启用 + Enable + + + 一个月 + One Month + + + 三个月 + Three Months + + + 半年 + Six Months + + + 一年 + One Year + + + 提示 + Prompt + + + 设备名称不能为空! + Device name cannot be empty! + + + 操作失败,请重新操作! + Failed,please try again! + + + + CQssEditor + + + 样式编辑器 + QssEditor + + + + CRealTableModel + + 测点 + Measuring Point + + + 点类型 + Point Type + + + 设备 + Device + + + 值 + Value + + + 状态 + Status + + + + CRecordDialog + + Dialog + Dialog + + + 导出 + Export + + + 删除 + Delete + + + 添加 + Add + + + 时间 + Time + + + 关键字 + Keywords + + + 查询 + Search + + + 当前未选中任何项! + No item is currently selected! + + + Save File + Save File + + + ~ + ~ + + + 对开始时间和结束时间日期生效 + Effective for start time and end time + + + 对设备名称、记录名称、操作人和维护内容生效 + Effective for device name、record name、operator and maintenance content + + + %1 维护记录 + %1 maintenance records + + + 提示 + Prompt + + + 删除失败! + Failure to delete! + + + 删除成功! + Successful delete! + + + 开始时间不能大于结束时间! + The start time cannot more than end time! + + + + CRecordForm + + Form + Form + + + 序号 + Number + + + 操作人 + Operator + + + 监护人 + Guardian + + + 值班负责人 + Principal + + + 描述 + Description + + + 备注 + Remark + + + 刷新 + Refresh + + + 未执行 + Non execution + + + 未确认 + Unconfirmed + + + 检索条件 + Filter + + + 按值班负责人 + Principal + + + 按票名包含 + Ticket name + + + 按操作人 + Operator + + + 按操作票号 + Operation Banks + + + 按执行时间 + Execution time + + + 按完成时间 + Finish time + + + 按监护人 + Guardian + + + 操作票号 + Operation Banks + + + 操作票名 + Ticket name + + + 开始时间 + Start time + + + 结束时间 + End time + + + 执行状态 + Execution status + + + 详细 + Detail + + + 已执行 + Executed + + + 提示 + Prompt + + + 请选择一项! + Please select one item! + + + + CRecordPropertyDialog + + Dialog + Dialog + + + 确认 + Confirm + + + 添加 + Add + + + 编辑 + Edit + + + 维护名称 + Maintenance name + + + 维护人 + Maintainer + + + 维护开始时间 + Maintenance start time + + + yyyy-MM-dd + yyyy-MM-dd + + + 维护结束时间 + Maintenance end time + + + 维护内容 + Maintenance content + + + 取消 + Cancel + + + 提示 + Prompt + + + 记录名称不能为空! + The record name cannot be empty! + + + 开始时间不能大于结束时间! + The start time cannot more than the end time! + + + 操作失败,请重新操作! + Failed,please try again! + + + + CRecordTablModel + + 设备名称 + Device Name + + + 操作人 + Operator + + + 记录名称 + Record name + + + 开始时间 + Start time + + + 结束时间 + End time + + + 维护内容 + Maintenance content + + + + CRecordWidget + + 保存 + Save + + + 处理问题 + Handling problem + + + 上班遗留问题 + Last leftover problem + + + 当班处理问题 + Handling problem on duty + + + 当班遗留问题 + Leftover problem on duty + + + 关键信息备注 + Key information notes + + + + CRelaySettingWidget + + 序号 + Number + + + 确认 + Confirm + + + 清空 + Clear + + + 保护定值管理 + Relay settting management + + + 切换 + Switch + + + 当前执行组: + Current group: + + + 前置设备 + Front equipment + + + 定值名称 + Name + + + 定值组号 + Group No + + + 当前值 + Current Value + + + 预置值 + Preset Value + + + 返校值 + Return Value + + + 范围 + Range + + + 单位 + Unit + + + 定值代号 + Code No + + + isError + isError + + + 读取 + Read + + + 修改 + Modify + + + 提示 + Prompt + + + 未知值:%1 + Unknown Value:%1 + + + 无保护定值操作权限! + Not relay setting operate perm! + + + 行:%1,当前值无效,请先读取! + Row:%1,current value is invalid,please read first! + + + 行:%1,预置值无效,请先读取! + Row:%1,preset value is invalid,please read first! + + + 行:%1,预置值不在设定范围! + Row:%1,preset value is beyond the range! + + + 行:%1,返校值无效! + Row:%1,return value is invalid! + + + 行:%1,预置值与返校值不一致! + Row:%1,preset value is inconsistent with return value! + + + 请先查询当前执行组! + Please read current group first! + + + 设置的组号应不为当前执行组! + Setting group no cannot equal to current group no! + + + 验证 + Verification + + + 权限验证 + Permissions validation + + + 请选择切换组! + Please select one group! + + + 未选择设备! + Not device selected! + + + 无定值组配置! + Not setting group configuration! + + + 接收超时! + Receive timeout! + + + 发送命令失败! + Failure to send command! + + + + CReportFavTreeWidget + + 收藏夹 + Favorite + + + 报表管理 + Report Management + + + 请输入收藏报表名称 + Please enter the favorite report name + + + 报表名不能为空! + The report name cannot be empty! + + + 当前收藏报表名称已存在! + The current favorite report name already exists! + + + 重命名 + Rename + + + 删除 + Delete + + + 当前报表名称已存在! + The current report name already exists! + + + 选择报表收藏文件 + Select report favorite file + + + 保存报表收藏文件 + Save report favorite file + + + + CReportStackedWidget + + 返回 + Return + + + + CReportWidget + + 导出报表 + Export the report + + + + CRetriever + + + + 检索器 + Retriever + + + + + + + 专业: + Subsystem: + + + + + + + 位置: + Location: + + + 设备类型: + Device Type: + + + + + 设备组: + Device Group: + + + + 表名: + Table Name: + + + + 统计量模板: + Statistical template: + + + + 表检索 + Table + + + + 检索方式: + Retriever Mode: + + + + 设备检索 + Device + + + + 统计量 + Statistical + + + + 多点关联 + Multipoint + + + + 设备组检索 + Device Group Retrieval + + + + 点类型: + Point Type: + + + + 值: + Value: + + + + 点名: + Point Name: + + + + 列名: + Column Name: + + + + + 数字量 + Digital + + + + + 模拟量 + Analog + + + + + 混合量 + Mix + + + + + 累积量 + Accuml + + + + + 常量 + Const + + + + + 通用 + General + + + + + 其他 + Other + + + 关键字 + Keywords + + + + 值 + Value + + + + 状态 + State + + + + 时间 + Time + + + + CRobotAVWidget + + Form + Form + + + current time + current time + + + duration + duration + + + + CRobotCCDVideoForm + + Form + Form + + + 请输入关键字 + Please input keyword + + + + CRobotCCDVideoItemModel + + 时间 + Time + + + 类型 + Type + + + 设备柜 + Device + + + 照片 + Picture + + + 截图 + Screenshot + + + 录像 + Video + + + + CRobotCtrlWidget + + Form + Form + + + 请选择设备 + Please select a device + + + 执行任务 + Execute Task + + + 空闲中 + Idle + + + 巡检中 + Patrolling + + + 充电中 + Charging + + + 检修中 + Under Maintenance + + + 告警联动: + Alarm Linkage: + + + 机器人状态 + Robot Status + + + 执行任务超时! + Task Execution Timeout! + + + 未找到控制点[%s] + Control Point [%s] Not Found + + + 解析返回结果出错 + Error Parsing Return Result + + + + CRobotDialog + + Dialog + Dialog + + + 机器人联动 + Robot Interlocking + + + + CRobotWidget + + CRobotLinkCtrlWidget + CRobotLinkCtrlWidget + + + + CRollSwitchWidget + + 播放组 + Group + + + 画面文件名称 + Graph Name + + + 画面轮询间隔(s) + Interval + + + 自动轮询(设定的时间内,未检测到键鼠操作,自动轮询播放画面) + Auto-polling (If no keyboard or mouse operation is detected within the set time, auto-polling will play the screen) + + + 自动轮询 + Autopolling + + + 开始 + Start + + + 停止 + Stop + + + 关闭 + Close + + + 自动轮询时间(s) + Autopolling Delay(s) + + + 自动轮询(设定的时间内,未检测到鼠标移动,自动轮询播放画面) + Autopolling(Auto switching graph when not mouse move in setting time) + + + 轮询时间(s) + Autopolling time(s) + + + + CRunSequenceFilterDialog + + 过滤 + Filter + + + 关键字 + Keywords + + + 顺控名称: + Sequence name: + + + 类型 + Type + + + 标准顺控 + Standard sequence + + + 自定义顺控 + Custom sequence + + + 位置 + 车站 + Location + + + 位置名称: + 车站名称: + Location name: + + + + CRunningSequenceModel + + 名称 + Name + + + 车站 + Location + + + 类型 + Type + + + 执行结果 + Executing results + + + 位置 + Location + + + 标准顺控 + Standard sequence + + + 自定义顺控 + Custom sequence + + + 未执行 + non-execution + + + 正在执行 + executing + + + 已触发 + triggered + + + 执行失败 + execution failure + + + 执行成功 + execution success + + + 执行终止 + execution termination + + + 执行暂停 + execution pause + + + 执行跳过 + execution skip + + + + CScreenShot + + + 保存图像 + Save Image + + + + 图形文件 (*.png) + Graphics file(*.png) + + + + CSearchDialog + + + 查找和替换 + Find && Replace + + + + CSecondNavigationWidget + + 是 + Yes + + + 否 + No + + + 切换画面 + Switch Screen + + + 调用程序 + call program + + + 导入 + Import + + + 导出 + Export + + + 一级 + First Level + + + 二级 + Second Level + + + 三级 + Third Level + + + 是否使用 + Enable + + + 操作 + Operation + + + 图标 + Icon + + + 数据 + Data + + + 提示 + Hint + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + 保存失败 + Save Failed + + + 属性配置 + Property Configuration + + + 全部展开 + ExpandAll + + + 全部收缩 + CollapseAll + + + + CSecondReportWidget + + 结束时间晚于开始时间,请调整时间之后再查询! + The end time is later than the start time, please adjust the time and then search again! + + + 未选择测点,请选择测点之后再查询报表! + No measuring point selected, please select a measuring point and then search for the report! + + + 暂不支持10000条以上数据的查询,请调整查询时间或时间间隔之后再查询! + Querying more than 10,000 data entries is not supported at the moment. Please adjust the query time or time interval and try again! + + + 开始时间 + Start Time + + + 查询时间 + Search time + + + 当前登录用户无运维管理功能权限! + The current logged-in user does not have permission for operational management functions! + + + 导出表头失败: +无法打开文件! + Failed to export header: +Unable to open the file! + + + 导出表头至: + + Export header to: + + + 当前登录用户无运维管理功能权限! + Current user have no perm to operate! + + + 报表管理 + Report Management + + + 导入表头失败: +导入格式错误,仅支持csv文件! + Failed to import header: +Incorrect import format, only CSV files are supported! + + + 导入表头失败: +无法打开导入的文件! + Failed to import header: +Unable to open the file for import! + + + 导入表头失败: +表头长度与现有表头长度不一致! + Failed to import header: +The length of the header does not match the existing header length! + + + 导入表头成功! + Header imported successfully! + + + 报表数据为空,请先查询报表数据! + The report data is empty, please query the report data first! + + + 导出报表失败: +无法打开文件! + Failed to export report: +Unable to open the file! + + + 导出表格成功! + Table exported successfully! + + + 查询终止! + Query terminated! + + + 该时间段无数据! + No data available for the specified period! + + + 生成报表失败! + Failed to generate report! + + + + CSecondReportWidgetClass + + test + Test + + + 日报表 + Daily Report + + + 月报表 + Monthly Report + + + 年报表 + Annual Report + + + 自定义 + Custom + + + 是否统计 + Statistics + + + 查询 + Search + + + 收藏 + Favorite + + + 导出表头 + Export Header + + + 导入表头 + Import Header + + + 导出表格 + Export Table + + + 开始时间 + Start Time + + + 年 + Year + + + 月 + Month + + + 日 + Day + + + 时 + Hour + + + 分 + Minute + + + 结束时间 + End Time + + + 时间间隔 + Time Interval + + + 1年 + 1年 + + + 1个月 + 1 Month + + + 1天 + 1天 + + + 1小时 + 1 Hour + + + 30分钟 + 30 Minutes + + + 15分钟 + 15 Minutes + + + 全部 + All + + + + CSeqPermDialog + + 验证 + Verification + + + 操作验证 + Operation validation + + + 用户组 + User group + + + 姓名 + User name + + + 密码 + Password + + + 账号 + User alias + + + 监护验证 + Guardian validation + + + 取消 + Cancel + + + 监护验证: + Guardian validation: + + + 操作验证: + Operation validation: + + + %1输入名称不存在! + The input name %1 does not exist! + + + %1无遥控监护权限! + %1 have no perm guard! + + + %1无顺控执行权限! + %1 have no perm to execute sequence! + + + %1不允许在该节点登录! + %1 Logon on this node is not allowed! + + + %1用户口令错误! + %1 Password error! + + + %1用户已失效! + %1 User deactivated! + + + %1用户已锁定! + %1 User locked! + + + %1用户不属于所选用户组! + The user %1 does not belong to the selected user group! + + + %1用户权限检查出错! + %1 check failed! + + + 提示 + Prompt + + + 监护验证: 输入账号有误! + Guardian validation: incorrect input name! + + + 监护人和操作人不能为同一人! + Guardian and operator can not be the same person! + + + + CSequenceManageWidget + + 顺控配置 + Configuration + + + 顺控执行 + Execute + + + 顺控报告 + Report + + + 所有顺控 + All sequence + + + 正在执行 + Executing + + + 过滤 + Filter + + + 历史列表 + History List + + + 执行详情 + Execute details + + + 导出 + Export + + + 打印 + Print + + + 提示 + Prompt + + + 无顺控操作权限! + No sequence control operation permission! + + + CSequenceManageWidget + CSequenceManageWidget + + + Save File + Save File + + + (*.pdf *) + (*.pdf *) + + + + CSequenceWidget + + 顺控 + Sequence + + + 顺控名称: + Sequence Name: + + + 执行方式: + Executive Mode: + + + 自动 + Automatic + + + 单步 + Step + + + 执行 + Execute + + + 暂停 + Pause + + + 终止 + Terminate + + + 正在检查控制点状态,请稍等 + Check the status of control point, please wait a moment + + + 正在查询... + Being queried... + + + 服务应答 [%1]:%2 + Service response [%1]:%2 + + + 服务应答-错误 [%1] + Service response-error [%1] + + + 顺控名称: + Sequence name: + + + 错误代码: + Error code: + + + 错误描述: + Error description: + + + 状态变化 [顺控-%1]:%2 + Change of state [Sequence-%1]:%2 + + + 状态变化 [顺控-%1] [功能-%2]:%3 + Change of state [Sequence-%1] [Function-%2]:%3 + + + 状态变化 [顺控-%1] [功能-%2] [动作-%3]:%4 + Change of state [Sequence-%1] [Function-%2] [Action-%3]:%4 + + + 顺控名称 + Sequence name + + + 功能名称 + Function name + + + 动作名称 + Action name + + + 请求人工干预! + Manual intervention request! + + + 人工干预请求 + Manual intervention request + + + 重试 + Retry + + + 跳过 + Skip + + + 等待执行... + Wait for execution... + + + 等待暂停... + Wait for pause... + + + 等待继续... + Wait for continue... + + + 等待终止... + Wait for termination... + + + 顺控开始 + Sequence start + + + 顺控终止 + Sequence termination + + + 顺控暂停 + Sequence pause + + + 顺控继续 + Sequence continue + + + 单步开始 + One step to start + + + 单步继续 + One step to continue + + + 未执行 + non-execution + + + 正在执行 + executing + + + 已触发 + triggered + + + 执行失败 + execution failure + + + 执行成功 + execution success + + + 执行终止 + execution termination + + + 执行暂停 + execution pause + + + 执行跳过 + execution skip + + + 继续 + Continue + + + + CSeriaDevTableModel + + 序号 + Serial Number + + + 位置 + Location + + + 通道描述 + Channel Description + + + RTU描述 + RTU Description + + + 设备描述 + Device + + + 端口名 + Port Name + + + 设备ID + DeviceId + + + 通讯状态 + Communication status + + + 通讯中断 + Communication Interrupted + + + 通讯正常 + Communication Normal + + + + CSerialDevStatusWidget + + RTU/端口 + RTU/Port + + + + CShape + + + 画笔 + Pen + + + + 画刷 + Brush + + + + %1 + + %1 + + + + + CShapeConfigDialog + + + 数据绑定 + Data Binding + + + 函数绑定 + Function Binding + + + + 策略配置 + Strategy Configuration + + + 属性配置 + Properties Configuration + + + + 标签名称 + Label Name + + + + 文本内容 + Text content + + + + + 确认 + Confirm + + + + + 取消 + Cancel + + + + + 清空 + Clear + + + + 语法检查 + Syntax checking + + + 新建策略 + New strategy + + + 删除策略 + Delete strategy + + + 取消选中 + Uncheck + + + + 添加行 + Add row + + + + 删除行 + Delete row + + + + Error + Error + + + + Information + Information + + + + 语法正确, 脚本有效。 + Syntax correct, script valid. + + + + 策略名称: + Strategy name: + + + + 着色策略配置 + Colorization Policy Configuration + + + + 函数代码 + Function Name + + + + 函数名称 + Description + + + + 新建 + New + + + + 删除 + Delete + + + + 复制 + Copy + + + + 修改 + Modify + + + + 函数编辑 + Function Editor + + + + 策略描述: + Description: + + + + + + + + 提示 + Prompt + + + + 策略名称不能为空! + The strategy name cannot be empty! + + + + 策略描述不能为空! + The description cannot be empty! + + + + 非法的命名 + Illegal name + + + + 策略名称已经存在, 不能重复创建! + The strategy name already exists and cannot be repeated! + + + + 策略名称不能以数字开头! + Strategy names cannot begin with Numbers! + + + + 警告 + Warning + + + + 当前未选中行! + Currently unchecked row! + + + + CShieldTableDelegate + + 删除 + Delete + + + 启用 + Enable + + + 取消 + Disable + + + 提示 + Prompt + + + 请先取消屏蔽! + Please disable first! + + + 删除失败! + Delete failure! + + + 当前用户无标签设置功能权限! + The current user have no perm to operate! + + + + CShieldTableModel + + 名称 + Name + + + 屏蔽类型 + Type + + + 屏蔽属性 + Property + + + 屏蔽模式 + Mode + + + 是否启用 + Status + + + 时段类型 + Time Type + + + 屏蔽时段 + Time + + + 操作用户 + User + + + 操作主机 + Hostname + + + 屏蔽描述 + Description + + + 操作 + Operate + + + 全站屏蔽 + Location + + + 电压屏蔽 + Voltage + + + 责任区屏蔽 + Region + + + 设备组屏蔽 + DeviceGroup + + + 设备屏蔽 + Device + + + 测点屏蔽 + Point + + + 未知 + Unknown + + + 已过期 + Expired + + + 已启用 + Enable + + + 未启用 + Disable + + + 一次性屏蔽 + Once + + + 每周 + Week + + + 每月 + Month + + + 每周( + Week( + + + 每月( + Month( + + + + CShiftWidget + + 查询 + Search + + + 保存 + Save + + + 序号 + Number + + + 交接班管理 + Shift Management + + + 当前值班组 + Current duty group + + + 填写记录 + Input record + + + 交接班 + Duty shift + + + 查询时间 + Search time + + + 按值班员过滤 + Filter by duty person + + + 导出记录 + Export + + + 班组 + Work groups + + + 值班员 + Duty person + + + 接班时间 + Take over time + + + 交班时间 + Shift time + + + 本班处理问题 + Handling problem on duty + + + 本班遗留问题 + Leftover problem on duty + + + 关键信息备注 + Key information notes + + + + CSimOptWidget + + 序号 + Number + + + CSimOptWidget + CSimOptWidget + + + 开始模拟操作 + Begin + + + 图形列表 + Graph List + + + 提示 + Prompt + + + 当前登录用户无运维管理功能权限! + Current user have no perm to operate! + + + 请选择一张图形! + Please select one graph! + + + 确定打开图形:"%1",开始模拟操作? + Confirm open graph:"%1",begin simulate? + + + + CSliderRangeWidget + + 最小值: + Minimum: + + + 最大值: + Maximum: + + + 确定 + Confirm + + + 取消 + Cancel + + + + CSpinBoxGroup + + + + 错误 + Error + + + + 的最小值不能超过最大值! + s minimum cannot exceed the maximum! + + + + 的最大值不能小于最小值! + s maximum cannot less than the minimum! + + + + CStationNavWidget + + Form + Form + + + + CStatisWidget + + Form + Form + + + 统计方式: + Statistical Style: + + + 设备类型: + Device Type: + + + 开始时间: + Start Time: + + + 结束时间: + End Time: + + + 查询 + Search + + + 打印 + Print + + + 日统计 + Day + + + 月统计 + Month + + + 年统计 + Year + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + 结束时间不能小于开始时间! + The end time cannot be less than start time! + + + 位置: + Location: + + + yyyy-MM-dd + yyyy-MM-dd + + + 告警等级: + Alarm level: + + + Excel + Excel + + + Pdf + Pdf + + + 报表 + Report + + + 图表 + Chart + + + 保存为 + Save as + + + (*.jpg) + (*.jpg) + + + 提示 + Prompt + + + 保存失败 + Failed to save + + + 日统计最多查询31天! + Maximum query time was 31 days on day! + + + 月统计最多查询12月! + Maximum query time was 12 months on month! + + + 年统计最多查询2年! + Maximum query time was 2 years on year! + + + 至少勾选一个告警等级! + Check one alarm level at least! + + + + CStrategyConfigDelegate + + + 颜色选择 + Color + + + + CStrategyConfigModel + + + 合成值 + Synthetic value + + + + 线色 + Line color + + + + 填充色 + Fill color + + + + 闪烁线色前景色 + The foreground color of the flicker line + + + + 闪烁线色背景色 + The background color of the flicker line + + + + 闪烁填充前景色 + The foreground color of the flicker fill + + + + 闪烁填充背景色 + The background color of the flicker fill + + + + 图元平面 + Primitive plane + + + + 是否闪烁 + Whether Flicker + + + + 闪烁频率 + Flicker frequency + + + + 是否显示 + Whether Display + + + + 警告 + Warning + + + + 当前合成值已经存在! + The current composite value already exists! + + + + CSysParamWidget + + CSysParamWidget + CSysParamWidget + + + IP设置 + IP Settings + + + 查询 + Search + + + 设置 + Config + + + 网卡 + Network Card + + + 子网掩码 + Subnet Mask + + + IP地址 + IP Address + + + 网关 + Gateway + + + 日期 + Date + + + yyyy-MM-dd + yyyy-MM-dd + + + 时间 + Time + + + hh:mm:ss + hh:mm:ss + + + 时间设置 + Time Settings + + + NTP设置 + NTP Settings + + + 是否开启NTP + Enable NTP + + + 是 + Yes + + + 否 + No + + + NTP服务器 + NTP Server + + + NTP设置失败:%1,主机名:%2 + NTP setting failed: %1, hostname: %2 + + + NTP设置成功 + NTP setting succeeded + + + 时间设置失败:%1,主机名:%2 + Time setting failed: %1, hostname: %2 + + + 时间设置成功 + Time setting succeeded + + + IP设置失败:%1,主机名:%2 + IP setting failed: %1, hostname: %2 + + + IP设置成功 + IP setting succeeded + + + + CTableDataModel + + 提示 + Prompt + + + 只显示前%1条记录! + Onle the %1 records is displayed! + + + 时间 + Time + + + + CTableDelegata + + 是 + Yes + + + 否 + No + + + + CTableModel + + 统计日期 + Statistical Date + + + 区域名称 + Location + + + 设备类型 + Device Type + + + %1总数 + Number of %1 + + + 图元名称 + Element Name + + + 触发动作 + Trigger Action + + + 控制面板 + Control Panel + + + 默认着色策略 + Default Coloring Strategy + + + 模拟操作 + Simulation Operation + + + + CTableViewExport + + 保存 + Save + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + 提示 + Prompt + + + 保存失败 + Failure to save + + + + CTagSourceCfgDialog + + + + 数据源配置 + Data source configuration + + + + 取消 + Cancel + + + + 确定 + Confirm + + + + CTextPrinter + + 另存PDF文件为 + Save as PDF file + + + PDF文件(*.pdf) + PDF file(*.pdf) + + + + CTextReplacer + + + Dialog + Search Dialog + + + + 查找: + Find: + + + + 替换为: + Replace With: + + + + 替换 + Replace + + + + 大小写匹配 + Case Sensitive + + + + 文本替换 + Text Replace + + + + CToolTip + + 全部 + All + + + 告警列表 + Alarm List + + + 时间 + Time + + + 告警内容 + Alarm Content + + + + CTreeItemDelegate + + 切换导航 + Switch navigation + + + 加载网页 + Load Web Page + + + + CTrendDelegate + + 颜色选择 + Color Selection + + + + CTrendEditDialog + + 趋势编辑 + Trend Editor + + + 取消 + Cancel + + + 确定 + Confirm + + + 添加 + Add + + + 删除 + Delete + + + 清空 + Clear + + + 警告 + Warning + + + 测点数量不允许为空! + The number of measuring points is not allowed to be empty! + + + 测点名称不允许存在空值! + The name of measuring points are not allowed to be null! + + + 提示 + Prompt + + + 当前未选中行! + Not row selected currently! + + + + CTrendEditModel + + 测点名称 + The name of measuring points + + + 颜色 + color + + + 点标签非法 + Illegal point label + + + 只能添加模拟量和累积量! + Only analog and cumulative quantities can be added! + + + 只能添加模拟量! + Only analog can be added! + + + 该测点已存在! + The measuring point already exists! + + + 测点标签 + Measurement Point Label + + + + CTrendEditView + + 提示 + Prompt + + + 请选中一行! + Select a row please! + + + 警告 + Warning + + + 该测点已存在! + The measuring point already exists! + + + + CTrendFavTreeWidget + + 收藏夹 + Favorite + + + 错误 + Error + + + 当前趋势名称已存在! + The name of trend is already exist! + + + 添加趋势 + Add trend + + + 导入 + Import + + + 显示 + Show + + + 编辑 + Edit + + + 趋势名称不允许为空,自动重命名! + The trend name cannot be empty, it will be automatically renamed! + + + 当前趋势名称已存在,自动重命名! + The current trend name already exists, it will be automatically renamed! + + + 重命名 + Rename + + + 删除 + Delete + + + 导出 + Export + + + 提示 + Prompt + + + 确定删除所选项吗? + Are you sure you want to delete the selected item(s)? + + + 选择趋势收藏文件 + Select file + + + 保存趋势收藏文件 + Save file + + + + CTrendTreeView + + 全选 + Check All + + + 清空 + Clear + + + 刷新 + Refresh + + + + CTrendWindow + + 设备/点 + Device/Point + + + 收藏夹 + Favorite + + + 错误 + Error + + + 趋势名称不允许为空! + Trend names are not allowed to be empty! + + + 最小值不能大于最大值! + The minimum cannot be greater than the maximum! + + + 设备/测点 + Device/Measurement Point + + + + CWaittingDlg + + 报表管理 + Report Management + + + 查询中,请等待或终止查询 . . . +(退出窗口默认终止查询) + Query in progress, please wait or terminate the query... +(Exiting the window will terminate the query by default.) + + + 终止查询 + Terminate Query + + + + CWaveAnalyzeWidget + + CWaveAnalyzeWidget + CWaveAnalyzeWidget + + + 开始日期 + Start Date + + + 结束日期 + End Date + + + 查询 + Search + + + 打开 + Open + + + 删除 + Delete + + + 导出 + Export + + + 打印 + Print + + + 文件列表 + File List + + + Error + Error + + + 提示 + Note + + + 开始时间应小于结束时间 + The start time should be earlier than the end time. + + + + CWaveGraph + + Trigger Line + Trigger Line + + + Line B + Line B + + + Line C + Line C + + + + CWaveListDialog + + Dialog + Dialog + + + + CWaveShow + + Save Wave Graph + Save Wave Graph + + + Save File + Save File + + + Save Successfully! + Save Successfully! + + + + CWebEngineView + + Render process normal exit + Render process normal exit + + + Render process abnormal exit + Render process abnormal exit + + + Render process crashed + Render process crashed + + + Render process killed + Render process killed + + + 刷新 + Refresh + + + 后退 + Back + + + 前进 + Forward + + + + CWebPublish + + + web发布 + Web Publishing + + + + + + 提示 + Prompt + + + + 只能在服务器上进行Web发布! + Web publishing only on the server! + + + + 发布成功! + Publish Success! + + + + 发布失败! + Publish Failure! + + + + CWorkTicketManage + + 票库管理 + Ticket Library + + + 开票 + Ticket + + + 删除 + Delete + + + 开票记录 + Ticket Record + + + 名称 + Name + + + 类型 + Type + + + 文件路径 + File Path + + + 请选中一条记录! + Please select a record! + + + 确认删除 + Confirm + + + 是否删除 %1 ? + Delete %1 ? + + + 提示 + Prompt + + + 删除失败 + Failed to delete + + + Form + Form + + + 当前登录用户无运维管理功能权限! + Current user have no perm to operate! + + + + CWorker + + 设备名称 + Device Name + + + 备注 + Remark + + + 操作人 + Operator + + + 设备id + DeviceId + + + 型号 + Type + + + 参数 + Parameter + + + 安装日期 + Installation Date + + + 状态 + State + + + 厂家联系方式 + Manufacturer Contact + + + 维护周期(月) + Maintenance Period(month) + + + 所属设备组描述 + Device Group + + + 所属设备组标签 + Device Group Tag + + + 导出资产信息成功 + Successful export asset info + + + 记录id + RecordId + + + 设备描述 + Device + + + 记录名称 + Record Name + + + 开始时间 + Start Time + + + 结束时间 + End Time + + + 维护内容 + Maintenance Content + + + 导出维护记录成功 + Successful export maintenance records + + + 导入资产信息失败,文件打开失败! + Failure to import asset info,failed to open file! + + + 部分设备组标签不存在 + Part of device group tag does not exist + + + 导入维护记录失败,文件打开失败! + Failure to import maintenance records,failed to open file! + + + 部分资产不存在 + Part of asset not exist + + + + ChanParaWidget + + Form + Form + + + 网口参数 + Network Port Parameters + + + 串口参数 + Serial Port Parameters + + + 确认修改 + Confirm Changes + + + 重启通道 + Restart Channel + + + 通道使能 + Channel Enabled + + + 通道名称 + Channel Name + + + 通道描述 + Channel Description + + + 通道号 + Channel Number + + + 波特率 + Baud Rate + + + 校验位 + Parity + + + 通道IP1 + NET_DESC1 + + + 端口号1 + PORT_NO1 + + + 通道IP2 + NET_DESC2 + + + 端口号2 + PORT_NO2 + + + 通道IP3 + NET_DESC3 + + + 端口号3 + PORT_NO3 + + + 通道IP4 + NET_DESC4 + + + 端口号4 + PORT_NO4 + + + 本地端口号 + RES_PARA_INT4 + + + 警告 + Warning + + + 无修改权限! + No permission to modify! + + + 初始化权限失败! + Failed to initialize permissions! + + + 提示 + Note + + + 重启成功 + Restart successful + + + 确定 + OK + + + 取消 + Cancel + + + 修改完成 + Modification completed + + + 没有修改数据记录! + No data records were modified! + + + + ChanStatusWidget + + 位置 + Location + + + 否 + No + + + 是 + Yes + + + 未知 + Unknown + + + 采集通道 + Data Acquisition Channel + + + 转发通道 + Forwarding Channel + + + + ChanTableModel + + 序号 + Serial Number + + + 位置 + Position + + + 通道号 + Channel Number + + + 通道描述 + Channel Description + + + 通道使能 + Channel Enabled + + + 通讯性质 + Communication Nature + + + 通讯规约 + Communication Protocol + + + 通道地址 + Channel Address + + + 通道状态 + Channel Status + + + 保留未用 + Reserved Unused + + + 通道检测 + Channel Detection + + + 通道运行 + Channel Running + + + 通道停止 + Channel Stopped + + + 接收帧错误率高 + High Frame Error Rate + + + + ConfigWidget + + 分组管理 + Group + + + 新增 + Add + + + 删除 + Delete + + + 上移 + Up + + + 下移 + Down + + + 保存 + Save + + + 轮询组 + Polling Group + + + 画面文件名称 + Graph Name + + + 是否启用 + Enable + + + 画面轮询间隔(s) + Interval + + + 画面文件名称不能为空! + Graph name cannot be empty! + + + 保存成功 + Save success + + + 保存失败 + Fail to save + + + 是 + Yes + + + 否 + No + + + 提示 + Prompt + + + + ContrastWidget + + Form + Form + + + 统计方式: + Statistical Style: + + + 查询 + Search + + + 打印 + Print + + + 清空 + Clear + + + 全选 + Check All + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + 对比方式: + Compare Style: + + + 对比时间: + Compare Time: + + + 报表 + Report + + + 图表 + Chart + + + 最严重告警设备 + The most serious alarm device + + + 设备 + Device + + + 按位置统计 + Statistics by location + + + 按设备类型统计 + Statistics by device type + + + 日 + Day + + + 月 + Month + + + 年 + Year + + + 提示 + Prompt + + + 请至少选择一项! + Please select one item! + + + 总共: + Total: + + + 保存为 + Save as + + + 保存失败 + Failed to save + + + + FaultRecordModel + + 时间 + Time + + + 位置 + Location + + + 设备名 + Dev Name + + + 文件名 + File Name + + + + FaultRecordWidget + + 故障录波记录 + Fault Record + + + 位置 + Location + + + 设备 + Dev + + + 开始时间 + Start Time + + + 结束时间 + End Time + + + 刷新 + Refresh + + + 删除 + Delete + + + 打开 + Open + + + 全部删除 + All Delete + + + All + All + + + 提示 + Tip + + + 当前未选中任何项 + No rows are currently selected + + + 开始时间不能大于结束时间! + Start time cannot be greater than end time ! + + + 确定 + OK + + + 不存在%1位置! + Does not exist %1 location ! + + + 当前用户不具有删除权限 + Current user have not perm to delete + + + + FilepathWidget + + + ... + + + + + + + 打开文件 + Open File + + + + FindReplaceDlg + + + 联库替换 + 连库替换 + Connection Replace + + + + 连设备组 + DevGroup + + + + 连位置 + Location + + + + 连设备 + Deviece + + + + 替换前: + Before: + + + + 替换 + Replace + + + + 替换后: + After: + + + + 关闭 + close + + + + 区分大小写 + Case Sensitive + + + + 整站连接 + Site Connect + + + + FindWidget + + + Form + FindDialog + + + + Find : + + + + + Find Next + + + + + Find Prev + + + + + Replace : + + + + + Replace + + + + + Replace All + + + + + Case Sensitive + + + + + Whole Words + + + + + GradientDialog + + + Dialog + + + + + Gradient + + + + + Fill Type: + + + + + Start Color + + + + + End Color + + + + + Preview + + + + + HandoverWidget + + 交接班 + Duty shift + + + 操作记录 + Operate Events + + + 值班信息 + Duty info + + + 关键告警 + Key Alarms + + + 工作票 + Work Tickets + + + 交班班组: + Shift group: + + + 接班班组: + Take over group: + + + 接班员 + Take over person + + + 密码 + Password + + + 接班签到 + Sign in + + + 确认交接 + Confirm to shift + + + 未签到 + Signed In + + + 已签到 + Not Sign In + + + + HistoryWidget + + 开始时间 + Start Time + + + 结束时间 + End Time + + + 查询 + Search + + + 重开 + reTicket + + + 消息 + Infomation + + + 链接数据库错误 + Linked database error + + + 历史数据过多!表格仅展示查询结果的10000条 +更多数据查看,请缩小起始时间和结束时间之差 + Too much historical data! The table shows only 10,000 results of the query +For more data, narrow the gap between the start and end times + + + 请选中一条记录! + Please select a record! + + + 提示 + Prompt + + + + InverseTimeLimit + + 该功能只支持在windows系统运行 + Only running on windows + + + 曲线配置 + Curve configuration + + + 选择文件 + Select file + + + 生成曲线 + Generate curve + + + 保存模板 + Save as template + + + 设备1 + Device 1 + + + 曲线名称 + Curve name + + + CO曲线 + CO curve + + + Vb(基准) + Vb(base) + + + Vt(换算) + Vt(conversion) + + + 设备2 + Device 2 + + + 设备3 + Device 3 + + + 设备4 + Device 4 + + + 设备5 + Device 5 + + + 设备6 + Device 6 + + + + IpcPlusWidget + + 提醒 + Remind + + + IpcPlusWidget + IpcPlusWidget + + + ptz + ptz + + + 调焦 + Focus + + + 聚焦 + Focus + + + 光圈 + Aperture + + + 缩 + In + + + 伸 + Out + + + 近 + In + + + 远 + Out + + + 大 + In + + + 小 + Out + + + 预置点: + Preset: + + + 调用 + Call + + + 内存库读取失败 + Failure to query realtime database + + + + Label + + 打开 + Open + + + + LoadStatWidget + + LoadStatWidget + LoadStatWidget + + + 配置 + Config + + + 实时 + Real + + + 历史 + History + + + 风险点 + Risk Point + + + + MainWindow + + + web发布 + Web Publish + + + + 基础配置 + Basic Configuration + + + + 首页配置 + HomePage Configuration + + + + 背景图片配置 + BackgroundImage Configuration + + + + 下一步 + Next + + + + 权限验证 + Browser Permission Verification + + + + 发布内容 + Publish Content + + + + 画面/图元 + pic/icon + + + + 图片 + back_pixmap + + + + 风格 + style + + + + 发布 + Publish + + + + 上一步 + Previous + + + + Mainwindow + + Form + Form + + + 票库管理 + Ticket Library + + + 开票记录 + Ticket Record + + + + NavigationConfigDialog + + 导航栏配置 + Configuration of Navigation Bar + + + 导入 + Import + + + 添加节点 + Add Node + + + 删除节点 + Delete Node + + + 清空 + Clear + + + 添加子节点 + Add ChildNode + + + 插入节点 + Insert Node + + + 导航栏 + Navigation Bar + + + 导出 + Export + + + 背景颜色: + Background Color: + + + 文字颜色: + Text Color: + + + 鼠标选中: + Mouse checked: + + + 鼠标悬停: + Mouse hovered: + + + 图标: + Icon: + + + 数据: + Data: + + + 项属性: + Item Property: + + + 节点层级属性: + Node hierarchy properties: + + + 节点状态属性: + Node state properties: + + + 窗口配置: + Window Configuration: + + + 一级节点 + First Node + + + 级别背景颜色: + Background Color: + + + 级别文字颜色: + Text Color: + + + 级别缩进距离: + Indent distance: + + + 二级节点 + Second Node + + + 三级节点 + Third Node + + + 取消 + Cancel + + + 确定 + Confirm + + + + + + + + - + + + + × + × + + + ∟ + + + + | + | + + + 启用: + Enable: + + + web发布: + web publish: + + + ... + ... + + + 操作: + Operation: + + + px + px + + + + PreviewForm + + + Form + Form + + + + QCPItemTracer + + 时间 + Time + + + 事件信息 + Event Infomation + + + + QColorDialog + + Hu&e: + Hu&e: + + + &Sat: + &Sat: + + + &Val: + &Val: + + + &Red: + &Red: + + + &Green: + &Green: + + + Bl&ue: + Bl&ue: + + + A&lpha channel: + A&lpha channel: + + + &HTML: + &HTML: + + + Cursor at %1, %2 +Press ESC to cancel + Cursor at %1, %2 +Press ESC to cancel + + + Select Color + Select Color + + + &Basic colors + &Basic colors + + + &Custom colors + &Custom colors + + + &Add to Custom Colors + &Add to Custom Colors + + + &Pick Screen Color + &Pick Screen Color + + + + QFileDialog + + All Files (*) + All Files (*) + + + Look in: + Look in: + + + Back + Back + + + Go back + Go back + + + Alt+Left + Alt+Left + + + Forward + Forward + + + Go forward + Go forward + + + Alt+Right + Alt+Right + + + Parent Directory + Parent Directory + + + Go to the parent directory + Go to the parent directory + + + Alt+Up + Alt+Up + + + Create New Folder + Create New Folder + + + Create a New Folder + Create a New Folder + + + List View + List View + + + Change to list view mode + Change to list view mode + + + Detail View + Detail View + + + Change to detail view mode + Change to detail view mode + + + Sidebar + Sidebar + + + List of places and bookmarks + List of places and bookmarks + + + Files + Files + + + Files of type: + Files of type: + + + Find Directory + Find Directory + + + Open + Open + + + Save As + Save As + + + Directory: + Directory: + + + File &name: + File &name: + + + &Open + &Open + + + &Choose + &Choose + + + &Save + &Save + + + Show + Show + + + &Rename + &Rename + + + &Delete + &Delete + + + Show &hidden files + Show &hidden files + + + &New Folder + &New Folder + + + All files (*) + All files (*) + + + Directories + Directories + + + %1 +Directory not found. +Please verify the correct directory name was given. + %1 +Directory not found. +Please verify the correct directory name was given. + + + %1 already exists. +Do you want to replace it? + %1 already exists. +Do you want to replace it? + + + %1 +File not found. +Please verify the correct file name was given. + %1 +File not found. +Please verify the correct file name was given. + + + New Folder + New Folder + + + Delete + Delete + + + '%1' is write protected. +Do you want to delete it anyway? + '%1' is write protected. +Do you want to delete it anyway? + + + Are you sure you want to delete '%1'? + Are you sure you want to delete '%1'? + + + Could not delete directory. + Could not delete directory. + + + Recent Places + Recent Places + + + Remove + Remove + + + My Computer + My Computer + + + Drive + Drive + + + %1 File + %1 is a file name suffix, for example txt + %1 File + + + File + File + + + File Folder + Match Windows Explorer + File Folder + + + Folder + All other platforms + Folder + + + Alias + OS X Finder + Alias + + + Shortcut + All other platforms + Shortcut + + + Unknown + Unknown + + + + QFontDialog + + Select Font + Select Font + + + &Font + &Font + + + Font st&yle + Font st&yle + + + &Size + &Size + + + Effects + Effects + + + Stri&keout + Stri&keout + + + &Underline + &Underline + + + Sample + Sample + + + Wr&iting System + Wr&iting System + + + + QObject + + QPushButton::配置工具 + QPushButton::Configuration Tool + + + + + 起始角度 + Start Angle + + + + + 弧线角度 + Arc Angle + + + + + + + 半径 + Radius + + + + + x轴半径 + Xaxis Radius + + + + + y轴半径 + Yaxis Radius + + + + 值 + Value + + + + + 属性 + Attribute + + + + 组合图元不可镜像! + Composite primitive cannot be mirrored! + + + + 精灵图元不可镜像! + Sprite elements cannot be mirrored! + + + + 控件图元不可镜像! + Wiget primitive cannot be mirrored! + + + + 图表图元不可镜像! + Chart primitive cannot be mirrored! + + + 该操作不支持组合图元 + This operation does not support composite primitive + + + + + + + + 提示 + Prompt + + + + 图层0 + Layer0 + + + + + 状态%1 + State%1 + + + + 组态页面 + Configuration Page + + + + 静态页面 + Static Page + + + + QPushButton::图层工具 + QPushButton::Layer Tool + + + + 警告 + Warning + + + + HMI正在运行 + HMI still in running + + + + 文字编辑 + Text Editor + + + + 确定 + Confirm + + + + 取消 + Cancel + + + + + 关系库 + Relation library + + + + + 时序库 + Timing library + + + + + 实时库 + RealTime library + + + + 测点 + Measuring point + + + + 数据源 + Data Source + + + + 查询语句 + Query + + + + 贝塞尔曲线 + Bezier curve + + + + + 显示类型 + Display type + + + + + + + + + + + + + + + + + + 宽高 + Size + + + + + + 横向缩放比例 + Horizontal Scaling + + + + + + 纵向缩放比例 + Vertical Scaling + + + + + + + + + + + + + 是否显示 + isVisible + + + + 数据长度 + data-length + + + + + 小数点位数 + Decimal places + + + + + 正负号显示 + Sign display + + + + + + + 边框样式 + Border style + + + + + + + 边框颜色 + Border color + + + + + 水平方向 + Horizontal + + + + + 竖直方向 + Vertical + + + + + + 水平居左 + Horizontal left + + + + + + 水平居中 + Horizontal center + + + + + + 水平居右 + Horizontal right + + + + + + 垂直居上 + Vertical up + + + + + + 垂直居中 + Vertical center + + + + + + 垂直居下 + Vertical down + + + + + + 无边框 + No border + + + + + + 凸出边框 + Raised border + + + + + + 凹陷边框 + Sunken border + + + + 浮点型 + Float + + + + 整型 + Int + + + + 字符串 + String + + + + 日期 + Date + + + 数字量文本显示 + Dict text display + + + + 菜单 + Menu + + + + 光字牌 + Card + + + + + + 平行边框 + Plain border + + + + 数字量文本 + Dict text + + + + 正常显示 + Normal display + + + + 显示负号 + Show minus + + + + 显示左右箭头 + Show left and right arrows + + + + 显示上下箭头 + Show up and down arrows + + + + + + + + + + + + + + + + 对象名称 + Object name + + + + + + + + + + 文本内容 + Text content + + + + + + + + + + + + + + + + + + + 位置 + Location + + + + + + + + 字体 + Font + + + + + + + + + 字体颜色 + Font color + + + + + + + + + + 背景颜色 + Background color + + + + + + + 水平对齐方式 + Horizontal alignment + + + + + + + 垂直对齐方式 + Vertical alignment + + + + + + + 边框深度 + Border depth + + + + + + + + + + + + + + + + + 轴Z坐标 + Zaxis coordinates + + + + + + + + + + + + + + + + + + + 透明度 + Transparency + + + + 网格线颜色 + Gridline color + + + + 网格填充颜色 + Grid color + + + + 交替填充颜色 + Alternate color + + + + + 交替填充 + Alternate fill + + + + + 行数量 + RowCount + + + + + 列数量 + ColumnCount + + + + + + + + + + 旋转角度 + Rotation Angle + + + + + + + + + 中心点旋转 + Center rotation + + + + + + + + + + + 着色策略 + Coloring strategy + + + + + + + 起点箭头 + Starting point of the arrow + + + + + + + 终点箭头 + Ending point of the arrow + + + + 起点 + Starting point + + + + 终点 + Ending point + + + + 起点箭头外观 + Appearance of starting arrow + + + + 起点箭头大小 + Size of starting arrow + + + + 终点箭头外观 + Appearance of ending arrow + + + + 终点箭头大小 + Size of ending arrow + + + + + + + + 位图 + Bitmap + + + 显示方式 + Display mode + + + 居中 + In the middle + + + 放缩 + Scaling + + + + + + + 调用图形 + Call the graphics + + + + + 热键类型 + Poke type + + + + + + + + 图层显示 + Layer Display + + + + + 切换画面 + Switch picture + + + + + 弹出画面 + Popup picture + + + + + 程序调用 + Program Invocation + + + + + + 文字方向 + Text direction + + + + 箭头外观 + Arrow appearance + + + + + 水平填充百分比 + Horizontal fill percentage + + + + + 垂直填充百分比 + Vertical fill percentage + + + + + 矩形圆角 + Rounded corner + + + + + + 画笔 + Pen + + + + + 画刷 + Brush + + + 所属应用 + Subordinate of the application + + + 层显示范围 + Layer display range + + + + 脚本 + Script + + + + + 时间格式 + Time format + + + + + 内容 + Content + + + + + 插件名 + Plugin name + + + + + Tip提示信息 + Tip + + + + + 图标 + Icon + + + + + 图标宽高 + Icon Size + + + + view_mode + view_mode + + + + + 调用资源 + Resource + + + + + 动作类型 + Action type + + + + + 组号 + Group no + + + + + 选中 + Selected + + + + + 类型 + Type + + + + 切换图层 + Switch layer + + + + 切换导航 + Switch navigation + + + + 上一页 + Preview + + + + 下一页 + Next + + + + 显示文本 + Show Text + + + + 显示密码 + Show Password + + + + 文本输入 + TextEdit + + + + + 按钮 + Button + + + + 组合框 + ComboBox + + + + 复选框 + CheckBox + + + + 单选按钮 + RadioBox + + + + 标签 + Label + + + + 列表框 + List + + + + 数字输入 + SpinBox + + + + + 时间 + Time + + + + 树形 + Tree + + + + 表格 + Table + + + + 插件 + Plugin + + + + 文本框 + LineEdit + + + + + 图表标题 + Chart title + + + + + 标题颜色 + Title color + + + + + 标题字体 + Title font + + + + + 显示图例 + Show legend + + + + + 图例文字颜色 + Legend text color + + + + + 图例文字字体 + Legend text font + + + + + 显示背景 + Show background + + + + + 轮廓颜色 + Outline color + + + + + 图例位置 + Legend location + + + + + + + 图表模式 + Chart pattern + + + + + 是否统计图表 + Statistical chart + + + + + 时间滚动 + Time to roll + + + + + 项提示文本颜色 + Item prompt text color + + + + + 项提示文本字体 + Item prompt text font + + + + + + 项数量 + Number of Item + + + + + 组数量 + Number of group + + + + + 棒描述 + Stick description + + + + + 棒颜色 + Stick color + + + + + 饼描述 + Pie description + + + + + 饼颜色 + Pie color + + + + + + 曲线数量 + Curve number + + + + + 曲线线宽 + Curve width + + + + + + + Y轴线颜色 + Yaxis color + + + + + + + Y轴标题 + Yaxis title + + + + + + + Y轴标题颜色 + Yaxis title color + + + + + + + Y轴标题字体 + Yaxis title font + + + + + + + Y轴最小值 + Yaxis minimum + + + + + + + Y轴最大值 + Yaxis maximum + + + + + + + Y轴刻度数 + Yaxis dial number + + + + + + + Y轴文字颜色 + Yaxis text color + + + + + + + Y轴文字字体 + Yaxis text font + + + + + + + 显示Y轴网格线 + Show Yaxis grid + + + + + + + Y轴网格线 + Yaxis grid + + + + + X轴格式 + Xaxis format + + + + + X轴跨度 + Xaxis span + + + + + + X轴刻度数 + Xaxis dial number + + + + + + + X轴线颜色 + Xaxis line color + + + + + + + X轴文字颜色 + Xaxis text color + + + + + + + X轴文字字体 + Xaxis text font + + + + + + + X轴网格线 + Xaxis grid + + + + + + + 显示X轴网格线 + Show Xaxis grid + + + + + 刷新间隔 + Refresh interval + + + + + + 曲线描述 + Curve description + + + + + + 曲线颜色 + Curve color + + + + + 参考线数量 + Guides Number + + + + + 参考线1 + Guides1 + + + + + 参考线2 + Guides2 + + + + + 参考线3 + Guides3 + + + + + 自定义 + Custom + + + + + + 日 + Day + + + + 月 + Month + + + + 年 + Year + + + + 左侧 + Left side + + + + 顶部 + Top + + + + 右侧 + Right side + + + + 底部 + Bottom + + + + + 潮流外观 + Load flow appearance + + + + + 矩形 + Rect + + + + 箭头 + Arrow + + + + 圆形 + Circular + + + + 圆流 + Circular flow + + + + + 显示端号 + Display the number + + + + + 方向性 + Directional + + + + 圆弧 + Arc + + + + 母线 + Bus + + + + 多态文本 + Polymorphic text + + + + 线端 + Incoming Line + + + + 椭圆 + Ellipse + + + + 圆 + Circle + + + + 潮流线 + flow line + + + + 网格 + Grid + + + + 组合 + Combination + + + + 直线 + Line + + + + 连接线 + Connecting line + + + + 折线 + Path + + + + 端子 + Terminal + + + + 热键 + Poke + + + + 多边形 + Polygon + + + + 文本 + Text + + + + + 设备组 + Device Group + + + + + 自适应模式 + Adaptive pattern + + + + 屏幕宽高比 + Screen aspect radio + + + + 图元宽高比 + Primitive aspect radio + + + + 告警提示 + Alarm Prompt + + + + 带电区域 + Power Polygon + + + + 存在重复设备:%1 + Repeat device:%1 + + + 未确认 + Unconfirmed + + + 已确认 + Confirmed + + + 预览 + Preview + + + 打印 + Print + + + 模拟量 + Analog + + + 数字量 + Digital + + + 累积量 + Accuml + + + 混合量 + Mix + + + 其他 + Other + + + 未复归 + unResumed + + + 已复归 + Resumed + + + - + - + + + 位置列表 + Location List + + + 告警/智能告警 + Alarms/Intelligent Alarms + + + 告警数/智能告警数 + Alarm/Intelligent Alarm + + + + 自由连接线 + Free Connection Line + + + 自定义项目 + Custom Item + + + phase A + phase A + + + phase B + phase B + + + phase C + phase C + + + Mark + Mark + + + The Order Of Harmonic Sholud Be Greater Than 0 + The Order Of Harmonic Sholud Be Greater Than 0 + + + Smapling Data Reading Error + Smapling Data Reading Error + + + The Order Of Harmonic Sholud Be Less Than nn + The Order Of Harmonic Sholud Be Less Than nn + + + Out of Memory + Out of Memory + + + Error + Error + + + input error + input error + + + + QSMessageBox + + + 是 + Yes + + + + 否 + No + + + + QssEditor + + + 样式编辑器 + QssEditor + + + + Ctrl+S + Ctrl+S + + + + Ctrl+F + Ctrl+F + + + + QtBoolEdit + + + + + True + True + + + + + False + False + + + + QtBoolPropertyManager + + + True + True + + + + False + False + + + + QtCharEdit + + + Clear Char + Clear Char + + + + QtColorEditWidget + + + ... + ... + + + + QtColorPropertyManager + + + Red + Red + + + + Green + Green + + + + Blue + Blue + + + + Alpha + Alpha + + + + QtCursorDatabase + + + Arrow + Arrow + + + + Up Arrow + Up Arrow + + + + Cross + Cross + + + + Wait + Wait + + + + IBeam + IBeam + + + + Size Vertical + Size Vertical + + + + Size Horizontal + Size Horizontal + + + + Size Backslash + Size Backslash + + + + Size Slash + Size Slash + + + + Size All + Size All + + + + Blank + Blank + + + + Split Vertical + Split Vertical + + + + Split Horizontal + Split Horizontal + + + + Pointing Hand + Pointing Hand + + + + Forbidden + Forbidden + + + + Open Hand + Open Hand + + + + Closed Hand + Closed Hand + + + + What's This + What's This + + + + Busy + Busy + + + + QtFontEditWidget + + + ... + ... + + + + 选择字体 + Select Font + + + + QtFontPropertyManager + + + Family + Family + + + + Point Size + Point Size + + + + Bold + Bold + + + + Italic + Italic + + + + Underline + Underline + + + + Strikeout + Strikeout + + + + Kerning + Kerning + + + + QtGradientDialog + + + + 编辑渐变 + Gradient Editor + + + + 确认 + Confirm + + + + 取消 + Cancel + + + + QtGradientEditor + + + Form + Form + + + + Gradient Editor + Gradient Editor + + + + This area shows a preview of the gradient being edited. It also allows you to edit parameters specific to the gradient's type such as start and final point, radius, etc. by drag & drop. + + + + + 1 + 1 + + + + 2 + 2 + + + + 3 + 3 + + + + 4 + 4 + + + + 5 + 5 + + + + Gradient Stops Editor + Gradient Stops Editor + + + + This area allows you to edit gradient stops. Double click on the existing stop handle to duplicate it. Double click outside of the existing stop handles to create a new stop. Drag & drop the handle to reposition it. Use right mouse button to popup context menu with extra actions. + + + + + Zoom + Zoom + + + + + Reset Zoom + Reset Zoom + + + + Position + Position + + + + + + Hue + Hue + + + + H + H + + + + + Saturation + Saturation + + + + S + S + + + + Sat + Sat + + + + + Value + Value + + + + V + V + + + + Val + Val + + + + + + Alpha + Alpha + + + + A + A + + + + Type + Type + + + + Spread + Spread + + + + Color + Color + + + + Current stop's color + Current stop's color + + + + Show HSV specification + Show HSV specification + + + + HSV + HSV + + + + Show RGB specification + Show RGB specification + + + + RGB + RGB + + + + Current stop's position + Current stop's position + + + + % + % + + + + Zoom In + Zoom In + + + + Zoom Out + Zoom Out + + + + Toggle details extension + Toggle details extension + + + + > + > + + + + Linear Type + Linear Type + + + + + + + + + ... + ... + + + + Radial Type + Radial Type + + + + Conical Type + Conical Type + + + + Pad Spread + Pad Spread + + + + Repeat Spread + Repeat Spread + + + + Reflect Spread + Reflect Spread + + + + Start X + Start X + + + + Start Y + Start Y + + + + Final X + Final X + + + + Final Y + Final Y + + + + + Central X + Central X + + + + + Central Y + Central Y + + + + Focal X + Focal X + + + + Focal Y + Focal Y + + + + Radius + Radius + + + + Angle + Angle + + + + Linear + Linear + + + + Radial + Radial + + + + Conical + Conical + + + + Pad + Pad + + + + Repeat + Repeat + + + + Reflect + Reflect + + + + QtGradientStopsWidget + + + New Stop + + + + + Delete + + + + + Flip All + + + + + Select All + + + + + Zoom In + + + + + Zoom Out + + + + + Reset Zoom + + + + + QtGradientViewDialogN + + + Dialog + + + + + 确认 + Confirm + + + + 取消 + Cancel + + + + Select Gradient + + + + + QtKeySequenceEdit + + + Clear Shortcut + + + + + QtLocalePropertyManager + + + %1, %2 + + + + + Language + + + + + Country + + + + + QtPointFPropertyManager + + + (%1, %2) + + + + + X + + + + + Y + + + + + QtPointPropertyManager + + + (%1, %2) + + + + + X + + + + + Y + + + + + QtPropertyBrowserUtils + + + [%1, %2, %3] (%4) + + + + + [%1, %2] + + + + + QtRectFPropertyManager + + + [(%1, %2), %3 x %4] + + + + + X + + + + + Y + + + + + Width + + + + + Height + + + + + QtRectPropertyManager + + + [(%1, %2), %3 x %4] + + + + + X + + + + + Y + + + + + Width + + + + + Height + + + + + QtSizeFPropertyManager + + + %1 x %2 + + + + + Width + + + + + Height + + + + + QtSizePolicyPropertyManager + + + + <Invalid> + + + + + [%1, %2, %3, %4] + + + + + Horizontal Policy + + + + + Vertical Policy + + + + + Horizontal Stretch + + + + + Vertical Stretch + + + + + QtSizePropertyManager + + + %1 x %2 + + + + + Width + + + + + Height + + + + + Renderer + + 打开 + Open + + + + SWitchButton + + 打开告警联动失败! + Failure to open alarm linkage! + + + 关闭告警联动失败! + Failure to close alarm linkage! + + + 数据库连接失败! + Failure to connect to database! + + + + ScriptForm + + + 脚本编辑器 + Script Editor + + + + Copy + + + + + Cut + + + + + Paste + + + + + Undo + + + + + Redo + + + + + ZoomIn + + + + + ZoomOut + + + + + Find && Replace + + + + + Script Syntax Check + + + + + F7 + + + + + + Warning + + + + + The program is incomplete. + + + + + Information + + + + + The program is correct. + + + + + Line: %1, Column: %2 + + + + + SearchDialog + + + 查找和替换 + Find && Replace + + + + 查找目标 + Find What + + + + 下一个 + Next Word + + + + 替换为 + Replace With + + + + 全部替换 + All Replace + + + + SetValueInputDialog + + Dialog + Dialog + + + 确定 + Confirm + + + 取消 + Cancel + + + 设置值 + Setting Value + + + 人工置数 + Manual Setting + + + + StationLineWidget + + 站点标签设置 + Station Label Settings + + + 站点标签: + Station Label: + + + 标签字体: + Label Font: + + + 字体大小: + Font Size: + + + 标签宽度: + Label Width: + + + 标签高度: + Label Height: + + + 是否加粗 + Bold: + + + 告警提示设置 + Alert Prompt Settings + + + 按钮半径: + Button Radius: + + + 闪烁间隔: + Flash Interval: + + + 渐变步长: + Gradient Step: + + + 保存布局 + Save Layout + + + 提示 + Prompt + + + 布局保存成功 + Layout saved successfully + + + + UserManageWidget + + UserManageWidget + User Management Widget + + + 提示 + Prompt + + + 用户管理插件用户权限认证库调用失败! + Failure to initialize perm library! + + + 当前用户ID获取失败! + Failure to get current user id! + + + + VoiceSlider + + Form + Form + + + 53 + 53 + + + 0 + 0 + + + + WorkTicketWidget + + 保存 + Save + + + 出票&预览 + Ticket&Preview + + + 保存失败:%1 + Failed to save:%1 + + + 保存成功 + Save successed + + + 获取当前登录用户失败! + Failure to get current user! + + + 事务执行失败!启动回滚 + Transaction execution failed! Start the rollback + + + 出票失败 + Failed to ticket + + + 出票失败:%1 + Failed to ticket:%1 + + + 消息 + Infomation + + + 电子签章 + Electronic signature + + + 出票 + Ticket + + + (签章) + (signature) + + + 创建目录失败: %1 + Failure to create directory:%1 + + + 请先关闭文件: %1 + Please close file:%1 + + + 历史票不存在! + Not historical ticket found! + + + 当前登录用户无运维管理功能权限! + Current user have no perm to operate! + + + 出票失败,请检查网络或者主数据库服务器连接是否异常! + Failure to ticket,please check the network and database server! + + + + qdesigner_internal::QtGradientStopsController + + + H + + + + + S + + + + + V + + + + + + Hue + + + + + Sat + + + + + Val + + + + + Saturation + + + + + Value + + + + + R + + + + + G + + + + + B + + + + + Red + + + + + Green + + + + + Blue + + + + + qtgradientviewn + + + Form + Gradient Editor + + + + + 新建 + New + + + + + 编辑 + Edit + + + + + 重命名 + Rename + + + + + + 移除 + Remove + + + + 渐变 + Gradient + + + + 确认移除选中渐变? + Remove selected gradient? + + + diff --git a/resource/en/gui/translate/product_en.qm b/resource/en/gui/translate/product_en.qm new file mode 100644 index 0000000000000000000000000000000000000000..4aa2becae0aa7a392bde991b4a770fad110fa861 GIT binary patch literal 181791 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 + + + + AddBtnForm + + Form + Form + + + + AddObjAlarmDialog + + + Dialog + Dialog + + + + 设备 + Device + + + + 自定义告警名称 + Name + + + + 类型 + Type + + + + 告警等级定义 + Level + + + + 告警点计算函数 + Calc function + + + + 告警规则 + Alarm role + + + + 越上限值 + Limit up1 + + + + 越下限值 + Limit low1 + + + + 数字量文本: + Digital text: + + + + 添加 + Add + + + + 取消 + Cancel + + + + 新增告警点 + Custom alarm + + + + 值 + Value + + + + + 模拟量 + Analog + + + 选择参数 + Select Parameters + + + + + 数字量 + Digital + + + + 枚举量 + Mix + + + + + + + + + + + + + 提示 + Tip + + + + 自定义告警名称不能为空! + Name is required! + + + + 无告警点计算函数,请先配置计算点函数! + No calculation function,please configure the calculation point function first! + + + + 参数:%1的参数标签不能为空! + Param:The parameter label of %1 cannot be empty! + + + + 越下限值必须小于越上限值! + The lower limit must be less than the upper limit! + + + + 无数字量文本,请先配置数字量文本! + No digital text,please configure digital text first! + + + + + + 添加失败!正在回滚事务~ + Add failed!transaction is being rolled back + + + + + 添加成功 + Add success + + + + 计次告警描述 + Counting alarm description + + + + 计时告警描述 + Timing alarm description + + + + AlarmCalcParaTableModel + + + 参数名称 + Parameter name + + + + 参数标签 + Parameter tag + + + + 操作 + Operating + + + + AlarmDevTreeModel + + + 位置/设备组 + Location/DeviceGroup + + + + AlarmManageForm + + + Form + Form + + + + AlarmManageWidget + + + AlarmManageWidget + AlarmManageWidget + + + + 请输入搜索内容 + Please output search content + + + + + 查询 + Search + + + + 新增告警点 + Custom alarm + + + 屏蔽一览表 + Shield list + + + + 保存 + Save + + + + 描述设置 + Describe settings + + + 计算公式 + Calculation Formula + + + 计算函数 + Calculation Function + + + + 测点描述 + Point desc + + + 屏蔽设置 + Shield settings + + + 是否告警屏蔽 + Alarm shield + + + 屏蔽时段类型 + Time type + + + 屏蔽事由 + Reasons + + + 开始时间 + Start time + + + 结束时间 + End time + + + 一 + MON + + + 二 + TUE + + + 三 + WED + + + 四 + THU + + + 五 + FRI + + + 六 + SAT + + + 七 + SUN + + + 日期 + Date + + + 至 + To + + + + + 告警动作 + Alarm action + + + + 是否自定义告警 + Custom alarm + + + + 告警优先级 + Priority + + + + 模拟量 + Analog + + + + 数字量 + Digital + + + + 多选 + MultiSelection + + + + 越限等级 + Limit number + + + + 告警推图文件 + Pic name + + + + + 选择 + Select + + + ... + ... + + + + 告警声音文件 + Sound name + + + + 越限设置 + Limit settings + + + 越线等级 + Limit level + + + + 越上限值 + Upper limit + + + + 越下限值 + Lower limit + + + + 越上上限值 + Upper 2 limit + + + + 越下下限值 + Lower 2 limit + + + + 越限告警 + Limit alarm + + + + + 是 + Yes + + + + + 否 + No + + + 一次性 + One time + + + 每周 + Week + + + 每月 + Month + + + + 0 + 0 + + + + 1 + 1 + + + + 2 + 2 + + + + + + + + + + + + + + + + + + + + + 提示 + Tip + + + + + 保存失败!正在回滚事务~ + Save failed!transaction is being rolled back + + + + + 保存成功! + Save success! + + + + + 确认删除? + Confirm on delete? + + + + + 删除失败!正在回滚事务~ + Failure to delete!Rollback transaction~ + + + 选择参数 + Select Parameters + + + 枚举量 + Mix + + + 值 + Value + + + + 当前登录用户无修改权限! + The current user have no perm to modify! + + + + 越下下限值必须小于越下限值 + The lower 2 limit must be less than the lower limit + + + + + 越下限值必须小于越上限值 + The lower limit must be less than the upper limit + + + + 越上限值必须小于越上上限值 + The upper limit must be less than the upper 2 limit + + + + 当前登录用户无新增告警点权限! + The current user have no perm to add custom alarm! + + + + + 全选 + Check All + + + + + 全不选 + Unchecked All + + + + + 删除 + Delete + + + + + 点描述不能为空! + Description can not be empty! + + + 操作名称不能为空! + Operation name can not be empty! + + + 开始时间要小于结束时间! + Start time must be less than end time! + + + 请选中需要屏蔽的礼拜! + Please select the time to be blocked! + + + 开始日不能大于结束日! + The start date can not be greater than the end date! + + + 未知的屏蔽时间类型 + Unknown shield time type + + + 越下下限不能大于越下限 + The lower 2 limit can not be greater than the lower limit + + + 越下限不能大于越上限 + The lower limit can not be greater than the upper limit + + + 越上限不能大于越上上限 + The upper limit can not be greater than the upper 2 limit + + + + 请选择要添加自定义告警的设备组! + Please select the device group to add custom alarms! + + + + 此设备组下无可用设备,请重新选择设备组! + There is no available device under this device group,please reselect the device group! + + + + Open Pic + Open Picture + + + + Pic Files (*.glx) + GLX Picture Files (*.glx) + + + + Open Voice + Open Audio + + + + Pic Files (*.wav) + Wave Audio Files (*.wav) + + + + AlarmMng + + + 未知车站 + Unknown loction + + + + 未知设备组 + Unknonwn device group + + + + 未知设备 + Unknown device + + + + 未知 + Unknown + + + 其他 + Other + + + + AlarmPointTableModel + + + 告警点名称 + Name + + + 所属厂站 + Location + + + 是否屏蔽 + Shield + + + 屏蔽时段 + Shield time + + + + 告警等级 + Alarm level + + + + 告警动作 + Alarm action + + + + 所属位置 + Location + + + + 所属设备组 + Device Group + + + + 所属设备 + Device + + + 是 + Yes + + + 否 + No + + + / + / + + + 每周( + Week( + + + 每月( + Month( + + + + 未知 + Unknown + + + + AlarmShieldDelegate + + 删除 + Delete + + + 启用 + Enable + + + 取消 + Cancel + + + 提示 + Tip + + + 删除失败! + Failed to deleted! + + + 删除成功! + Successfully deleted! + + + + AlarmShieldDialog + + Dialog + Dialog + + + 启用 + Enabled + + + 取消 + Cancel + + + 删除 + Delete + + + 屏蔽状态 + Enable status + + + 名称 + Name + + + 查询 + Search + + + 屏蔽一览表 + Shield list + + + 全部 + All + + + 已启用 + Enabled + + + 未启用 + Unenabled + + + 提示 + Tip + + + 启用失败,正在回滚 + Enable failed,rolling back + + + 取消失败,正在回滚 + Cancel failed,rolling back + + + 删除失败,正在回滚! + Delete failed,rolling back! + + + 删除成功! + Successfully deleted! + + + + AlarmShieldTableModel + + 名称 + Name + + + 屏蔽类型 + Shield Type + + + 屏蔽属性 + Shield attribute + + + 屏蔽模式 + Shield mode + + + 是否启用 + Enable + + + 时段类型 + Time type + + + 屏蔽时段 + Shield time + + + 操作用户 + User + + + 操作主机 + Hostname + + + 操作 + Operating + + + 全站屏蔽 + Shield location + + + 设备屏蔽 + Shield device + + + 测点屏蔽 + Shield point + + + 电压屏蔽 + Shield voltage + + + 设备组屏蔽 + Shield dev group + + + 责任区屏蔽 + Shield region + + + 未知 + Unknown + + + 已启用 + Enabled + + + 未启用 + Unenabled + + + 一次性屏蔽 + Once time + + + 每周 + Week + + + 每月 + Month + + + 每周( + Week( + + + 每月( + Month( + + + + BriefReportWidget + + 运行简报 + BriefReport + + + 位置 + Location + + + 日 + Day + + + 周 + Week + + + 月 + Month + + + 季 + Quarter + + + 年 + Year + + + 查询 + Search + + + 导出 + Export + + + 关键告警 + Key Alarms + + + 操作记录 + Operate Events + + + 巡检记录 + Inspection Events + + + 检修记录 + Overhaul Events + + + 保存 + Save + + + 时间 + Time + + + Tab 1 + Tab 1 + + + Tab 2 + Tab 2 + + + Tab 3 + Tab 3 + + + Tab 4 + Tab 4 + + + + BrowserDialog + + 下载模板 + Download Template + + + + CAccidentReviewDialog + + + + + + 事故追忆 + Accident Memory + + + + + + + 确认 + Confirm + + + + + + + 取消 + Cancel + + + + + + + + + + + 提示 + Prompt + + + + + + + 请选择一张画面! + Please select a graph! + + + + + + + 请选择其他画面! + Please select other graph! + + + + CActionSequModel + + + 标记 + Marker + + + + 开关名称 + Switch Name + + + + 目标状态 + Target State + + + + 执行状态 + Execution Status + + + + 实际状态 + Actual Status + + + + 延时 + Delay + + + + 未执行 + non-execution + + + + 正在执行 + executing + + + + 已触发 + triggered + + + + 执行失败 + execution failure + + + + 执行成功 + execution success + + + + 执行终止 + execution termination + + + + 执行暂停 + execution pause + + + + 执行跳过 + execution skip + + + + CAddBtnForm + + 添加图片 + Add Image + + + 添加边框 + Add Border + + + 添加渐变 + Add Gradient + + + 添加颜色 + Add Color + + + 添加字体 + Add Font + + + 添加副控制 + Add SubControl + + + 添加状态 + Add State + + + 背景图片 + Background Image + + + 边框图片 + Border Image + + + 图片 + Image + + + 颜色 + Color + + + 背景颜色 + Background Color + + + 间隔背景颜色 + Alternate Background Color + + + 边框颜色 + Border Color + + + 上边框颜色 + Top Border Color + + + 右边框颜色 + Right Border Color + + + 下边框颜色 + Bottom Border Color + + + 左边框颜色 + Left Border Color + + + 网格颜色 + Gridline Color + + + 选中颜色 + Selection Color + + + 选中背景颜色 + Selection Background Color + + + add-line + Add Line + + + add-page + Add Page + + + branch + Branch + + + chunk + Chunk + + + close-button + Close Button + + + corner + Corner + + + down-arrow + Down Arrow + + + down-button + Down Button + + + drop-down + Drop Down + + + float-button + Float Button + + + groove + Groove + + + indicator + Indicator + + + handle + Handle + + + icon + Icon + + + item + Item + + + left-arrow + Left Arrow + + + left-corner + Left Corner + + + menu-arrow + Menu Arrow + + + menu-button + Menu Button + + + menu-indicator + Menu Indicator + + + right-arrow + Right Arrow + + + pane + Pane + + + right-corner + Right Corner + + + scroller + Scroller + + + section + Section + + + separator + Separator + + + sub-line + Sub Line + + + sub-page + Sub Page + + + tab + Tab + + + tab-bar + Tab Bar + + + tear + Tear + + + tearoff + Tear Off + + + text + Text + + + title + Title + + + up-arrow + Up Arrow + + + up-button + Up Button + + + active + Active + + + adjoins-item + Adjoins Item + + + alternate + Alternate + + + bottom + Bottom + + + checked + Checked + + + closable + Closable + + + closed + Closed + + + default + Default + + + disabled + Disabled + + + editable + Editable + + + edit-focus + Edit Focus + + + enabled + Enabled + + + exclusive + Exclusive + + + first + First + + + flat + Flat + + + floatable + Floatable + + + focus + Focus + + + has-children + Has Children + + + has-siblings + Has Siblings + + + horizontal + Horizontal + + + hover + Hover + + + indeterminate + Indeterminate + + + last + Last + + + left + Left + + + maximized + Maximized + + + middle + Middle + + + minimized + Minimized + + + movable + Movable + + + no-frame + No Frame + + + non-exclusive + Non-Exclusive + + + off + Off + + + on + On + + + only-one + Only One + + + open + Open + + + next-selected + Next Selected + + + pressed + Pressed + + + previous-selected + Previous Selected + + + read-only + Read Only + + + right + Right + + + selected + Selected + + + top + Top + + + unchecked + Unchecked + + + vertical + Vertical + + + window + Window + + + 无边框 + No Border + + + 点状边框 + Dotted Border + + + 虚线边框 + Dashed Border + + + 实线边框 + Solid Border + + + 双线边框 + Double Border + + + 边框圆角 + Border Radius + + + 左上边框圆角 + TopLeft Border Radius + + + 右上边框圆角 + TopRight Border Radius + + + 左下边框圆角 + BottomLeft Border Radius + + + 右下边框圆角 + BottomRight Border Radius + + + 选择文件 + Select File + + + 选择渐变 + Select Gradient + + + 选择颜色 + Select Color + + + + CAddShieldDialog + + + 新增告警屏蔽 + New Alarm Shield + + + + 对象类型 + Type + + + + 显示勾选项 + Show Checked Only + + + + 关键字过滤 + Filter by keyword + + + + 对象名称 + Name + + + + 屏蔽类型 + Shield Type + + + + 名称 + Name + + + + + 时段类型 + Type + + + + + + 结束时间 + End Time + + + + + + 开始时间 + Start Time + + + + 一 + Mon + + + + 二 + Tue + + + + 三 + Wed + + + + 四 + Thur + + + + 五 + Fri + + + + 六 + Sat + + + + 七 + Sun + + + + 至 + to + + + + 日期 + Date + + + + 屏蔽描述 + Shield Description + + + + 新增 + New + + + + 取消 + Cancel + + + + 保存 + Save + + + 修改告警屏蔽 + Modify Alarm Shield + + + + 编辑告警屏蔽 + Modify Alarm Shield + + + + 位置 + Location + + + + 设备组 + Device Group + + + + 设备 + Device + + + 测点 + Point + + + + 一次性 + Once + + + + 每周 + Week + + + + 每月 + Month + + + + 请先取消屏蔽! + Please disable first! + + + + 请至少勾选一项! + Please check at least one item! + + + + 当前用户无标签设置功能权限! + The current user have no perm to operate! + + + + 对象名称不能为空! + Name cannot be empty! + + + + 屏蔽类型为空! + Shield type cannot be empty! + + + + 时段类型为空! + Time type cannot be empty! + + + + 开始时间不能大于结束时间! + Start time cannot be more than end time! + + + + 周一到周七至少需要选择一天! + At least check one day from monday to sunday! + + + + 获取当前登录用户失败! + Failed to get current user! + + + + 保存失败! + Failed to save! + + + + 提示 + Prompt + + + + CAiAlarmDelegate + + 当前无告警! + No alarm at present! + + + + CAiAlarmTreeModel + + + + 时间 + Time + + + + + 优先级 + Priority + + + + + 位置 + Location + + + + + 责任区 + Region + + + + + 告警类型 + Alarm Type + + + + + 告警状态 + Alarm State + + + + + 确认状态 + Confirm State + + + + + 告警内容 + Alarm Content + + + + + 复归状态 + Resume State + + + + CAlarmBaseData + + + + 其他 + Other + + + + CAlarmColorWidget + + + + Form + Form + + + + + 动作颜色 + ActionColor + + + + + 恢复颜色 + ResumeColor + + + + + 确认颜色 + ConfirmColor + + + + + 闪烁颜色 + FlickerColor + + + + CAlarmCompare + + + Form + Form + + + + 告警等级 + Alarm level + + + + 统计类型 + StatisType + + + + 日 + Day + + + + 月 + Month + + + + 时间段 + Time + + + + 告警内容关键字 + Alarm Content Keywords + + + 关键字 + Keyword + + + + 查询 + Search + + + + 11 + 11 + + + + 22 + 22 + + + + 33 + 33 + + + + + + + + + + + + + 警告 + Warning + + + + 未选择告警等级 + No alarm level checked + + + + 开始时间需小于等于结束时间 + The start time must be equal or less than the end time + + + + 当前类型最多七天 + Current statis type up to seven days + + + + 当前类型最多六个月 + Current statis type up to six months + + + + 请选择位置 + Please select a location + + + + + 位置最少选择2个 + At least two location + + + + 位置最多选择%1个 + Location cannot more than %1 + + + + 请选择设备组 + Please select a device group + + + + 设备组最多选择%1个 + Device group cannot more than %1 + + + + 提示 + Prompt + + + + 告警条数过多,仅显示前 %1 条 + Too many alarm,show only %1 + + + + + yyyy-MM-dd + yyyy-MM-dd + + + + - + + + + + CAlarmDelegate + + 当前无告警! + No alarm at present! + + + + CAlarmDeviceTreeModel + + + + 系统信息 + System Information + + + + CAlarmDeviceTreeView + + + 禁止告警 + Inhibit Alarm + + + + 全选 + Check All + + + + 清空 + Clear + + + + 选择 + Select + + + + 清除 + Clear + + + + CAlarmFilterDialog + + + + 过滤 + Filter + + + + + 优先级 + Priority + + + + + + + + + + + 全选 + Check All + + + + + 位置 + Location + + + + + 责任区 + Region + + + + + 告警状态 + Alarm State + + + + + 复归 + Resume + + + + + 已复归 + Resumed + + + + + 未复归 + Unresumed + + + + + 设备类型 + Device Type + + + + + 时间 + Time + + + + + 开始时间 + Start Time + + + + + 结束时间 + End Time + + + + + 告警内容关键字 + Alarm Content Keywords + + + 区域 + Location + + + + + 状态 + State + + + + + 已确认 + Confirmed + + + + + 未确认 + Unconfirmed + + + + + 确定 + Confirm + + + + + 取消 + Cancel + + + + + + + yyyy/MM/dd hh:mm + yyyy/MM/dd hh:mm + + + + 提示 + Hint + + + + 结束时间大于开始时间! + End time should be later than the start time! + + + + CAlarmForm + + + + Form + Form + + + + + 导出 + Export + + + + + 过滤 + Filter + + + 禁止告警列表 + Alarm Inhibition List + + + + + 时间: + Time: + + + + + 告警状态: + Alarm State: + + + + + 禁止列表 + Prohibited List + + + + + 优先级: + Priority: + + + + + + + + + 确认 + Confirm + + + + + 关闭 + Close + + + + 全勾选 + Select All + + + + + + + + + 删除 + Delete + + + + + + + 0 + 0 + + + + + 过滤告警数量: + Number of Filtered Alarms: + + + + + 当前显示数量: + Current Display Count: + + + + + 位置: + Location: + + + + + 智能告警 + Intelligent Alarm + + + + + 设置 + Settings + + + + + + + + + 请选择时间 + Please Select Time + + + + + + + + + + + + + + + + + 请选择优先级 + Select Priority + + + + + + + + + + + + + + + + + 请选择位置 + Select Location + + + + + + + + + + + + + + + + + 请选择告警状态 + Select Alarm State + + + + 确定删除所有事件? + Are you sure you want to delete all events? + + + + 删除完成! + Deletion completed! + + + + + Save File + Save File + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 提示 + Prompt + + + + + 导出成功 + Export succeeded + + + + 请选择一条告警! + Please select an alarm! + + + + + + + + 全选 + Check All + + + + + + + + + 全不选 + All Unchecked + + + + + + + 视频 + Video + + + + + + + 事故追忆 + Accident Memory + + + + + + + 禁止告警 + Inhibit Alarm + + + + + + + + + 禁止告警失败! + Failure to inhibit alarm! + + + + + + + 警告 + Warning + + + 当前测点告警已禁止,无需重复禁止! + The current Measuring point alarm is forbidden, there is no need to repeat the prohibition! + + + 工单管理 + Work Management + + + + + 合并 + Merge + + + + + 分离 + Separate + + + + + + + + + + + + + 当前未选中任何项! + No item is currently selected! + + + + + + + + + 当前用户不具备该告警删除操作权限! + The current user does not have the right to delete the alarm operation! + + + + + + + + + + + + + + + + + + + + + 是否跳过该项? + Do you want to skip this item? + + + + + + + + + + + + + + + + + + + + + 跳过 + Skip + + + + + + + + + + + + + + + + + + + + + 全部跳过 + Skip All + + + + + + + + + + + + + + + + + + + + + 取消 + Cancel + + + + + + + 包含未确认告警! + Contains unconfirmed alarm! + + + + + 当前未选中任何智能告警和未聚类的原始告警! + No intelligent alarms and unclustered original alarms is currently selected! + + + + + 包含未确认原始告警告警! + Contains unconfirmed original warning warning! + + + + + + + 当前用户不具备该告警确认操作权限! + The current user does not have the warning to confirm the operation permission! + + + + + 包含智能告警,无法合并! + Contains intelligent alarm, cannot merge! + + + + + 包含已经聚类的原始告警,无法合并! + Contains original warnings that have been clustered, cannot be merged! + + + + + 当前用户无此条原始告警合并权限! + The current user does not have this original warning merge permission! + + + + + 包含不同域的原始告警,无法合并! + Original alerts containing different domains cannot be merged! + + + + + 包含智能告警,无法分离! + Contains intelligent warning, cannot separate! + + + + + 无原始告警,无法分离! + No original warning, no separation! + + + + + + + 包含未聚类的原始告警,无法分离! + Contains unclustered original warnings, cannot be separated! + + + + + 无此条智能告警的编辑权限! + No edit permission of this intelligent alarm! + + + + + 包含不同智能告警下的原始告警,无法分离! + Contains different intelligent alarms under the original alarm, can not be separated! + + + + + + + 请选中含有趋势的告警(模拟量和累积量)! + Please select the alarm with trend(Ai and Pi)! + + + + + + + + + 请选中具有视频的告警! + Please select the alarm with video! + + + + + + 确定 + OK + + + + + 按设备组关键字搜索 + Search by device group keyword + + + + + 禁止告警失败,请检查实时库连接! + Failed to inhibit alarm, please check the real-time database connection! + + + + + 请选择至少一条告警! + Please select at least one alarm! + + + + + 无禁止告警权限! + Have no permission to inhibit alarm! + + + + + 初始化权限失败! + Failed to initialize permissions! + + + + + + + + + 故障录播暂不实现 + Fault not achieved + + + + CAlarmInhibitDialog + + + + 禁止告警列表 + Prohibit List + + + + + 关闭 + Close + + + + + + + 取消禁止告警 + Cancel + + + + + 时间 + Time + + + + + 优先级 + Priority + + + + + 位置 + Location + + + + + 责任区 + Region + + + + + 告警类型 + Alarm Type + + + + + 确认状态 + Confirm State + + + + + 告警内容 + Alarm Content + + + + + 未确认 + Unconfirmed + + + + + 已确认 + Confirmed + + + + + 警告 + Warning + + + + + 请选择取消禁止告警所在的行! + Please select the row where the alarm is cancelled! + + + + CAlarmItemModel + + + + 时间 + Time + + + + + 优先级 + Priority + + + + + 位置 + Location + + + + + 责任区 + Region + + + + + 告警类型 + Alarm Type + + + + + 告警状态 + Alarm State + + + + + 确认状态 + Confirm State + + + + 告警内容 + Alarm Content + + + + + 复归状态 + Resume state + + + + 告警内容 + Alarm Content + + + + + 未复归 + Resumed + + + + + 已复归 + Unresumed + + + 未知优先级: + Unknown Priority: + + + 未知位置: + Unknown Location: + + + 未知责任区: + Unknown Region: + + + 未知告警类型: + Unknown Alarm Type: + + + 未知告警状态: + Unknown Alarm State: + + + + + 未确认 + Unconfirmed + + + + + 已确认 + Confirmed + + + 其他 + Other + + + + + - + - + + + + CAlarmModel + + + 时间 + Time + + + + 优先级 + Priority + + + + 所属位置 + Location + + + + 告警内容 + Alarm Content + + + + + 操作 + Operation + + + + 趋势 + Trend + + + + 录波 + Wave Recording + + + + CAlarmMsgManage + + 其他 + Other + + + + CAlarmPlugin + + + + 提示 + Tip + + + + + 此次一共确认 + A total of + + + + + 条告警 + alarms were confirmed this time + + + + + + + + + 当前用户不具备该告警确认操作权限! + The current user does not have the warning to confirm the operation permission! + + + + + + + + + + + 是否跳过该项? + Do you want to skip this item? + + + + + + + + + + + 跳过 + Skip + + + + + + + + + + + 全部跳过 + Skip All + + + + + + + + + + + 取消 + Cancel + + + + + 包含未确认告警! + Contains unconfirmed alarm! + + + + CAlarmReport + + + Dialog + Dialog + + + + 导出 + Export + + + + 选择导出目录 + Select the export directory + + + + CAlarmSetDlg + + + + 设置 + Config + + + + + 动作选择 + Action + + + + + 声音告警 + Sound alarm + + + + + 语音告警 + Voice alarm + + + + + 告警方式 + Alarm method + + + + + 方式 + Style + + + + + 次数 + Number of alarms + + + + + 优先级颜色选择 + Priority color selection + + + + + <html><head/><body><p>选中告警时,告警的文字颜色</p></body></html> + <html><head/><body><p>The color of alarm text when alarm selected</p></body></html> + + + + + 选中文字颜色 + Text Selected Color + + + + + + + + + 颜色 + Color + + + + + <html><head/><body><p>选中告警时,告警的背景颜色</p></body></html> + <html><head/><body><p>The color of alarm backgournd when alarm selected</p></body></html> + + + + + 选中背景颜色 + Back Selected Color + + + + + <html><head/><body><p>无告警时,告警小窗中&quot;当前无告警&quot;文字颜色</p></body></html> + <html><head/><body><p>The text color of &quot;No alarm at present&quot; when no alarm</p></body></html> + + + + + 无告警文字颜色 + Text No Alarm + + + 选中颜色 + Selected color + + + 文字颜色 + Text color + + + 无告警颜色 + No alarm color + + + + + 语音引擎 + Speech engine + + + + + 引擎 + Engine + + + + + 语言 + Language + + + + + 语音名称 + Voice name + + + + + 确定 + OK + + + + + 取消 + Cancel + + + -1:重复 0:不报 x:重复x次 + -1:repeat x:repeat x times + + + + + 不报 + No Alarm + + + + + 重复 + Repeat + + + + + 重复x次 + Repeat x times + + + + CAlarmSetMng + + + + 当前无告警! + No alarm at present! + + + + + 未知告警等级 + Unknown Alarm Level + + + + CAlarmShield + + 屏蔽设备树 + Device Tree + + + + 新增 + New + + + + 批量启用 + Enable + + + + 批量取消 + Disable + + + + 批量删除 + Delete + + + + 屏蔽状态 + Shield Status + + + + 名称 + Name + + + + 查询 + Search + + + + + + + + + + 提示 + Prompt + + + + 请勾选一条未启用的屏蔽信息! + Please check a disable shield info! + + + + 屏蔽失败! + Enable failure! + + + + 请勾选一条已启用的屏蔽信息! + Please check a enable shield info! + + + + 解除失败! + Disable failure! + + + + 请先取消屏蔽! + Please disable first! + + + + 请勾选一条屏蔽信息! + Please check a shield info! + + + + 删除失败! + Delete failure! + + + + 全部 + All + + + + 未启用 + Disable + + + + 已启用 + Enable + + + + 已过期 + Expired + + + + CAlarmShield + CAlarmShield + + + + CAlarmShiledDialog + + + + 禁止告警 + Inhibit Alarm + + + + + 未找到插件 + No Plugin + + + + + 装载异常 + Load abnormal + + + + CAlarmStatWidget + + Form + Form + + + 按设备类型统计 + Statistics by device type + + + 按时间统计 + Time-based Statistics + + + PushButton + PushButton + + + 图表 + Chart + + + 列表 + List + + + 时间段 + Time Period + + + ~ + ~ + + + 设备类型: + Device Type: + + + yyyy-MM-dd + yyyy-MM-dd + + + 告警级别: + Alarm Level: + + + 查询 + Query + + + 位置: + Position: + + + 提示 + Tip + + + 警告 + Warning + + + 没有查询到任何站点信息 + No site information was found in the query. + + + 开始时间需小于等于结束时间 + The start time must be less than or equal to the end time. + + + 最多查询31天的数据 + You can query data for a maximum of 31 days. + + + + CAlarmStatisTableModel + + 统计日期 + Statistical Date + + + 区域名称 + Location + + + 设备类型 + Device Type + + + %1总数 + Number of %1 + + + + CAlarmStatisWidget + + 区域: + Location: + + + 统计方式: + Statistical Style: + + + 设备类型: + Device Type: + + + 开始时间: + Start Time: + + + 结束时间: + End Time: + + + 查询 + Search + + + 打印 + Print + + + 清除 + Clear + + + 日统计 + Day + + + 月统计 + Month + + + 年统计 + Year + + + 提示 + Prompt + + + 结束时间不能小于开始时间! + The end time cannot be less than start time! + + + 保存 + Save + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + 保存失败 + Failed to save + + + + CAlarmStatistics + + + CAlarmStatistics + 告警统计 + + + + 位置 + Location + + + + 告警等级 + Alarm Level + + + + 时间段 + Time + + + 关键字 + Keyword + + + + 告警内容关键字 + Alarm Content Keywords + + + + 查询 + Search + + + + 普通告警 + Alarm + + + + 智能告警 + Intelligent Alarm + + + + 告警比对 + Alarm Compare + + + + 分析报告 + Analysis Report + + + + 22 + 22 + + + + 33 + 33 + + + + + 警告 + Warning + + + + 未选择告警等级 + No alarm selected + + + + 开始时间需小于等于结束时间 + The start time must equal or less than the end time + + + + + yyyy-MM-dd + yyyy-MM-dd + + + + - + - + + + + CAlarmTaskMngDlg + + + + 工单管理 + Work management + + + + + 作业组状态: + Work status: + + + + + 未创建 + No created + + + + + 创建作业组 + Create job group + + + + + 查看作业组 + View job group + + + + + 查看资产 + View assets + + + + + + + + + + + 提醒 + Remind + + + + + 艾动接口初始化失败 + Idong interface failed to initialize + + + + + + + 未关联作业组,请先关联作业组 + Assignment group not associated,please associate first + + + + + 创建作业组成功 + Successfully created job group + + + + + 创建作业组失败 + Faild to create job group + + + + + 获取作业组信息失败 + Failed to obtain job group information + + + + CAlarmWidget + + + + + + + + + + + + + + 确认 + Confirm + + + + + 当前用户不具备该告警所在位置的操作权限! + The current user does not have the operation authority of the location of the alarm! + + + + + 当前用户不具备该告警所在责任区的操作权限! + The current user does not have the operation authority of the responsible area of the alarm! + + + + CAnaAxisShow + + Hide This Channel + 隐藏此通道 + + + Restore to Default Group + 恢复至默认分组 + + + Wave Amplitude Zoom In + 波形幅度放大 + + + Wave Amplitude Zoom Out + 波形幅度缩小 + + + + CAnimationConfigDialog + + 动画配置 + Animation Configuration + + + 取消 + Cancel + + + 确定 + Confirm + + + 旋转动画 + Rotation Animation + + + 动画过渡间隔: + Animation Excessive Interval: + + + ms + ms + + + 关联测点: + Point: + + + ° + ° + + + 最小值 + Minimum + + + 旋转偏移角度 + Rotation offset + + + 最大值 + Maximum + + + 测点值 + Measuring Point Value + + + None + None + + + 动画值配置: + Animation Value Configuration: + + + 位移动画 + Translation Animation + + + 水平偏移像素 + Horizontal Offset Pixel + + + 垂直偏移像素 + Vertical Offset Pixel + + + px + px + + + 缩放动画 + Scale Animation + + + 水平缩放比例 + Horizontal Scaling + + + 垂直缩放比例 + Vertical Scaling + + + % + % + + + + CAssetDataMng + + + 需要导入的资产信息为空 + Asset info is empty + + + + 数据库打开失败,导入资产信息失败 + Failure to open database,failure to import asset info + + + + + 满足条件的导入条数为0 + No matched number + + + + 执行插入语句失败,导入资产信息失败 + Failure to insert sql,failure to import asset info + + + + + 一共%1条,成功导入%2条 + Total %1,%2 import successful + + + + 需要导入的维护记录为空 + Maintenance records is empty + + + + 数据库打开失败,导入维护记录失败 + Failure to open database,failure to import maintenance records + + + + 执行插入语句失败,导入维护记录失败 + Failure to insert sql,failure to import maintenance records + + + + CAssetTableModel + + + 设备名称 + Device Name + + + + 备注 + Remark + + + + 设备ID + DeviceId + + + + 型号 + Type + + + + 参数 + Parameter + + + + 安装日期 + Installation Date + + + + 状态 + Status + + + + 厂家联系方式 + Manufacturer Contact + + + + 维护周期 + Maintenance Period + + + + 一个月 + One Month + + + + 三个月 + Three Months + + + + 半年 + Six Months + + + + 一年 + One Year + + + + CAssetView + + + 全选 + Check All + + + + 全不选 + Unchecked All + + + + CAssetWidget + + + 添加 + Add + + + + 删除 + Delete + + + + 导入 + Import + + + + 导出 + Export + + + + 关键字 + Keywords + + + + 查询 + Search + + + + 未知设备组 + Unknonwn device group + + + + Save File + Save File + + + + 当前未选中任何项! + No item is currently selected! + + + + CAssetWidget + CAssetWidget + + + + 位置/设备组 + Location/DeviceGroup + + + + 设备组 + DeviceGroup + + + + 设备管理 + DeviceManage + + + + 添加资产信息 + Add asset info + + + + 同时会删除维护记录 + Delete maintenance records at the same time + + + + 对设备名称、型号、参数和内容生效 + Effective for device name、type、parameter and content + + + + 未知位置 + Unknonwn location + + + + + 提示 + Prompt + + + + 所属设备组 + Device Group + + + + Open File + Open File + + + + 请先选中位置或设备组 + Please select location and device group first + + + + 设备组为空 + Device group is empty + + + + 添加成功! + Successful add! + + + + 删除失败! + Failure to delete! + + + + 删除成功! + Successful delete! + + + + + 资产信息 + Asset info + + + + + 维护记录 + Maintenance records + + + + CBIWidget + + 用户不具有指定权限 + The user does not have the specified permissions + + + 无用户登录信息 + No user login information + + + 输入名称不存在 + The input name does not exist + + + 输入名称不唯一 + The input name is not unique + + + 不允许在该节点登录 + Logon on this node is not allowed + + + 用户口令错误 + Password error + + + 用户已失效 + User deactivated + + + 用户已锁定 + User locked + + + 用户不属于所选用户组 + The user does not belong to the selected user group + + + 未知错误,系统可能未正常启动 + Unknown error, system may not start properly + + + 未知错误 + Unknown error + + + 内存出错 + Memory error + + + + CBatchOperation + + + Dialog + Dialog + + + + 测点类型 + Type of measurement point + + + + 批量操作 + batch operation + + + + 执行 + Execute + + + + 全部 + All + + + + 模拟量 + Analog + + + + 数字量 + Digital + + + + 混合量 + Mix + + + + + + + 获取登录信息失败! + Failure to get login info! + + + + + 获取登录账户失败! + Failure to get login user! + + + + + 无标签操作权限! + Have no perm to operate! + + + + 测点“%1”,%2 + Test point “%1”, %2 + + + + 控制进行中 + Control in progress + + + + 下发取消命令失败 + Failure to send cancel command + + + + 提示 + prompt + + + + + 成功 + success + + + + 失败 + failure + + + + 失败:%1 + failure:%1 + + + + 批量编辑 + batch edit + + + + + 警告 + Warning + + + + + 暂不能批量操作! + Batch operation is temporarily unavailable! + + + + CBatchOperationModel + + + 测点信息 + Measurement point information + + + + 当前值 + Current Value + + + + 控制操作 + control operation + + + + 执行结果 + Executing results + + + + CBindCheckModel + + 检查结果 + Result + + + 对象名称 + Object Name + + + 点描述 + Description + + + 点标签 + Library + + + 正常 + Normal + + + 无对象名称 + No name + + + 对象名称重复 + Repeat name + + + 联库错误 + Library error + + + 未联库 + No library + + + + CBindCheckWidget + + 检查 + Check + + + 正常项 + Normal + + + 异常项 + abNormal + + + 未联库 + No library + + + + CBoxTreeWidget + + 搜索... + Search... + + + + CBrowserWidget + + 下载模板 + Download Template + + + + CButtonGroupWidget + + + 配置错误! + Configuration Error! + + + + CChanRealStatusWidget + + + 通讯状态 + Communication status + + + + 正常 + Normal + + + + 异常 + Abnormal + + + + 未找到组号%1! + Not found group %1! + + + + CChartShape + + 饼图 + Pie Chart + + + 棒图 + Bar Chart + + + 折线图 + Line Chart + + + 实时图 + Real-time Chart + + + + CColorConfigWidget + + 颜色选择 + Select Color + + + + CColorLabel + + + + 颜色选择 + Select Color + + + + CCombBoxDelegate + + 星期日 + Sunday + + + 星期一 + Monday + + + 星期二 + Tuesday + + + 星期三 + Wednesday + + + 星期四 + Thursday + + + 星期五 + Friday + + + 星期六 + Saturday + + + 否 + No + + + 是 + Yes + + + + CComtradeFile + + The Filename is Error! + 文件名错误! + + + The Path is Error! + 路径错误! + + + The Header File's Format is Error + 头部文件格式错误 + + + Config Files Open Failed + 配置文件打开失败 + + + Config File, Line + 配置文件,行 + + + Channel Count Error + 通道数量错误 + + + Channel Count Over Limited + 通道数量超过限制 + + + Wave Channel Data Lost! + 波形通道数据丢失! + + + on-off Channel Data Lost! + 开关通道数据丢失! + + + Format Error! + 格式错误! + + + Data File Open Failed + 数据文件打开失败 + + + Info File Open Failed + 信息文件打开失败 + + + Display Attribute + 显示属性 + + + SHENZHEN KANGBIDA CONTROL TECHNOLOGY CO.LTD + 深圳市远信储能技术有限公司 + + + Value Type + 值类型 + + + Sampling Width + 采样宽度 + + + Grid Height + 网格高度 + + + State Channel Height + 状态通道高度 + + + Analogous Channel Display + 模拟通道显示 + + + Analogous Channel Count + 模拟通道数量 + + + Analogous Channel + 模拟通道 + + + State Channel Display + 状态通道显示 + + + State Channel Count + 状态通道数量 + + + Status Channel + 状态通道 + + + + CConditionModel + + + 参数 + Parameter + + + + 条件 + Condition + + + + 且 + And + + + + 小于 %1 + less than %1 + + + + 小于等于 %1 + less than or equal to %1 + + + + 等于 %1 + equals %1 + + + + 大于等于 %1 + greater than or equal to %1 + + + + 大于 %1 + greater than %1 + + + + 不等于 %1 + not equal to %1 + + + + CConfigDialog + + 基础配置 + 配置 + Configuration + + + 背景: + Background: + + + * + * + + + 首页: + Homepage: + + + 像素 + Pixels + + + 页面配置 + Page Configuration + + + 分辨率: + Resolution: + + + 失电颜色: + Power Loss Color: + + + 单屏显示 + Single Screen Display + + + 多屏配置 + Multi-Screen Configuration + + + 脚本配置 + ScriptConfig + + + 屏幕个数: + Screen Number: + + + 确定 + Confirm + + + 取消 + Cancel + + + + CConfirmDialog + + 提交 + Submit + + + 日志信息: + Log Information: + + + 确认 + Confirm + + + 取消 + Cancel + + + 无修改 + No Changes + + + 添加 + Add + + + 冲突 + Conflict + + + 删除 + Delete + + + 忽略 + Ignore + + + 修改 + Modify + + + 替换 + Replace + + + 未纳入版本控制的目录,被外部引用的目录所创建 + Directory not under version control, created by an external reference + + + 未纳入版本控制 + Not under version control + + + 遗失 + Lost + + + 重名 + Duplicate Name + + + 自定义非法状态 + Custom Illegal State + + + 改变 + Changed + + + 未锁定 + Unlocked + + + 锁定 + Locked + + + 没有历史 + No History + + + 包含历史 + Contains History + + + 正常 + Normal + + + 以切换 + Switched + + + 被外部引用创建的文件 + Files created by external references + + + 没有被锁定标记 + Not marked as locked + + + 存在锁定标记 + Marked as locked + + + 树冲突 + Tree conflict + + + 名称 + Name + + + 状态 + Status + + + + CConstCurves + + + 查询 + Search + + + + 名称 + Name + + + + 值 + Value + + + + CConstCurves + CConstCurves + + + + + + 提示 + Prompt + + + + %1 定值读取失败: %2 + %1 failure to read const: %2 + + + + %1 定值读取超时 + %1 timeout + + + + %1 下发定值读取命令失败 + %1 failure to send read command + + + + CCurveChartView + + + 位置: + Location: + + + + 设备类型: + DeviceType: + + + + CCurveLegendModel + + + + 颜色 + Color + + + + + 值 + Value + + + + + 最大值 + Maximum + + + + + 最大值时间 + Maximum Time + + + + + 最小值 + Minimum + + + + + 最小值时间 + Minimum Time + + + + + 平均值 + Average Value + + + + + 单位 + Unit + + + + + Y轴缩放系数 + Yaxis Scaling Factor + + + + + Y轴偏移系数 + Yaxis Offset Factor + + + 名称 + Name + + + + + 设备组-测点 + DeviceGroup-Point + + + 设备-测点 + Device - Measurement Point + + + + CCurveLegendView + + + + 全不选 + Unchecked All + + + + + 删除 + Delete + + + + + 查看最大值 + Show Maximum + + + + + 查看最小值 + Show Minimun + + + + CDataBindModel + + 标签名称 + Label Name + + + + CDataBindView + + 提示 + Prompt + + + 当前测点已经存在! + The current measuring point already exists! + + + 警告 + Warning + + + 当前未选中任何行! + No rows are currently selected! + + + 删除 + Delete + + + 清空 + Clear + + + 新建 + New + + + + CDataOptWidget + + + + 专业 + Subsystem + + + + 设备组/点 + Device group/point + + + + 位置 + Location + + + + 刷新 + Refresh + + + + 全部 + All + + + + + + 未知 + Unknown + + + + CDataOptWidget + CDataOptWidget + + + + 位置: + Location: + + + + 标签类型: + Type: + + + 设备组 + Device Group + + + + 设备 + Device + + + 标签名 + Point Name + + + + 标签类型 + Type + + + + 操作时间 + Operate Time + + + + 设置值 + Value + + + + 状态文本 + State Text + + + + 主机 + Hostname + + + + 操作员 + Operator + + + + 用户组 + UserGroup + + + + 点标签 + Point Tag + + + + 表名 + Table Name + + + + 总数 + Total + + + + 取消设置 + Cancel + + + 无取消人工置数权限! + Have no perm to cancel manual setting! + + + + 获取当前登录用户失败! + Failed to retrieve the current logged-in user! + + + + 无操作权限! + No operation permission! + + + + 初始化权限失败! + Failure to initialize perm! + + + + 提示 + Prompt + + + + 请至少选择一项人工置数信息! + Please select a record first! + + + + 获取标签操作信息有误,%1 + Failure to read tag operate record,%1 + + + + 获取标签信息有误,%1 + Failure to read tag info,%1 + + + + 下发取消命令失败 + Failure to send cancel command + + + + CDataOptWork + + + 读取标签信息表失败 + Failure to read tag info + + + 读取标签信息表失败,或者请检查标签信息表中是否存在残留数据! + Failed to read the tag information table, or please check if there is any residual data in the tag information table! + + + + CDesignerScene + + 提示 + Prompt + + + 组合图元不可镜像! + Composite primitive cannot be mirrored! + + + 精灵图元不可镜像! + Sprite elements cannot be mirrored! + + + 控件图元不可镜像! + Wiget primitive cannot be mirrored! + + + 图表图元不可镜像! + Chart primitive cannot be mirrored! + + + + CDesignerView + + 视图 + View + + + 动画配置 + Animation Configuration + + + 添加到精灵图元 + Add to Sprite + + + 文字编辑 + Text Edit + + + 文本编辑 + Text Editor + + + 数据源配置 + Data Source Configuration + + + 检索器 + Retriever + + + 显示网格 + Show Grid + + + 网格间距 + Grid Spacing + + + 网格颜色 + Grid Color + + + 编辑图元 + Edit Primitive + + + 文本替换 + Text Replace + + + + CDesignerWnd + + 清空联库 + Clear Library + + + 设计窗口 + Design Window + + + 窗口 + Window + + + 图形已被修改! +保存所作的改动? + The graphics have been modified! +Save the changes? + + + 保存 + Save + + + 不保存 + Discard + + + 取消 + Cancel + + + 新建 + New + + + 提醒 + Warn + + + 请选择新建类型? + Select new type? + + + 新建图形 + New Graphics + + + 新建图元 + New primitive + + + 打开 + Open + + + 打开文件 + Open File + + + pic (*.glx *.ilx *.elx) + pic (*.glx *.ilx *.elx) + + + 提示 + Warn + + + 找不到文件: + File Not Found: + + + 保存文件 + Save File + + + 另存文件 + Save As File + + + 图元名称首字母不能为数字! + 图元名称的首字母不能是数字! + + + 图元名称只支持中文、字母、数字和下划线 + 图元名称仅支持中文、字母、数字和下划线 + + + 非法的命名 + Illegal naming + + + 精灵图元 + Sprite + + + 未设置所属专业.位置 + No Subsystem.Station + + + 无效的位置信息 + Invalid Station + + + 操作dev_topo_info失败 + Operate dev_topo_info failed + + + 操作dev_topo_ver失败 + Operate dev_topo_ver failed + + + 上传拓扑成功! + Successful upload topology! + + + F5 + F5 + + + 错误 + Error + + + 图表图元不允许嵌套! + Chart primitive are not allowed to be nested! + + + 当前选中的图元包含非基础图元! + The currently selected primitive contains non-base primitive! + + + 当前未选中图元! + No primitive are currently selected! + + + 取消组合的图元不允许超过一个! + No more than one uncombined primitive is allowed! + + + 当前选中的图元不是组合图元! + The currently selected primitive is not a composite primitive! + + + 执行上传拓扑? + Perform upload topology? + + + 确认 + Confirm + + + error + error + + + 未设置所属应用.专业.车站名 + No App.Subsystem.Station + + + 警告 + Warning + + + 操作数据库失败 + Failed to operate database + + + 关闭 + Close + + + Ctrl+N + Ctrl+N + + + Ctrl+O + Ctrl+O + + + Ctrl+S + Ctrl+S + + + F11 + F11 + + + 调试 + Debug + + + 重新联库 + Connect Library Again + + + Ctrl+F + Ctrl+F + + + 检索器 + Retriever + + + F2 + F2 + + + 图层管理 + Layer Management + + + Delete + Delete + + + Ctrl+C + Ctrl+C + + + 全选 + Check All + + + Ctrl+A + Ctrl+A + + + Ctrl+X + Ctrl+X + + + Ctrl+V + Ctrl+V + + + Ctrl+k + Ctrl+k + + + Ctrl+b + Ctrl+b + + + 添加图元 + Add primitive + + + 移除图元 + Remove primitive + + + 编辑图元 + Edit primitive + + + 增加图库 + Add Gallery + + + 删除图库 + Delete Gallery + + + 位置: + Location: + + + 栅格 + Grid + + + 捕捉 + Catch + + + 正交 + Quadrature + + + 属性编辑 + Property Edit + + + 联库信息 + Library Information + + + 模型检查 + Library Check + + + 图层 + Layer Management + + + + + + + + + - + - + + + 属性 + Attribute + + + 图层显示 + Layer Display + + + 状态 + State + + + 图层数量已达到最大值,不允许继续添加图层! + The number of layers has reached its maximum value. It is not allowed to continue adding layers! + + + 图层%1 + Layer%1 + + + 状态%1 + State%1 + + + %1 - %2[*] + %1 - %2[*] + + + 当前图元名称已存在,不允许重复添加! + The current primitive name already exists. Repeat addition is not allowed! + + + 请输入新建图库的名称 + Please enter the name of the new gallery + + + 图库名称不能为空! + Gallery name cannot be empty! + + + 图库名称首字母不能为数字! + Gallery name initials can not be a number! + + + 图库名称首字母不能为空格! + Gallery name initials can not be space! + + + 图库名称只支持中文、字母、数字和下划线 + The name of the graphic library only supports Chinese characters, letters, numbers, and underscores. + + + 该图库名称已存在! + The name of the gallery already exists! + + + 图元状态数量已达到最大值,不允许继续添加图元状态! + The maximum number of primitive states has been reached,continue to adding primitive state is not allowed! + + + 精灵图元编辑模式下不允许添加图层! + Sprite element editing mode does not allow adding layers! + + + 图层数量至少为1,不允许继续删除图层! + The number of layers should be at least 1,continue to delete layer is not allowed! + + + 图元状态数量至少为1,不允许继续删除图元状态! + The number of primitive state should be at least 1,continue to delete primitive state is not allowed! + + + 精灵图元编辑模式下不允许删除图层! + Deleting layers is not allowed in sprite element editing mode! + + + 非图表图元暂不支持关联统计量! + Correlation statistics are not supported for non-chart primitive! + + + 另存为 + Save as + + + 运行 + Run + + + 浏览 + Browse + + + 图形设计 + Graphic Design + + + 新建编辑图形 + New graphics + + + 工具箱 + ToolBox + + + 属性编辑器 + Property Editor + + + 设置 + Config + + + 页面配置 + Config + + + 全局变量 + Global Parameter + + + 着色策略 + Strategy + + + 文件同步 + FileSync + + + web发布 + Web Publish + + + 上传拓扑 + UploadTopo + + + 脚本编辑器 + Script Editor + + + 剪切 + Cut + + + 拷贝 + Copy + + + 复制 + Copy + + + 粘贴 + Paste + + + 撤消 + Undo + + + 恢复 + Redo + + + 删除 + Delete + + + 组合 + Group + + + 取消组合 + Ungroup + + + 上移一层 + Level Up + + + 下移一层 + Level Down + + + 置顶 + To Top + + + 置底 + To Bottom + + + 左对齐 + Left Align + + + 右对齐 + Right Align + + + 上对齐 + Top Align + + + 下对齐 + Bottom Align + + + 水平居中对齐 + Horizontal Center Align + + + 垂直居中对齐 + Vertical Center Align + + + 水平等距 + Horizontal Equidistant + + + 垂直等距 + Vertical Equidistant + + + 水平镜像 + Horizontal Mirror + + + 垂直镜像 + Vertical Mirror + + + 等大 + EqualLarge + + + 等小 + EqualSmall + + + 位置工具 + Align Tool + + + 文件(&F) + File(&F) + + + 窗口(&W) + Window(&W) + + + 系统(&S) + System(&S) + + + 工具(&T) + Tool(&T) + + + 编辑(&E) + Edit(&E) + + + 页面 + Page + + + + CDevHisDataWidget + + + 区域: + Location: + + + + 开始时间: + Start Time: + + + + 设备类型: + Device Type: + + + + 结束时间: + End Time: + + + + 设备名称: + Device Name: + + + + 查询 + Search + + + + Excel + Excel + + + + Pdf + Pdf + + + Excel格式导出 + Export to Excel Format + + + Pdf格式导出 + Export to PDF Format + + + + 打印 + Print + + + + 清除 + Clear + + + + + 保存 + Save + + + + + + + 提示 + Prompt + + + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + + + 保存失败 + Failed to save + + + + CDevHisDataWidget + CDevHisDataWidget + + + + + yyyy-MM-dd HH:mm + yyyy-MM-dd HH:mm + + + + CDevHisTableModel + + + 日期/时间 + Date/Time + + + + 设备名称 + Device Name + + + + 所属区域 + Location + + + + CDevRealDataWidget + + + 位置 + Location + + + + 点类型 + Point Type + + + 设备 + Device + + + + 设备组 + DevGroup + + + + 专业 + Subsystem + + + 过滤 + Filter + + + 按测点过滤 + Filter by measuring point + + + + 禁止告警 + Inhibit Alarm + + + + 全部 + All + + + + 模拟量 + Analog + + + + 数字量 + Digital + + + + 累积量 + Accuml + + + + 混合量 + Mix + + + + 测点关键字查询 + Measurement Point Keyword Search + + + + 查询 + Query + + + + 所有 + All + + + + CDevRealDataWidget + 实时数据控件 + + + + 关键字查询 + Keyword Search + + + + 禁止控制 + Prohibit Control + + + + 恢复控制 + Resume Control + + + + 禁止刷新 + Prohibit Refresh + + + + 恢复刷新 + Resume Refresh + + + + 恢复告警 + Resume Alarm + + + + 人工置数 + Manual Setting + + + + 取消置数 + Cancel Setting + + + + + 查询设备组信息失败! + Failed to retrieve device group information! + + + + + + + 请至少选择一项! + Please select at least one item! + + + + 行“%1”,%2 + Row "%1", %2 + + + + “%1”等,共(%2)项 + "%1" and others, a total of (%2) items + + + + + + “%1”,%2 + "%1", %2 + + + + 下发取消命令失败 + Failure to send cancel command + + + + 提示 + Prompt + + + + + 获取登录信息失败! + Failure to get login info! + + + + 获取登录账户失败! + Failure to get login user! + + + + 无标签操作权限! + Have no perm to operate! + + + + CDevSpePointWidget + + + + + 测点标签为空! + Measurement point label is empty! + + + + + + 数据库连接打开失败! + Failed to open the database connection! + + + + + + 测点标签不合法! + + 测点标签不合法! + Measurement point label is not valid! + + + + + + 重复添加! + + 重复添加! + Duplicate addition! + + + + + 查询设备描述失败! + + 查询设备描述失败! + Failed to query device description! + + + + + 传入参数个数不一致! + Number of input parameters is inconsistent! + + + + CDevTreeModel + + + 位置/设备组/设备 + Location/DevGroup/Device + + + + CDevTreeView + + + 全选 + Check All + + + + 清空 + Clear + + + + CDeviceNavWidget + + Form + Form + + + + CDgtNameShow + + Hide This Channel + Hide This Channel + + + Restore to Default Group + Restore to Default Group + + + + CDisposalPlanDialog + + + + Dialog + Dialog + + + + + 告警时间: + Alarm Time: + + + + + 告警内容: + Alarm Content: + + + + + 处置预案: + Disposal Plan: + + + + + 处置预案 + Disposal Plan + + + + CDocumentManageWidget + + + 文档管理 + Document Management + + + + 添加 + Add + + + + 修改 + Modify + + + + + 删除 + Delete + + + + 下载 + Download + + + + 上传 + Upload + + + + 查询 + Search + + + + 输入文档名称查询 + Enter Document Name to Search + + + + 打开 + Open + + + + CDrillDownChart + + + 位置 + Location + + + + 总共: + Total: + + + + CDropListWidget + + 删除选中项 + Delete the selected item + + + + CDutyDefineDialog + + Dialog + Dialog + + + 保存 + Save + + + 添加一行 + Add a row + + + 删除最后一行 + Delete the last row + + + + CDutySetting + + 导出 + Export + + + 保存 + Save + + + CDutySetting + CDutySetting + + + 用户组 + UserGroup + + + 上一周 + Last week + + + 本周 + This week + + + 下一周 + Next week + + + 引用上周 + Refer to last week + + + 班次管理 + Shift management + + + 选择导出目录 + Select the export directory + + + + CEditCollectWidget + + + + 趋势名称: + Trend Name: + + + + + 确定 + Confirm + + + + + 取消 + Cancel + + + + CEventDataCollect + + + + 其他 + Other + + + + 系统信息 + System Information + + + + CEventDeviceTreeModel + + + + 系统信息 + System Information + + + + .系统 + .system + + + + CEventDeviceTreeView + + + 全选 + Check All + + + + 清空 + Clear + + + + 选择 + Select + + + + 清除 + Clear + + + + CEventFilterDialog + + + + 过滤 + Filter + + + + + 优先级 + Priority + + + + + + + + + + + 全选 + Check All + + + + + 位置 + Location + + + + + 责任区 + Responsibility Area + + + + + 事件状态 + Event State + + + + + 设备类型 + Device Type + + + + + 事件内容关键字 + Event content keywords + + + + + 时间 + Time + + + + + 开始时间 + Start Time + + + + + 结束时间 + End Time + + + + + 确定 + Confirm + + + + + 取消 + Cancel + + + + + + + yyyy/MM/dd hh:mm + yyyy/MM/dd hh:mm + + + 区域 + Location + + + + + 复归 + Resume + + + + + 已复归 + Resumed + + + + + 未复归 + unResumed + + + + + + + + + 提示 + Prompt + + + + + 历史事件过滤必须选择时间! + Select time before filter! + + + + + 开始时间不能大于结束时间! + The start time cannot more than the end time! + + + + + 时间间隔不得超过90天! + The time interval cannot more than 90 days! + + + + CEventForm + + + + 事件 + Event + + + + + 位置: + Location: + + + + + 时间: + Time: + + + + 刷新 + Refresh + + + + + 过滤 + Filter + + + + 全勾选 + Select All + + + + 全不选 + Deselect All + + + + + 清空 + Clear + + + + + 导出 + Export + + + + + 优先级: + Priority: + + + + + 关闭 + Close + + + + + 事件状态: + Event State: + + + 事件总数: + Number of Event: + + + + + + + 按设备组关键字搜索 + Search by device group keyword + + + + + + + + + 请选择时间 + Select time + + + + + + + + + + + + + + + 请选择优先级 + Select priority + + + + + + + + + + + + + + + 请选择位置 + Select location + + + + + + + 请选择告警状态 + Select Alarm State + + + + + + + + + + + 请选择事件状态 + Select event state + + + + + + + 事故追忆 + Accident Memory + + + + + 实时事件 + RealTime Event + + + + + 历史事件 + Historical Event + + + 实时事件总数: + RealTime Event: + + + + + 正在查询历史事件... + Querying historical events... + + + + + 错误 + Error + + + + + 当前用户不具备事件浏览权限 + The current user does not have the right to browse the events + + + + + 导出成功 + Export succeeded + + + 历史事件数量: + History Event: + + + + + + + + + 提示 + Prompt + + + %1 历史事件数量超出%2条,未予显示! + The number of %1 historical events exceeds %2,not displayed! + + + + + + + 实时事件总数: + Total number of realtime event: + + + + + + + 0 + 0 + + + + + 历史事件总数: + Total number of historical event: + + + + + 历史事件数量: + Number of historical event: + + + + + 历史事件数量超出10000条,超出部分不显示 + The number of historical events beyond 10000,the excess part does not show + + + + + + + 历史事件数量超出%1条,未予显示! + The number of historical events beyond %1,not shown! + + + + + Save File + Save File + + + + CEventHistoryModel + + + + 时间 + Time + + + + + 优先级 + Priority + + + + + 位置 + Location + + + + + 责任区 + Responsibility Area + + + + + 事件类型 + Event Type + + + + + 事件状态 + Event State + + + + + 确认人 + Confirmor + + + + + 确认时间 + Confirm time + + + + 事件内容 + Event Content + + + + + 复归状态 + Resume Status + + + + 事件内容 + Event Content + + + + + 未复归 + unResumed + + + + + 已复归 + Resumed + + + + CEventItemModel + + + + 时间 + Time + + + + + 优先级 + Priority + + + + + 位置 + Location + + + + + 责任区 + Responsibility Area + + + + + 事件类型 + Event Type + + + + + 事件状态 + Event State + + + + + 事件内容 + Event Content + + + + + 复归状态 + Resume Status + + + + + 未复归 + unResumed + + + + + 已复归 + Resumed + + + + CExplorerWnd + + 打开文件 + Open File + + + 提示 + Prompt + + + 加密狗运行异常! + Dongle running abnormal! + + + 加密狗检测正常! + Dongle detection normal! + + + 确认退出系统? + Exit system? + + + 确认 + Confirm + + + 取消 + Cancel + + + 编辑图形 + Edit graphics + + + Ctrl+d + Ctrl+d + + + 加密狗状态 + Dongle state + + + Ctrl+R + Ctrl+R + + + Ctrl+E + Ctrl+E + + + 退出 + Exit + + + 导航图 + Navigation Chart + + + %1 - %2 + %1 - %2 + + + 导出图形 + Export graphics + + + 图形文件(*.png) + Graphics file(*.png) + + + + CFaultRecallRecordWidget + + + + 位置 + Location + + + + 名称 + Name + + + + 刷新 + Refresh + + + + 清空 + Clear + + + + 删除 + Delete + + + + 全部 + All + + + + CFaultRecallRecordWidget + CFaultRecallRecordWidget + + + + + 开始时间 + Start time + + + + + 结束时间 + End time + + + + 画面 + Graph + + + + 播放 + Play + + + + + + + 提示 + Prompt + + + + 请选择一项记录! + Please select a record! + + + + 确定开始播放“%1”? + Confirm to start playing “%1”? + + + + 请选择删除项! + Please select a record! + + + + 确定删除记录“%1”? + Confirm to delete “%1”? + + + + + + 打开数据库失败。 + Failure to open database. + + + + 删除“%1”失败! + Failure to delete “%1”! + + + + 确定清空所有记录? + Confirm to clear all records? + + + + 清空失败! + Failure to clear! + + + + CFileFolderTree + + + 名称: + Name: + + + + + + + + + + + + + + + 提示 + Hint + + + + 非法的命名 + Illegal Naming + + + + + + 当前登录用户无运维管理功能权限 + The current logged-in user does not have operational management permissions + + + + 添加目录 + Add Directory + + + + + 目录已存在 + The directory already exists + + + + 添加目录失败 + Failed to add the directory + + + + 请选择要修改的目录 + Please select the directory to modify + + + + 修改目录名称 + Modify directory name + + + + 修改目录名称失败 + Failed to modify the directory name + + + + 请选择要删除的目录 + Please select the directory to delete + + + + 确认删除? + Confirm on delete? + + + + 删除目录失败 + Failed to delete the directory + + + + + 添加 + Add + + + + 修改 + Modify + + + + 删除 + Delete + + + + CFileSyncDialog + + 文件同步 + FileSync + + + 提交 + Submit + + + 删除 + Delete + + + 添加 + Add + + + 提示 + Hint + + + 无需添加 + No need to add + + + 确认添加 + Confirm to add + + + 添加失败: + Add failed: + + + 无需删除 + No need to delete + + + 确认删除 + Confirm + + + 删除失败: + Deletion failed: + + + 选择文件 + Select File + + + 名称 + Name + + + 修改日期 + Modification Date + + + 状态 + Status + + + (异常) + (Abnormal) + + + 无需提交 + No Need to Submit + + + 提交失败: + Submission Failed: + + + + CFileTableWidget + + + + + + + + + + + + + + + + + + 提示 + Hint + + + + + 当前登录用户无运维管理功能权限 + The current logged-in user does not have operational management permissions + + + + 请选择上传目录 + Please select the upload directory + + + + 上传文档 + Upload document + + + + + 文档已存在: %1,是否替换? + The document already exists: %1, do you want to replace it? + + + + %1 上传失败 + %1 Upload failed + + + + 上传成功 + Upload successful + + + + + + 请选择文档 + Please select a document + + + + 请选择下载路径 + Please select a download path + + + + %1 下载失败 + %1 Download failed + + + + 下载成功 + Download successful + + + + 确认删除? + Confirm on delete? + + + + 删除 %1 失败 + Failed to delete %1 + + + + 文档不存在 + The document does not exist + + + + 打开文档失败 + Failed to open the document + + + + 序号 + Serial Number + + + + 文档名称 + Document Name + + + + 文档修改时间 + Document Modification Time + + + + 文档路径 + Document Path + + + 请选择一个录波文件 + Please select an oscillogram file + + + 请选择导出路径 + Please select an export path + + + 文件已存在: %1,是否替换? + File already exists: %1, do you want to replace it? + + + %1 导出失败 + %1 Export failed + + + 导出成功 + Export succeeded + + + 设备名 + Device Name + + + 创建时间 + Creation Time + + + 文件名 + File Name + + + + CFindReplace + + 已替换:%1个 + Replaced: %1 + + + + CFlowLine + + 潮流颜色 + Flow color + + + 潮流长度 + Flow lenth + + + + CGTableWidget + + 导出xlsx文件为 + Export xlsx file to + + + + CGlobalConfigDialog + + 全局变量 + Global Parameter + + + + + + + + + - + - + + + 确定 + Confirm + + + 取消 + Cancel + + + 描述 + Description + + + 名称 + Name + + + 类型 + Type + + + 值 + Value + + + 提示 + Prompt + + + 保存失败! + Failed to save! + + + 数值型 + Number + + + 布尔型 + Bool + + + 字符串 + String + + + + CGraphApp + + 提示 + Prompt + + + 系统未启动! + System not started! + + + 加密狗检测异常! + WatchDog running abnormal! + + + 加密狗运行异常! + WatchDog running abnormal! + + + + CGraphDataAcess + + 用户不具有指定权限 + The user does not have the specified permissions + + + 无用户登录信息 + No user login information + + + 输入名称不存在 + The input name does not exist + + + 输入名称不唯一 + The input name is not unique + + + 不允许在该节点登录 + Logon on this node is not allowed + + + 用户口令错误 + Password error + + + 密码错误 + Password error + + + 用户已失效 + User deactivated + + + 用户已锁定 + User locked + + + 用户不属于所选用户组 + The user does not belong to the selected user group + + + 未知错误,系统可能未正常启动 + Unknown error, the system may not have started properly + + + 未知错误 + Unknown error + + + 内存出错 + Memory error + + + + CGraphFileTree + + 搜索... + Search... + + + 刷新 + 刷新 + + + + CGraphView + + 标题 + Title + + + 图幅 + Sheet + + + 背景色 + Background Color + + + 背景图片 + Background Image + + + 是否缩放 + Whether to Zoom + + + 是否拓扑 + Whether Topology + + + 自适应显示 + Adaptive display + + + 窗口标识 + Window Identifier + + + 发布类型 + Publish Type + + + 图层显示 + Layer Display + + + 窗口关闭按钮 + Window Close Button + + + 专业.位置 + Subsystem.Station + + + 模态 + Modal + + + 平面显示 + Graphic Display + + + 是否带电:%1 + Charged:%1 + + + 设备名:%1 +所属站:%2 +值:%3 +状态:%4 +%5 + Device Name:%1 Location:%2 Value:%3 State:%4 %5 + + + 设备名:%1 +所属站:%2 +值:%3 +状态:%4 + Device Name:%1 Location:%2 Value:%3 State:%4 + + + + CGridShape + + 网格线颜色 + Gridline color + + + 网格填充颜色 + Grid color + + + 交替填充颜色 + Alternate color + + + + CGroupManageDialog + + + 轮询组配置 + Polling Group + + + + + 新增 + Add + + + + + 删除 + Delete + + + + 保存 + Save + + + + 轮询组 + Group + + + + 提示 + Prompt + + + + 轮询组不能为空! + Polling group cannot be empty! + + + + 轮询组不能重复! + Polling group cannot repeat! + + + + 轮询组不能有特殊符号! + Polling group invalid! + + + + CHangPanelWidget + + + 位置 + Location + + + + 设备名称 + Device Name + + + + 专业 + Subsystem + + + + 操作主机 + Hostname + + + + 操作人 + Operator + + + + 刷新 + Refresh + + + + + + 未知 + Unknown + + + + CHangPanelWidget + CHangPanelWidget + + + + 位置: + Location: + + + + 专业: + Subsystem: + + + + 设备组 + Device Group + + + + 挂牌类型 + Type + + + + 挂牌时间 + Time + + + + 操作人组 + Operator Group + + + + 备注信息 + Remark + + + + 标签名 + Tag Name + + + + 总数 + Total + + + + 取消挂牌 + Cancel + + + + 无取消挂牌操作权限! + Have no perm to operate! + + + + 初始化权限失败! + Failure to initialize perm! + + + + 提示 + Prompt + + + + 请选择一项挂牌信息! + Please select a record! + + + + + 获取标签挂牌信息有误,%1 + Failure to read token info,%1 + + + + 下发取消挂牌命令失败 + Failure to send cancel command + + + + CHangPanelWork + + + 读取标签信息表失败 + Failure to read tag info + + + + CHisEventManage + + + + + + 未查询到该设备相关事件! + No event related to this device was found! + + + + CHistoryActionModel + + + + 动作 + Action + + + 车站 + Location + + + + + 描述 + Description + + + + + 执行结果 + Executing results + + + + + 位置 + Location + + + + CHistoryLinkFilterDialog + + + 过滤 + Filter + + + + 位置 + Location + + + + 用户 + User + + + + 结果 + Result + + + + 类型 + Type + + + + 时间 + Time + + + + 起始时间: + Start Time: + + + + 结束时间: + End Time: + + + + 执行成功 + execution success + + + + 执行失败 + execution failure + + + + 执行终止 + execution termination + + + + 执行跳过 + execution skip + + + + 标准联动 + Standard Linkage + + + + 自定义联动 + Custom Linkage + + + + CHistoryLinkModel + + + 名称 + Name + + + 车站 + Location + + + + 时间 + Time + + + + 用户 + User + + + + 类型 + Type + + + + 执行结果 + Executing results + + + + 位置 + Location + + + + CHistorySequenceFilterDialog + + + 过滤 + Filter + + + + 位置 + 车站 + Location + + + + 用户 + User + + + + 结果 + Result + + + + 类型 + Type + + + + 标准顺控 + Standard sequence + + + + 自定义顺控 + Custom sequence control + + + + 时间 + Time + + + + 起始时间: + Start Time: + + + + 结束时间: + End Time: + + + + 执行成功 + execution success + + + + 执行失败 + execution failure + + + + 执行终止 + execution termination + + + + 执行跳过 + execution skip + + + + CHistorySequenceModel + + + 名称 + Name + + + 车站 + Location + + + + 时间 + Time + + + + 用户 + User + + + + 类型 + Type + + + + 执行结果 + Executing results + + + + 位置 + Location + + + + 标准顺控 + Standard sequence control + + + + 自定义顺控 + Custom sequence + + + + CHmiConfig + + 屏幕首页面 + Home Screen + + + 屏幕号 + Screen Number + + + 提示 + Prompt + + + 保存失败! + Failed to save! + + + 描述 + Description + + + 名称 + Name + + + 类型 + Type + + + 值 + Value + + + 数值型 + Number + + + 布尔型 + Bool + + + 字符串 + String + + + + CIconActDialog + + + + 图元动作 + Graphic Element Action + + + + 添加 + Add + + + + + + + + + + + 删除 + Delete + + + + - + - + + + + 确认 + Confirm + + + + 取消 + Cancel + + + + 选择文件 + Select File + + + + + 提示 + Hint + + + + + 保存失败! + Save Failed! + + + + 左键单击 + Left-click + + + + 左键双击 + Double-click with the left mouse button + + + + 禁止 + Prohibit + + + + 允许 + Allow + + + + CInputDialog + + + 批量操作 + Batch Operation + + + + 设置值: + Setting value: + + + + 设置值 + Setting value + + + + 确定 + confirm + + + + 取消 + cancel + + + + CLayerDlg + + 图层工具 + Layer Tool + + + + CLimitOptWidget + + + 确认 + Confirm + + + + 关闭 + Close + + + + + 未知 + Unknown + + + + 否 + No + + + + 是 + Yes + + + + CLimitOptWidget + CLimitOptWidget + + + + + + + + + + 提示 + Prompt + + + + %1[%2-%3], 无标签操作权限! + %1[%2-%3], not perm! + + + + 设置成功 + Setting successful + + + + 设备属性 + Name + + + + 是否越限 + Limit + + + 越限级别数量 + Limit Number + + + + 越限级别 + Exceedance Level + + + + 越上限 + Upper Limit + + + + 越下限 + Lower Limit + + + + 越上上限 + Upper Limit 2 + + + + 越下下限 + Lower Limit 2 + + + + 越三级上限 + Upper Limit 3 + + + + 越三级下限 + Lower Limit 3 + + + + 越上限应大于越下限! + The upper limit must more than the lower limit! + + + + 越上上限应大于越下下限! + The upper limit 2 must more than the lower limit 2! + + + + 越下下限应小于越下限! + The lower limit 2 must less than the lower limit! + + + + 越上上限应大于越上限! + The upper limit 2 must more than the upper limit! + + + + 无越限 + No Exceedance + + + + 一级越限 + First-Level Exceedance + + + + 二级越限 + Second-Level Exceedance + + + + CLimitOptWork + + + 系统初始化失败! + Failure to initialize system! + + + + 更改是否越限失败! + Failure to set isLimit! + + + + 更改越限信息失败! + Failure to change limit info! + + + + 越限设置 + Set limit + + + + 取消越限设置 + Cancel limit + + + + 操作员: + Operator: + + + + 操作主机: + Hostname: + + + + CLineEditWithBt + + + + 选择文件 + Select File + + + + CLineEditWithBtn + + + 选择文件 + Select file + + + + CLineStatusShow + + Line B + Line B + + + Dot No. + Dot No. + + + Absolute Timestamp + Absolute Timestamp + + + Relative Time Difference + Relative Time Difference + + + Line C + Line C + + + Dot Difference + Dot Difference + + + Time Difference + Time Difference + + + + CLinkCtrlTableModel + + + 联动名称 + Linkage Name + + + + 联动类型 + Linkage Type + + + + 联动状态 + Linkage State + + + + 执行方式 + Executive Mode + + + + 触发时间 + Trigger Time + + + 车站火灾 + Location fire + + + 区间阻塞 + Interval blocking + + + 日常运营 + Daily operations + + + 自定义1 + Custom 1 + + + 自定义2 + Custom 2 + + + + 未执行 + non execution + + + + 正在执行 + executing + + + + 已触发 + triggered + + + + 执行失败 + execution failure + + + + 执行成功 + execution success + + + + 执行终止 + execution termination + + + + 执行暂停 + execution pause + + + + 执行跳过 + execution skip + + + + 过期配置 + Expired Configuration + + + + 全自动 + Automatic + + + + 半自动 + Simi-automatic + + + + 手动 + Manual + + + + 请点击“所有联动”按钮刷新配置 + Please click the "All Linkages" button to refresh the configuration + + + + CLinkCtrlTreeModel + + + 内容 + Content + + + + 选择 + Select + + + + 执行方式 + Executive Mode + + + + 延迟时间 + Delay Time + + + + 失败处理 + Failure handling + + + + 执行状态 + Executive state + + + + 串行 + Serial + + + + 并行 + Parallel + + + + 秒 + second + + + + 自动跳过 + Automatic skip + + + + 人工干预 + Manual intervention + + + + 终止联动 + 自动终止 + Linkage termination + + + + 执行下个功能 + 自动重试 + Next Function + + + + 未执行 + non execution + + + + 正在执行 + executing + + + + 已触发 + triggered + + + + 执行失败 + execution failure + + + + 执行成功 + execution success + + + + 执行终止 + execution termination + + + + 执行暂停 + execution pause + + + + 执行跳过 + execution skip + + + + CLinkCtrlWidget + + + 联动 + Linkage + + + 联动分类 + Classification of Linkage + + + + 待执行联动 + Pending linkage + + + + 所有联动 + All linkage + + + + 联动类型 + Linkage Type + + + 车站火灾 + Location fire + + + 区间阻塞 + Interval blocking + + + 日常运营 + Daily operations + + + 自定义1 + Custom 1 + + + 自定义2 + Custom 2 + + + + 联动列表 + LinkageList + + + + 搜索 + Search + + + + 动作列表 + ActionList + + + + + 终止 + Terminate + + + + 执行 + Execute + + + + 单步 + Step + + + + + + + + + + 暂停 + Pause + + + + 导出 + Export + + + + 打印 + Print + + + + + + + 当前用户不具备联动操作权限! + The current user does not have linkage operation authority! + + + + + + + 错误 + Error + + + + + + + 当前未选中联动 + Not linkage selected currently + + + + + + 继续 + continue + + + + + 联动名称: + Linkage Name: + + + + 错误代码: + Error code: + + + + 错误描述: + Error description: + + + + 联动操作请求失败 + Linkage operation request failed + + + + 执行失败,请求人工干预! + Execution failed, manual intervention request! + + + + 功能名称: + Function name: + + + + 动作名称: + Action name: + + + + 人工干预请求 + Manual intervention request + + + + 重试 + Retry + + + + 跳过 + Skip + + + + Save File + Save File + + + + + 联动报告 + Linkage Report + + + + 历史列表 + HistoryList + + + + 执行详情 + Execute Detail + + + + 过滤 + Filter + + + + (*.pdf *) + (*.pdf *) + + + + CLinkLine + + 置换端 + Displacement end + + + + CLoadDefTblWidget + + 位置 + Location + + + 添加记录 + Translate the following string into English: "添加记录" + + + 删除记录 + Translate the following string into English: "删除记录" + + + 撤销更改 + Translate the following string into English: "撤销更改" + + + 保存 + Save + + + Excel导出 + Translate the following string into English: "Excel导出" + + + Excel导入 + Translate the following string into English: "Excel导入" + + + + CLocationSequModel + + + 标记 + Marker + + + + 场站 + Station + + + + 顺控名称 + Sequence name + + + + 执行状态 + Execution status + + + + 未执行 + Not executed + + + + 正在执行 + Executing + + + + 已触发 + triggered + + + + 执行失败 + execution failure + + + + 执行成功 + execution success + + + + 执行终止 + execution termination + + + + 执行暂停 + execution pause + + + + 执行跳过 + execution skip + + + + CLoginDlg + + 登录 + Login + + + 用户 + User + + + 用户组 + UserGroup + + + 密码 + Password + + + 取消 + Cancel + + + 警告 + Warning + + + 登录失败 + Login Failed + + + + CMainWidget + + + 告警统计 + Alarm Statistic + + + + 告警对比 + Alarm Compare + + + + CMainWindow + + + CMainWindow + CMainWindow + + + + 设备/点 + Device/Point + + + + 清除测点 + Clear Measurement Points + + + + 收藏夹 + Favorite + + + + CMediaAVWidget + + Form + Form + + + current time + current time + + + duration + duration + + + 多媒体 + Multimedia + + + + CMediaWidget + + CRobotLinkCtrlWidget + CRobotLinkCtrlWidget + + + 多媒体 + Multimedia + + + + CMsgDeal + + + + + + + + + + + + + + + + + 发送消息失败 + Failed to send message + + + + + + 创建系统信息访问库实例失败! + Failed to create an instance of the system information access library! + + + + 权限接口初始化失败! + Failed to initialize the permission interface! + + + + 总线订阅失败! + Failed to subscribe to the bus! + + + + + + 消息解析错误 + Error parsing message + + + + + + 未知的命令 + Unknown command + + + + + + 未接收到消息 + No message received + + + + CMyCalendar + + + + + + + Form + Form + + + + + + + + 至 + To + + + + + + + + 取消 + Cancel + + + 确认 + Confirm + + + + CNTPTimeWidget + + + CNTPTimeWidget + CNTPTimeWidget + + + + IP设置 + IP Settings + + + + + + + + 设置 + Settings + + + + 网卡 + Network Card + + + + IP地址 + IP Address + + + + 子网掩码 + Subnet Mask + + + + 网关 + Gateway + + + + 控制投退 + control throwback + + + + 是否启用 + whether to enable + + + + 启用 + Enable + + + + 禁用 + Disable + + + + 亮度调节 + Brightness adjustment + + + + 亮度设置 + Brightness setting + + + + 时间设置 + Time Settings + + + + 时间 + Time + + + + 日期 + Date + + + + hh:mm:ss + hh:mm:ss + + + + yyyy-MM-dd + yyyy-MM-dd + + + + NTP设置 + NTP Settings + + + + 是否开启NTP + Enable NTP + + + + 否 + No + + + + 是 + Yes + + + + NTP服务器 + NTP Server + + + + NTP设置失败:%1,主机名:%2 + NTP setting failed: %1, hostname: %2 + + + + NTP设置成功 + NTP setting succeeded + + + + 时间设置失败:%1,主机名:%2 + Time setting failed: %1, hostname: %2 + + + + 时间设置成功 + Time setting succeeded + + + + 设置时间失败,请先关闭NTP + Failed to set the time, please turn off NTP first + + + + IP设置失败:%1,主机名:%2 + IP setting failed: %1, hostname: %2 + + + + IP设置成功 + IP setting succeeded + + + + 亮度设置失败:%1,主机名:%2 + Failed to set brightness: %1, hostname: %2 + + + + 亮度设置成功 + Brightness setting successful + + + + CNavigationConfigDialog + + + + + + 打开 + Open + + + + + + + + + 新建项目_ + New Item + + + + CNavigationDialog + + + 导航栏配置工具 + Navigation Bar Configuration Tool + + + + MainWindow + MainWindow + + + + 添加节点 + Add Node + + + + + + + + + + + 添加子节点 + Add ChildNode + + + + ∟ + + + + + 删除节点 + Delete Node + + + + - + - + + + + 清空节点 + Clear Node + + + + × + Close (X) + + + + 上移节点 + Move Node Up + + + + ↑ + Up Arrow + + + + 下移节点 + Move Node Down + + + + ↓ + Down Arrow + + + + + 导入 + Import + + + + + 导出 + Export + + + + 确认 + Confirm + + + + 取消 + Cancel + + + + 属性 + Attribute + + + + + 是否使用 + Enable + + + + + 操作 + Operation + + + + + 图标 + Icon + + + + + 数据 + Data + + + + Web发布 + Web Publishing + + + + Web类型 + Web Type + + + + + 网址 + Website URL + + + + 是 + Yes + + + + + 否 + No + + + + 切换画面 + Switch Screen + + + + 切换导航 + Switch navigation + + + + 调用程序 + call program + + + + 加载网页 + Load Webpage + + + + + 自定义项目 + Custom Item + + + + 新建项目_ + New Project + + + + 最大支持四层结构: %1-%2-%3-%4 + Maximum of four levels of structure supported: %1-%2-%3-%4 + + + + 全部展开 + ExpandAll + + + + 全部收缩 + CollapseAll + + + + + + + + + + + 提示 + Hint + + + + 保存失败! + Save Failed! + + + + 页面 + Page + + + + 一级 + First Level + + + + 二级 + Second Level + + + + 三级 + Third Level + + + + web发布 + Web deployment + + + + web类型 + Web type + + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + + 导出失败 + Export Failed + + + + + + 行: %1, [%2] 不符合规范! + Line: %1, [%2] does not comply with the standard! + + + + CNavigationWidget + + + 导入 + Import + + + + 导出 + Export + + + 当前节点名称 + Node Name + + + 画面文件 + Data File + + + 图标文件 + Icon File + + + 上级节点名称 + Second Node + + + 上上级节点名称 + First Node + + + + 是 + Yes + + + + 否 + No + + + + + 提示 + Prompt + + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + + 保存失败 + Failure to save + + + + 切换画面 + switch graph + + + + 调用程序 + call program + + + + 一级 + First Level + + + + 二级 + Second Level + + + + 三级 + Third Level + + + + 是否使用 + Enable + + + + 操作 + Operate + + + + 图标 + Icon + + + + 数据 + Data + + + + web发布 + web publish + + + + 属性配置 + Attribute Configuration + + + + 全部展开 + ExpandAll + + + + 全部收缩 + CollapseAll + + + + COperationOrderForm + + 典型票库 + Library + + + 操作开始时间 + Start Time + + + 操作结束时间 + End Time + + + 操作票号: + Operation Banks: + + + + 操作任务 + Operation tasks + + + 备注: + Remark: + + + + 操作人 + Operator + + + + 监护人 + Guardian + + + + 值班负责人 + Principal + + + + 增加 + Add + + + + 删除 + Delete + + + + 上移 + Up + + + + 下移 + Down + + + 保存 + Save + + + 打印 + Print + + + + 预览 + Preview + + + + + + + + + + + + + + + + + + + + + + + + + + + + 提示 + Prompt + + + + 打开历史表失败! + Failed to open history table! + + + + + + + + + + + 保存失败! + Save failed! + + + 操作票号:kbdct_ + Operation Banks:kbdct_ + + + 操作开始时间: + Start Time: + + + 操作结束时间: + End Time: + + + + 备注:<br> + Remark:<br> + + + + 操作人: + Operator: + + + + 监护人: + Guardian: + + + + 值班负责人: + Principal: + + + + 步骤 + Steps + + + + + 备注 + Remark + + + + 行:%1 保存失败! + Row:%1 save failed! + + + + 保存成功! + Save successed! + + + + 典型票名为空! + Typical ticket name is null! + + + + 操作票号为空! + Operation Banks is null! + + + + 操作人为空! + Operator is null! + + + + 监护人为空! + Guardian is null! + + + + 值班负责人为空! + Principal is null! + + + + 行:%1 顺序为空! + Row : %1 number is null! + + + + 行:%1 与行:%2 顺序重复! + Row : %1 and Row : %2 have the same number! + + + 行:%1 操作任务为空! + Row : %1 operation tasks is null! + + + + 典型票名已存在! + Typical ticket name already exist! + + + + 典型票名: '%1' 保存失败! + Typical ticket name: '%1' save failed! + + + 是否保存更改? + Save the change ? + + + + 打印成功! + Print successfully! + + + + 打印失败! + Print failed! + + + + 保存模板 + Save + + + + 开票打印 + Print + + + + 电子签章 + Electronic signature + + + + + yyyy/MM/dd HH:mm:ss + yyyy/MM/dd HH:mm:ss + + + + 结束时间 + End Time + + + + 操作票号 + Operation Banks + + + + 开始时间 + Begin Time + + + + 签章 + Signature + + + + 操作内容 + Operation Content + + + + key_id_tag + key_id_tag + + + + ctrl_value + ctrl_value + + + + 行:%1 操作内容为空! + Row:%1 Operate content is empty! + + + + 已经存在“%1”,是否覆盖? + “%1” is already exist,replace? + + + + 操作票号: + Operation Banks: + + + + 操作开始时间: + Operation begin time: + + + + 操作结束时间: + Operation end time: + + + + 操作任务: + Operation task: + + + + 当前登录用户无运维管理功能权限! + Current user have no perm to operate! + + + + COperationOrderModelForm + + + 提示 + Prompt + + + + 是否保存模板更改? + Save the template change? + + + + COrderManageWidget + + + 典型票管理 + Typical ticket management + + + + 刷新 + Refresh + + + + + 删除 + Delete + + + + 编辑 + Edit + + + 典型票库 + Typical ticket library + + + + 序号 + number + + + + 操作序列简述 + Description of operation sequence + + + 删除 (%1) + Delete(%1) + + + + + 请选中一条记录! + Please select a record! + + + + + + + + 提示 + Prompt + + + + 是否删除 %1 ? + Delete %1 ? + + + + 删除失败! + Delete failed! + + + + 自动开票 + Automatic Ticket + + + + 当前登录用户无运维管理功能权限! + Current user have no perm to operate! + + + + CPenDialog + + Pen + Pen + + + 线宽: + Line Width: + + + 线型: + Line Style: + + + 预览 + Preview + + + NoPen + NoPen + + + SolidLine + SolidLine + + + DashLine + DashLine + + + DotLine + DotLine + + + DashDotLine + DashDotLine + + + DashDotDotLine + DashDotDotLine + + + + CPixmapShape + + 错误 + error + + + 不支持的格式 + Unsupported format + + + + CPlanCurvesConfigure + + 类型配置 + Type Config + + + 年时段配置 + Year Interval Config + + + 周时段配置 + Week Interval Config + + + 日时段模板配置 + Day Interval Temp Config + + + 计划曲线配置 + PlanCurve Config + + + 新建类型 + New Type + + + 保存 + Save + + + 计划类型 + Plan Type + + + 删除 + Delete + + + 新建模板类型 + New Temp Type + + + 日时段模板类型 + Day Interval Temp Type + + + 新建年时段配置 + New Year Interval + + + 新建周时段配置 + New Week Interval + + + 新建日时段配置 + New Day Interval + + + 日模板类型 + Day Temp Type + + + 新建计划曲线 + New PlanCurve + + + 关联标签 + Related Tag + + + 计划曲线名称 + Name + + + 类型ID + Type ID + + + 所属位置 + Location + + + 所属专业 + Subsystem + + + 时段曲线配置 + Interval Curve Config + + + 导入模板 + Import Temp + + + 新建 + New + + + 预览 + Preview + + + 否 + No + + + 是 + Yes + + + 星期日 + Sunday + + + 星期一 + Monday + + + 星期二 + Tuesday + + + 星期三 + Wednesday + + + 星期四 + Thursday + + + 星期五 + Friday + + + 星期六 + Saturday + + + 类型名称 + Name + + + 年时段名称 + Name + + + 是否例外 + isException + + + 开始月 + Start Month + + + 开始日 + Start Day + + + 结束月 + End Month + + + 结束日 + End Day + + + 周时段名称 + Name + + + 星期 + Week + + + 年时段 + Year Interval + + + 周时段 + Week Interval + + + 日时段名称 + Name + + + 开始时间 + Start Time + + + 结束时间 + End Time + + + 值 + Value + + + 提示 + Prompt + + + 保存成功! + Save Successfully! + + + 保存失败! + Save failed! + + + 行: %1 结束时间不能小于开始时间! + Row:%1 End time cannot less than start time! + + + 行: %1 与行:%2 时间段不连续! + Row: %1 is not discontinuous with Row: %2! + + + 周时段配置需覆盖一整周 + Week interval configuration needs to cover the entire week + + + %1 : 开始月不能大于结束月! + %1 : Begin month cannot be bigger than the end month! + + + %1 : 开始日不能大于结束日! + %1 : Begin day cannot be bigger than the end day! + + + 年配置需要覆盖全年! + Year interval configuration need to cover the whole year! + + + 请从1月1日开始配置! + Please start configuration from January 1st! + + + 请配置到12月31日! + Please configure until December 31! + + + 模拟量出口 + Analog output + + + 是否删除曲线'%1'? + Delete curve '%1' ? + + + 删除成功! + Delete successfully! + + + 删除失败! + Delete failed! + + + 计划类型为空,请检查类型配置! + The plan type is empty,please check type config! + + + 周时段配置被使用,无法保存! + Week interval configuration is in use, cannot be saved! + + + 日模板类型为空,请检查类型配置! + The day temp type is empty,please check type config! + + + 未找到年描述 + No year description found + + + 未找到周描述 + No week description found + + + 导入失败 + Import failed + + + 导入成功 + Import successfully + + + + CPlotWidget + + + + Form + Form + + + + + 对比 + Contrast + + + + + 告警描点 + Alarm Plot + + + + + 收藏 + Collect + + + + + 导出 + Export + + + + 打印 + Print + + + 运行趋势分析 + Run Trend Analysis + + + + 保存图片 + Save Image + + + + + 日 + Day + + + + + 实时 + Real + + + + + 周 + Week + + + + + 月 + Month + + + + + 季 + Quarter + + + + + 年 + Year + + + + + 秒 + Second + + + + + 自定义 + Custom + + + + + 昨日曲线 + Yesterday's Curve + + + + + + + + + + + 趋势图 + Trend Graph + + + + + 清空 + Clear + + + + + 开始时间 + Start Time + + + + + 结束时间 + End Time + + + + + + + 查询 + Search + + + + + 上一页 + Preview + + + + + 下一页 + Next + + + + + 一小时 + One Hour + + + + + 八小时 + Eight Hour + + + + + 一天 + One Day + + + + + 曲线 + Curve + + + + + 表格 + Table + + + + + 错误 + Error + + + + 当前趋势曲线已达最大支持数量[64]! + The current trend curve has reached the maximum number of supports [64]! + + + + + 实时趋势 + Realtime + + + + + 秒趋势 + Second + + + + + 日趋势 + Day + + + + + 周趋势 + Week + + + + + 月趋势 + Month + + + + + 季度趋势 + Quarter + + + + + 年趋势 + Year + + + + + 自定义趋势 + Custom + + + + + + + 保存为 + Save as + + + + + + + + + + + + + + + 提示 + Prompt + + + + + 保存成功 + Save successed + + + + + + + 保存失败 + Failure to save + + + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + + + + + + + 请选择告警状态 + Select Alarm State + + + + + 查询中 + Searching + + + + + 查询开始时间不能大于结束时间! + The start time cannot more than the end time! + + + + + 开始时间和结束时间之差不能小于查询时间间隔! + The difference between the start time and the end time cannot less than the time interval! + + + 一秒种 + One Second + + + 一分种 + One Minute + + + 十分种 + Ten Minute + + + + + + + + + yyyy/MM/dd HH:mm + yyyy/MM/dd HH:mm + + + + + 一秒钟 + One Second + + + + + 一分钟 + One Minute + + + + + 十分钟 + Ten Minute + + + + + 双击输入值 + Input on double click + + + + 当前趋势曲线已达最大支持数量[%1]! + The current trend curve has reached the maximum supported quantity of [%1]! + + + + + + + 昨日曲线- + Yesterday's Curve - + + + + + (*.jpg) + (*.jpg) + + + + + (*.xlsx) + (*.xlsx) + + + + CPointLockWidget + + + 添加 + Add + + + + 删除 + Delete + + + + 确认 + Confirm + + + + 闭锁配置 + Interlock Configuration + + + + 1-1AH5-断路器 + 1-1AH5 + + + + 控制状态 + Control Status + + + + 启用 + Enable + + + + 取消 + Cancel + + + + + 条件 + Condition + + + + + 无 + None + + + + + 小于 + < + + + + + 小于等于 + <= + + + + + 等于 + == + + + + + 大于等于 + >= + + + + + 大于 + > + + + + + 不等于 + != + + + + 且 + and + + + + 设备列表 + Device List + + + + 状态值 + Status Value + + + + + + + 提示 + Prompt + + + + 请选中需要删除的行 + Please select a row + + + + 请选择测点标签 + Please add a point + + + + + 添加失败 + Failure to add + + + + CPointRealDataWidget + + + 通讯状态 + Communication status + + + + 正常 + Normal + + + + 异常 + Abnormal + + + + + + 未找到组号%1! + Not found group %1! + + + + CPreviewForm + + 新建项目 + New Item + + + + CPrintPreview + + Print Preview + Print Preview + + + Print... + Print... + + + Next + Next + + + Prev + Prev + + + Single/Dual + Single/Dual + + + Zoom In + Zoom In + + + Zoom Out + Zoom Out + + + Close + Close + + + + CProcessBarDialog + + Dialog + Dialog + + + 取消 + Cancel + + + + CProcessDialog + + + Form + Form + + + + 取消 + Cancel + + + + CProcessManage + + + + 最大值 + Maximum + + + + + 最小值 + Minimum + + + + + 平均值 + Average Value + + + + CPropertyDialog + + + Dialog + Dialog + + + + 备注 + Remark + + + + 设备名称 + Device Name + + + + 确认 + Confirm + + + + 添加 + Add + + + + 编辑 + Edit + + + + 安装日期 + Installation Date + + + + 型号 + Type + + + + 参数 + Parameter + + + + 维护周期 + Maintenance Period + + + + yyyy-MM-dd + yyyy-MM-dd + + + + 厂家联系方式 + Manufacturer Contact + + + + 所属设备组 + Device Group + + + + 状态 + State + + + + 取消 + Cancel + + + + 已启用 + Enable + + + + 一个月 + One Month + + + + 三个月 + Three Months + + + + 半年 + Six Months + + + + 一年 + One Year + + + + 提示 + Prompt + + + + 设备名称不能为空! + Device name cannot be empty! + + + + 操作失败,请重新操作! + Failed,please try again! + + + + CRealTableModel + + + 测点 + Measuring Point + + + + 点类型 + Point Type + + + + 设备 + Device + + + + 值 + Value + + + + 状态 + Status + + + + CRecordDialog + + + Dialog + Dialog + + + + 导出 + Export + + + + 删除 + Delete + + + + 添加 + Add + + + + 时间 + Time + + + + 关键字 + Keywords + + + + 查询 + Search + + + + 当前未选中任何项! + No item is currently selected! + + + + Save File + Save File + + + + ~ + ~ + + + + + 对开始时间和结束时间日期生效 + Effective for start time and end time + + + + 对设备名称、记录名称、操作人和维护内容生效 + Effective for device name、record name、operator and maintenance content + + + + %1 维护记录 + %1 maintenance records + + + + + 提示 + Prompt + + + + 删除失败! + Failure to delete! + + + + 删除成功! + Successful delete! + + + + 开始时间不能大于结束时间! + The start time cannot more than end time! + + + + CRecordForm + + + Form + Form + + + + 序号 + Number + + + + 操作人 + Operator + + + + 监护人 + Guardian + + + + 值班负责人 + Principal + + + + 描述 + Description + + + + 备注 + Remark + + + + 刷新 + Refresh + + + + 未执行 + Non execution + + + + 未确认 + Unconfirmed + + + + 检索条件 + Filter + + + + 按值班负责人 + Principal + + + + 按票名包含 + Ticket name + + + + 按操作人 + Operator + + + + 按操作票号 + Operation Banks + + + + 按执行时间 + Execution time + + + + 按完成时间 + Finish time + + + + 按监护人 + Guardian + + + + 操作票号 + Operation Banks + + + + 操作票名 + Ticket name + + + + 开始时间 + Start time + + + + 结束时间 + End time + + + + 执行状态 + Execution status + + + + 详细 + Detail + + + + 已执行 + Executed + + + + 提示 + Prompt + + + + 请选择一项! + Please select one item! + + + + CRecordPropertyDialog + + + Dialog + Dialog + + + + 确认 + Confirm + + + + 添加 + Add + + + + 编辑 + Edit + + + + 维护名称 + Maintenance name + + + + 维护人 + Maintainer + + + + 维护开始时间 + Maintenance start time + + + + + yyyy-MM-dd + yyyy-MM-dd + + + + 维护结束时间 + Maintenance end time + + + + 维护内容 + Maintenance content + + + + 取消 + Cancel + + + + 提示 + Prompt + + + + 记录名称不能为空! + The record name cannot be empty! + + + + 开始时间不能大于结束时间! + The start time cannot more than the end time! + + + + 操作失败,请重新操作! + Failed,please try again! + + + + CRecordTablModel + + + 设备名称 + Device Name + + + + 操作人 + Operator + + + + 记录名称 + Record name + + + + 开始时间 + Start time + + + + 结束时间 + End time + + + + 维护内容 + Maintenance content + + + + CRecordWidget + + + 保存 + Save + + + + 处理问题 + Handling problem + + + + 上班遗留问题 + Last leftover problem + + + + 当班处理问题 + Handling problem on duty + + + + 当班遗留问题 + Leftover problem on duty + + + + 关键信息备注 + Key information notes + + + + CRelaySettingWidget + + + 序号 + Number + + + + 确认 + Confirm + + + + 清空 + Clear + + + + 保护定值管理 + Relay settting management + + + + 切换 + Switch + + + + 当前执行组: + Current group: + + + + 前置设备 + Front equipment + + + + 定值名称 + Name + + + + 定值组号 + Group No + + + + 当前值 + Current Value + + + + 预置值 + Preset Value + + + + 返校值 + Return Value + + + + 范围 + Range + + + + 单位 + Unit + + + + 定值代号 + Code No + + + + isError + isError + + + + 读取 + Read + + + + 修改 + Modify + + + + + + + + + + + + + + + + + + 提示 + Prompt + + + + 未知值:%1 + Unknown Value:%1 + + + + 无保护定值操作权限! + Not relay setting operate perm! + + + + 行:%1,当前值无效,请先读取! + Row:%1,current value is invalid,please read first! + + + + 行:%1,预置值无效,请先读取! + Row:%1,preset value is invalid,please read first! + + + + 行:%1,预置值不在设定范围! + Row:%1,preset value is beyond the range! + + + + 行:%1,返校值无效! + Row:%1,return value is invalid! + + + + 行:%1,预置值与返校值不一致! + Row:%1,preset value is inconsistent with return value! + + + + 请先查询当前执行组! + Please read current group first! + + + + 设置的组号应不为当前执行组! + Setting group no cannot equal to current group no! + + + + 验证 + Verification + + + + 权限验证 + Permissions validation + + + + 请选择切换组! + Please select one group! + + + + 未选择设备! + Not device selected! + + + + 无定值组配置! + Not setting group configuration! + + + + 接收超时! + Receive timeout! + + + + 发送命令失败! + Failure to send command! + + + + CReportFavTreeWidget + + + 收藏夹 + Favorite + + + + 报表管理 + Report Management + + + + 请输入收藏报表名称 + Please enter the favorite report name + + + + + 报表名不能为空! + The report name cannot be empty! + + + + 当前收藏报表名称已存在! + The current favorite report name already exists! + + + + 重命名 + Rename + + + + 删除 + Delete + + + + 当前报表名称已存在! + The current report name already exists! + + + + 选择报表收藏文件 + Select report favorite file + + + + 保存报表收藏文件 + Save report favorite file + + + + 收藏报表_ + Save report_ + + + + CReportStackedWidget + + + 返回 + Return + + + + CReportWidget + + + 导出报表 + Export the report + + + + CRetriever + + 检索器 + Retriever + + + 专业: + Subsystem: + + + 位置: + Location: + + + 设备类型: + Device Type: + + + 设备组: + Device Group: + + + 表名: + Table Name: + + + 统计量模板: + Statistical template: + + + 表检索 + Table + + + 检索方式: + Retriever Mode: + + + 设备检索 + Device + + + 统计量 + Statistical + + + 多点关联 + Multipoint + + + 设备组检索 + Device Group Retrieval + + + 点类型: + Point Type: + + + 值: + Value: + + + 点名: + Point Name: + + + 列名: + Column Name: + + + 数字量 + Digital + + + 模拟量 + Analog + + + 混合量 + Mix + + + 累积量 + Accuml + + + 常量 + Const + + + 通用 + General + + + 其他 + Other + + + 关键字 + Keywords + + + 值 + Value + + + 状态 + State + + + 时间 + Time + + + + CRobotAVWidget + + Form + Form + + + current time + current time + + + duration + duration + + + + CRobotCCDVideoForm + + Form + Form + + + 请输入关键字 + Please input keyword + + + + CRobotCCDVideoItemModel + + 时间 + Time + + + 类型 + Type + + + 设备柜 + Device + + + 照片 + Picture + + + 截图 + Screenshot + + + 录像 + Video + + + + CRobotCtrlWidget + + Form + Form + + + 请选择设备 + Please select a device + + + 执行任务 + Execute Task + + + 空闲中 + Idle + + + 巡检中 + Patrolling + + + 充电中 + Charging + + + 检修中 + Under Maintenance + + + 告警联动: + Alarm Linkage: + + + 机器人状态 + Robot Status + + + 执行任务超时! + Task Execution Timeout! + + + 未找到控制点[%s] + Control Point [%s] Not Found + + + 解析返回结果出错 + Error Parsing Return Result + + + + CRobotDialog + + Dialog + Dialog + + + 机器人联动 + Robot Interlocking + + + + CRobotWidget + + CRobotLinkCtrlWidget + CRobotLinkCtrlWidget + + + + CRollSwitchWidget + + + 播放组 + Group + + + + 画面文件名称 + Graph Name + + + + 画面轮询间隔(s) + Interval + + + + 自动轮询(设定的时间内,未检测到键鼠操作,自动轮询播放画面) + Auto-polling (If no keyboard or mouse operation is detected within the set time, auto-polling will play the screen) + + + 自动轮询 + Autopolling + + + + 开始 + Start + + + + 停止 + Stop + + + + 关闭 + Close + + + 自动轮询时间(s) + Autopolling Delay(s) + + + 自动轮询(设定的时间内,未检测到鼠标移动,自动轮询播放画面) + Autopolling(Auto switching graph when not mouse move in setting time) + + + + 轮询时间(s) + Autopolling time(s) + + + + CRunSequenceFilterDialog + + + 过滤 + Filter + + + + 关键字 + Keywords + + + + 顺控名称: + Sequence name: + + + + 类型 + Type + + + + 标准顺控 + Standard sequence + + + + 自定义顺控 + Custom sequence + + + + 位置 + 车站 + Location + + + + 位置名称: + 车站名称: + Location name: + + + + CRunningSequenceModel + + + 名称 + Name + + + 车站 + Location + + + + 类型 + Type + + + + 执行结果 + Executing results + + + + 位置 + Location + + + + 标准顺控 + Standard sequence + + + + 自定义顺控 + Custom sequence + + + + 未执行 + non-execution + + + + 正在执行 + executing + + + + 已触发 + triggered + + + + 执行失败 + execution failure + + + + 执行成功 + execution success + + + + 执行终止 + execution termination + + + + 执行暂停 + execution pause + + + + 执行跳过 + execution skip + + + + CScreenShot + + 保存图像 + Save Image + + + 图形文件 (*.png) + Graphics file(*.png) + + + + CSecondButtonGroupWidget + + + 配置错误! + Configuration Error! + + + + CSecondNavigationWidget + + + 是 + Yes + + + + 否 + No + + + + 切换画面 + Switch Screen + + + + 调用程序 + call program + + + + 导入 + Import + + + + 导出 + Export + + + + 一级 + First Level + + + + 二级 + Second Level + + + + 三级 + Third Level + + + + 是否使用 + Enable + + + + 操作 + Operation + + + + 图标 + Icon + + + + 数据 + Data + + + + web发布 + + + + + + 提示 + Hint + + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + + 保存失败 + Save Failed + + + + 属性配置 + Property Configuration + + + + 全部展开 + ExpandAll + + + + 全部收缩 + CollapseAll + + + + CSecondReportWidget + + + 结束时间晚于开始时间,请调整时间之后再查询! + The end time is later than the start time, please adjust the time and then search again! + + + + 未选择测点,请选择测点之后再查询报表! + No measuring point selected, please select a measuring point and then search for the report! + + + + 暂不支持10000条以上数据的查询,请调整查询时间或时间间隔之后再查询! + Querying more than 10,000 data entries is not supported at the moment. Please adjust the query time or time interval and try again! + + + + 开始时间 + Start Time + + + + 查询时间 + Search time + + + + 当前登录用户无运维管理功能权限! + The current logged-in user does not have permission for operational management functions! + + + + 导出表头失败: +无法打开文件! + Failed to export header: +Unable to open the file! + + + + 导出表头至: + + Export header to: + + + + + + 当前登录用户无运维管理功能权限! + Current user have no perm to operate! + + + + + 报表管理 + Report Management + + + + 导入表头失败: +导入格式错误,仅支持csv文件! + Failed to import header: +Incorrect import format, only CSV files are supported! + + + + 导入表头失败: +无法打开导入的文件! + Failed to import header: +Unable to open the file for import! + + + + 导入表头失败: +表头长度与现有表头长度不一致! + Failed to import header: +The length of the header does not match the existing header length! + + + + 导入表头成功! + Header imported successfully! + + + + 报表数据为空,请先查询报表数据! + The report data is empty, please query the report data first! + + + + 导出报表失败: +无法打开文件! + Failed to export report: +Unable to open the file! + + + + 导出表格成功! + Table exported successfully! + + + + 查询终止! + Query terminated! + + + + 该时间段无数据! + No data available for the specified period! + + + + 生成报表失败! + Failed to generate report! + + + + 时间 + Time + + + + CSecondReportWidgetClass + + + test + Test + + + + 日报表 + Daily Report + + + + 月报表 + Monthly Report + + + + 年报表 + Annual Report + + + + 自定义 + Custom + + + + 是否统计 + Statistics + + + + 查询 + Search + + + + 收藏 + Favorite + + + + 导出表头 + Export Header + + + + 导入表头 + Import Header + + + + 导出表格 + Export Table + + + + 开始时间 + Start Time + + + + + 年 + Year + + + + + 月 + Month + + + + + 日 + Day + + + + + 时 + Hour + + + + + 分 + Minute + + + + 结束时间 + End Time + + + + 时间间隔 + Time Interval + + + + 1年 + 1年 + + + + 1个月 + 1 Month + + + + 1天 + 1天 + + + + 1小时 + 1 Hour + + + + 30分钟 + 30 Minutes + + + + 15分钟 + 15 Minutes + + + + 全部 + All + + + + CSeqPermDialog + + + + 验证 + Verification + + + + 操作验证 + Operation validation + + + + + 用户组 + User group + + + + + 姓名 + User name + + + + + 密码 + Password + + + + + 账号 + User alias + + + + 监护验证 + Guardian validation + + + + 取消 + Cancel + + + + 监护验证: + Guardian validation: + + + + 操作验证: + Operation validation: + + + + + %1输入名称不存在! + The input name %1 does not exist! + + + + %1无遥控监护权限! + %1 have no perm guard! + + + + %1无顺控执行权限! + %1 have no perm to execute sequence! + + + + %1不允许在该节点登录! + %1 Logon on this node is not allowed! + + + + %1用户口令错误! + %1 Password error! + + + + %1用户已失效! + %1 User deactivated! + + + + %1用户已锁定! + %1 User locked! + + + + %1用户不属于所选用户组! + The user %1 does not belong to the selected user group! + + + + %1用户权限检查出错! + %1 check failed! + + + + 提示 + Prompt + + + + 监护验证: 输入账号有误! + Guardian validation: incorrect input name! + + + + 监护人和操作人不能为同一人! + Guardian and operator can not be the same person! + + + + CSequenceManageWidget + + + 顺控配置 + Configuration + + + + 顺控执行 + Execute + + + + 顺控报告 + Report + + + + 所有顺控 + All sequence + + + + 正在执行 + Executing + + + + + 过滤 + Filter + + + + 历史列表 + History List + + + + 执行详情 + Execute details + + + + 导出 + Export + + + + 打印 + Print + + + + 提示 + Prompt + + + + 无顺控操作权限! + No sequence control operation permission! + + + + CSequenceManageWidget + CSequenceManageWidget + + + + Save File + Save File + + + + (*.pdf *) + (*.pdf *) + + + + CSequenceWidget + + + 顺控 + Sequence + + + + 顺控名称: + Sequence Name: + + + + 执行方式: + Executive Mode: + + + + 自动 + Automatic + + + + 单步 + Step + + + + 执行 + Execute + + + + + + + + + + + + + 暂停 + Pause + + + + + 终止 + Terminate + + + 正在检查控制点状态,请稍等 + Check the status of control point, please wait a moment + + + + 正在查询... + Being queried... + + + + 服务应答 [%1]:%2 + Service response [%1]:%2 + + + + 服务应答-错误 [%1] + Service response-error [%1] + + + + 顺控名称: + Sequence name: + + + + 错误代码: + Error code: + + + + 错误描述: + Error description: + + + + 状态变化 [顺控-%1]:%2 + Change of state [Sequence-%1]:%2 + + + + 状态变化 [顺控-%1] [功能-%2]:%3 + Change of state [Sequence-%1] [Function-%2]:%3 + + + + 状态变化 [顺控-%1] [功能-%2] [动作-%3]:%4 + Change of state [Sequence-%1] [Function-%2] [Action-%3]:%4 + + + + 顺控名称 + Sequence name + + + + 功能名称 + Function name + + + + 动作名称 + Action name + + + + 请求人工干预! + Manual intervention request! + + + + 人工干预请求 + Manual intervention request + + + + 重试 + Retry + + + + 跳过 + Skip + + + + 等待执行... + Wait for execution... + + + + 等待暂停... + Wait for pause... + + + + 等待继续... + Wait for continue... + + + + 等待终止... + Wait for termination... + + + + 顺控开始 + Sequence start + + + + 顺控终止 + Sequence termination + + + + 顺控暂停 + Sequence pause + + + + 顺控继续 + Sequence continue + + + + 单步开始 + One step to start + + + + 单步继续 + One step to continue + + + + 未执行 + non-execution + + + + 正在执行 + executing + + + + 已触发 + triggered + + + + 执行失败 + execution failure + + + + 执行成功 + execution success + + + + 执行终止 + execution termination + + + + 执行暂停 + execution pause + + + + 执行跳过 + execution skip + + + + 继续 + Continue + + + + - - + + + + + %1[%2] +%3%4 +%5%6 + + + + + + CSeriaDevTableModel + + + 序号 + Serial Number + + + + 位置 + Location + + + + 通道描述 + Channel Description + + + + RTU描述 + RTU Description + + + + 设备描述 + Device + + + + 端口名 + Port Name + + + + 设备ID + DeviceId + + + + 通讯状态 + Communication status + + + + 通讯中断 + Communication Interrupted + + + + 通讯正常 + Communication Normal + + + + CSerialDevStatusWidget + + + RTU/端口 + RTU/Port + + + + CShape + + 画笔 + Pen + + + 画刷 + Brush + + + %1 + + %1 + + + + CShapeConfigDialog + + 数据绑定 + Data Binding + + + 函数绑定 + Function Binding + + + 策略配置 + Strategy Configuration + + + 属性配置 + Properties Configuration + + + 标签名称 + Label Name + + + 文本内容 + Text content + + + 确认 + Confirm + + + 取消 + Cancel + + + 清空 + Clear + + + 语法检查 + Syntax checking + + + 新建策略 + New strategy + + + 删除策略 + Delete strategy + + + 取消选中 + Uncheck + + + 添加行 + Add row + + + 删除行 + Delete row + + + Error + Error + + + Information + Information + + + 语法正确, 脚本有效。 + Syntax correct, script valid. + + + 策略名称: + Strategy name: + + + 函数代码 + Function Name + + + 函数名称 + Description + + + 新建 + New + + + 删除 + Delete + + + 复制 + Copy + + + 修改 + Modify + + + 函数编辑 + Function Editor + + + 策略描述: + Description + + + 提示 + Prompt + + + 策略名称不能为空! + The strategy name cannot be empty! + + + 策略描述不能为空! + The description cannot be empty! + + + 非法的命名 + Illegal name + + + 策略名称已经存在, 不能重复创建! + The strategy name already exists and cannot be repeated! + + + 策略名称不能以数字开头! + Strategy names cannot begin with Numbers! + + + 警告 + Warning + + + 当前未选中行! + Currently unchecked row! + + + + CShieldTableDelegate + + + 删除 + Delete + + + + 启用 + Enable + + + + 取消 + Disable + + + + + + 提示 + Prompt + + + + 请先取消屏蔽! + Please disable first! + + + + 删除失败! + Delete failure! + + + + 当前用户无标签设置功能权限! + The current user have no perm to operate! + + + + CShieldTableModel + + + 名称 + Name + + + + 屏蔽类型 + Type + + + + 屏蔽属性 + Property + + + + 屏蔽模式 + Mode + + + + 是否启用 + Status + + + + 时段类型 + Time Type + + + + 屏蔽时段 + Time + + + + 操作用户 + User + + + + 操作主机 + Hostname + + + + 屏蔽描述 + Description + + + + 操作 + Operate + + + + 全站屏蔽 + Location + + + + 电压屏蔽 + Voltage + + + + 责任区屏蔽 + Region + + + + 设备组屏蔽 + DeviceGroup + + + + 设备屏蔽 + Device + + + + 测点屏蔽 + Point + + + + + 未知 + Unknown + + + + 已过期 + Expired + + + + 已启用 + Enable + + + + 未启用 + Disable + + + + 一次性屏蔽 + Once + + + + 每周 + Week + + + + 每月 + Month + + + + 每周( + Week( + + + + 每月( + Month( + + + + %1 + + + + + CShiftWidget + + + 查询 + Search + + + + 保存 + Save + + + + 序号 + Number + + + + 交接班管理 + Shift Management + + + + 当前值班组 + Current duty group + + + + 填写记录 + Input record + + + + 交接班 + Duty shift + + + + 查询时间 + Search time + + + + 按值班员过滤 + Filter by duty person + + + + 导出记录 + Export + + + + 班组 + Work groups + + + + 值班员 + Duty person + + + + 接班时间 + Take over time + + + + 交班时间 + Shift time + + + + 本班处理问题 + Handling problem on duty + + + + 本班遗留问题 + Leftover problem on duty + + + + 关键信息备注 + Key information notes + + + + CSimOptWidget + + + 序号 + Number + + + + CSimOptWidget + CSimOptWidget + + + + 开始模拟操作 + Begin + + + + 图形列表 + Graph List + + + + + + 提示 + Prompt + + + + 当前登录用户无运维管理功能权限! + Current user have no perm to operate! + + + + 请选择一张图形! + Please select one graph! + + + + 确定打开图形:"%1",开始模拟操作? + Confirm open graph:"%1",begin simulate? + + + + CSliderRangeWidget + + + + 最小值: + Minimum: + + + + + 最大值: + Maximum: + + + + + 确定 + Confirm + + + + + 取消 + Cancel + + + + CSpinBoxGroup + + 错误 + Error + + + 的最小值不能超过最大值! + s minimum cannot exceed the maximum! + + + 的最大值不能小于最小值! + s maximum cannot less than the minimum! + + + + CStationNavWidget + + Form + Form + + + + CStatisWidget + + + Form + Form + + + + 统计方式: + Statistical Style: + + + + 设备类型: + Device Type: + + + + 开始时间: + Start Time: + + + + 结束时间: + End Time: + + + + 查询 + Search + + + + 打印 + Print + + + + 日统计 + Day + + + + 月统计 + Month + + + + 年统计 + Year + + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + + 结束时间不能小于开始时间! + The end time cannot be less than start time! + + + + 位置: + Location: + + + + + yyyy-MM-dd + yyyy-MM-dd + + + + 告警等级: + Alarm level: + + + + Excel + Excel + + + + Pdf + Pdf + + + + 报表 + Report + + + + 图表 + Chart + + + + 保存为 + Save as + + + + (*.jpg) + (*.jpg) + + + + + + + + + + 提示 + Prompt + + + + 保存失败 + Failed to save + + + + 日统计最多查询31天! + Maximum query time was 31 days on day! + + + + 月统计最多查询12月! + Maximum query time was 12 months on month! + + + + 年统计最多查询2年! + Maximum query time was 2 years on year! + + + + 至少勾选一个告警等级! + Check one alarm level at least! + + + + CStrategyConfigDelegate + + 颜色选择 + Color + + + + CStrategyConfigModel + + 合成值 + Synthetic value + + + 线色 + Line color + + + 填充色 + Fill color + + + 闪烁线色前景色 + The foreground color of the flicker line + + + 闪烁线色背景色 + The background color of the flicker line + + + 闪烁填充前景色 + The foreground color of the flicker fill + + + 闪烁填充背景色 + The background color of the flicker fill + + + 图元平面 + Primitive plane + + + 是否闪烁 + Whether Flicker + + + 闪烁频率 + Flicker frequency + + + 是否显示 + Whether Display + + + 警告 + Warning + + + 当前合成值已经存在! + The current composite value already exists! + + + + CSysParamWidget + + + CSysParamWidget + CSysParamWidget + + + + IP设置 + IP Settings + + + + + 查询 + Search + + + + + 设置 + Config + + + + 网卡 + Network Card + + + + 子网掩码 + Subnet Mask + + + + IP地址 + IP Address + + + + 网关 + Gateway + + + + 日期 + Date + + + + yyyy-MM-dd + yyyy-MM-dd + + + + 时间 + Time + + + + hh:mm:ss + hh:mm:ss + + + + 时间设置 + Time Settings + + + + NTP设置 + NTP Settings + + + + 是否开启NTP + Enable NTP + + + + 是 + Yes + + + + 否 + No + + + + NTP服务器 + NTP Server + + + + NTP设置失败:%1,主机名:%2 + NTP setting failed: %1, hostname: %2 + + + + NTP设置成功 + NTP setting succeeded + + + + 时间设置失败:%1,主机名:%2 + Time setting failed: %1, hostname: %2 + + + + 时间设置成功 + Time setting succeeded + + + + IP设置失败:%1,主机名:%2 + IP setting failed: %1, hostname: %2 + + + + IP设置成功 + IP setting succeeded + + + + CTableDataModel + + + + 提示 + Prompt + + + + + 只显示前%1条记录! + Onle the %1 records is displayed! + + + + + + + 时间 + Time + + + + CTableDelegata + + + 是 + Yes + + + + 否 + No + + + + CTableModel + + + 统计日期 + Statistical Date + + + + 区域名称 + Location + + + + 设备类型 + Device Type + + + + %1总数 + Number of %1 + + + + 图元名称 + Element Name + + + + 触发动作 + Trigger Action + + + + 控制面板 + Control Panel + + + + 默认着色策略 + Default Coloring Strategy + + + + 模拟操作 + Simulation Operation + + + + CTableViewExport + + + + 保存 + Save + + + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + + + + + 提示 + Prompt + + + + + 保存失败 + Failure to save + + + + CTagSourceCfgDialog + + 数据源配置 + Data source configuration + + + 取消 + Cancel + + + 确定 + Confirm + + + + CTextPrinter + + 另存PDF文件为 + Save as PDF file + + + PDF文件(*.pdf) + PDF file(*.pdf) + + + + CTextReplacer + + Dialog + Search Dialog + + + 查找: + Find: + + + 替换为: + Replace With: + + + 替换 + Replace + + + 大小写匹配 + Case Sensitive + + + 文本替换 + Text Replace + + + + CToolTip + + + + 全部 + All + + + + + 告警列表 + Alarm List + + + + + 时间 + Time + + + + + 告警内容 + Alarm Content + + + + CTreeItemDelegate + + + 切换导航 + Switch navigation + + + + 加载网页 + Load Web Page + + + + CTrendDelegate + + + + 颜色选择 + Color Selection + + + + CTrendEditDialog + + + + 趋势编辑 + Trend Editor + + + + + 取消 + Cancel + + + + + 确定 + Confirm + + + + + 添加 + Add + + + + + 删除 + Delete + + + + + 清空 + Clear + + + + + + + 警告 + Warning + + + + + 测点数量不允许为空! + The number of measuring points is not allowed to be empty! + + + + + 测点名称不允许存在空值! + The name of measuring points are not allowed to be null! + + + + + 提示 + Prompt + + + + + 当前未选中行! + Not row selected currently! + + + + CTrendEditModel + + + + 测点名称 + The name of measuring points + + + + + 颜色 + color + + + + + 点标签非法 + Illegal point label + + + + + 只能添加模拟量和累积量! + Only analog and cumulative quantities can be added! + + + 只能添加模拟量! + Only analog can be added! + + + + + 该测点已存在! + The measuring point already exists! + + + 测点标签 + Measurement Point Label + + + + CTrendEditView + + + + + + 提示 + Prompt + + + + + 请选中一行! + Select a row please! + + + + + 警告 + Warning + + + + + 该测点已存在! + The measuring point already exists! + + + + CTrendFavTreeWidget + + + + 收藏夹 + Favorite + + + + + + + 错误 + Error + + + + + + + 当前趋势名称已存在! + The name of trend is already exist! + + + + + 添加趋势 + Add trend + + + + + 导入 + Import + + + + + 显示 + Show + + + + 编辑 + Edit + + + + 自定义趋势_ + Custom Trend_ + + + 趋势名称不允许为空,自动重命名! + The trend name cannot be empty, it will be automatically renamed! + + + 当前趋势名称已存在,自动重命名! + The current trend name already exists, it will be automatically renamed! + + + + + 重命名 + Rename + + + + + 删除 + Delete + + + + + 导出 + Export + + + + + 提示 + Prompt + + + + + 确定删除所选项吗? + Are you sure you want to delete the selected item(s)? + + + + + 选择趋势收藏文件 + Select file + + + + + 保存趋势收藏文件 + Save file + + + + CTrendTreeView + + + + + 全选 + Check All + + + + + + 清空 + Clear + + + + 刷新 + Refresh + + + + CTrendWindow + + + + 设备/点 + Device/Point + + + + + 收藏夹 + Favorite + + + + + + + 错误 + Error + + + + + 趋势名称不允许为空! + Trend names are not allowed to be empty! + + + + + 最小值不能大于最大值! + The minimum cannot be greater than the maximum! + + + 设备/测点 + Device/Measurement Point + + + + CWaittingDlg + + + 报表管理 + Report Management + + + + 查询中,请等待或终止查询 . . . +(退出窗口默认终止查询) + Query in progress, please wait or terminate the query... +(Exiting the window will terminate the query by default.) + + + + 终止查询 + Terminate Query + + + + CWaveAnalyzeWidget + + CWaveAnalyzeWidget + CWaveAnalyzeWidget + + + 开始日期 + Start Date + + + 结束日期 + End Date + + + 查询 + Search + + + 打开 + Open + + + 删除 + Delete + + + 导出 + Export + + + 打印 + Print + + + 文件列表 + File List + + + Error + Error + + + 提示 + Note + + + 开始时间应小于结束时间 + The start time should be earlier than the end time. + + + + CWaveGraph + + Trigger Line + Trigger Line + + + Line B + Line B + + + Line C + Line C + + + + CWaveListDialog + + + Dialog + Dialog + + + + CWaveShow + + Save Wave Graph + Save Wave Graph + + + Save File + Save File + + + Save Successfully! + Save Successfully! + + + + CWebEngineView + + + Render process normal exit + Render process normal exit + + + + Render process abnormal exit + Render process abnormal exit + + + + Render process crashed + Render process crashed + + + + Render process killed + Render process killed + + + + 刷新 + Refresh + + + 后退 + Back + + + 前进 + Forward + + + + CWebPublish + + 提示 + Prompt + + + 只能在服务器上进行Web发布! + Web publishing only on the server! + + + 发布成功! + Publish Success! + + + 发布失败! + Publish Failure! + + + + CWorkTicketManage + + + 票库管理 + Ticket Library + + + + 开票 + Ticket + + + + 删除 + Delete + + + + 开票记录 + Ticket Record + + + + 名称 + Name + + + + 类型 + Type + + + + 文件路径 + File Path + + + + + 请选中一条记录! + Please select a record! + + + + 确认删除 + Confirm + + + + 是否删除 %1 ? + Delete %1 ? + + + + + + + + 提示 + Prompt + + + + 删除失败 + Failed to delete + + + + Form + Form + + + + 当前登录用户无运维管理功能权限! + Current user have no perm to operate! + + + + CWorker + + + 设备名称 + Device Name + + + + 备注 + Remark + + + + 操作人 + Operator + + + + + 设备id + DeviceId + + + + 型号 + Type + + + + 参数 + Parameter + + + + 安装日期 + Installation Date + + + + 状态 + State + + + + 厂家联系方式 + Manufacturer Contact + + + + 维护周期(月) + Maintenance Period(month) + + + + 所属设备组描述 + Device Group + + + + 所属设备组标签 + Device Group Tag + + + + 导出资产信息成功 + Successful export asset info + + + + 记录id + RecordId + + + + 设备描述 + Device + + + + 记录名称 + Record Name + + + + 开始时间 + Start Time + + + + 结束时间 + End Time + + + + 维护内容 + Maintenance Content + + + + 导出维护记录成功 + Successful export maintenance records + + + + 导入资产信息失败,文件打开失败! + Failure to import asset info,failed to open file! + + + + 部分设备组标签不存在 + Part of device group tag does not exist + + + + 导入维护记录失败,文件打开失败! + Failure to import maintenance records,failed to open file! + + + + 部分资产不存在 + Part of asset not exist + + + + ChanParaWidget + + + Form + Form + + + + 网口参数 + Network Port Parameters + + + + 串口参数 + Serial Port Parameters + + + + 确认修改 + Confirm Changes + + + + 重启通道 + Restart Channel + + + + + 通道使能 + Channel Enabled + + + + + 通道名称 + Channel Name + + + + + 通道描述 + Channel Description + + + + 通道号 + Channel Number + + + + 波特率 + Baud Rate + + + + 校验位 + Parity + + + + 通道IP1 + NET_DESC1 + + + + 端口号1 + PORT_NO1 + + + + 通道IP2 + NET_DESC2 + + + + 端口号2 + PORT_NO2 + + + + 通道IP3 + NET_DESC3 + + + + 端口号3 + PORT_NO3 + + + + 通道IP4 + NET_DESC4 + + + + 端口号4 + PORT_NO4 + + + + 本地端口号 + RES_PARA_INT4 + + + + + 警告 + Warning + + + + 无修改权限! + No permission to modify! + + + + 初始化权限失败! + Failed to initialize permissions! + + + + + + + 提示 + Note + + + + 重启成功 + Restart successful + + + + 确定 + OK + + + + 取消 + Cancel + + + + 修改完成 + Modification completed + + + + 没有修改数据记录! + No data records were modified! + + + + ChanStatusWidget + + + 位置 + Location + + + + 否 + No + + + + 是 + Yes + + + + 未知 + Unknown + + + + 采集通道 + Data Acquisition Channel + + + + 转发通道 + Forwarding Channel + + + + ChanTableModel + + + 序号 + Serial Number + + + + 位置 + Position + + + + 通道号 + Channel Number + + + + 通道描述 + Channel Description + + + + 通道使能 + Channel Enabled + + + + 通讯性质 + Communication Nature + + + + 通讯规约 + Communication Protocol + + + + 通道地址 + Channel Address + + + + 通道状态 + Channel Status + + + + 保留未用 + Reserved Unused + + + + 通道检测 + Channel Detection + + + + 通道运行 + Channel Running + + + + 通道停止 + Channel Stopped + + + + 接收帧错误率高 + High Frame Error Rate + + + + ConfigWidget + + + 分组管理 + Group + + + + + 新增 + Add + + + + + 删除 + Delete + + + + + 上移 + Up + + + + + 下移 + Down + + + + 保存 + Save + + + + 轮询组 + Polling Group + + + + 画面文件名称 + Graph Name + + + + 是否启用 + Enable + + + + 画面轮询间隔(s) + Interval + + + + + + 警告 + Warning + + + + + + 请选择任意一条记录 + Please select any record. + + + + 确认删除? + Confirm deletion? + + + + 画面文件名称不能为空! + Graph name cannot be empty! + + + + 保存成功 + Save success + + + + 保存失败 + Fail to save + + + + 是 + Yes + + + + 否 + No + + + + + 提示 + Prompt + + + + ContrastWidget + + + Form + Form + + + + 统计方式: + Statistical Style: + + + + 查询 + Search + + + + 打印 + Print + + + + 清空 + Clear + + + + 全选 + Check All + + + + 导出成功! +导出路径: + Exported successfully! +Exported path: + + + + 对比方式: + Compare Style: + + + + 对比时间: + Compare Time: + + + + yyyy/MM/dd + + + + + Excel + + + + + Pdf + + + + + 报表 + Report + + + + 图表 + Chart + + + + 最严重告警设备 + The most serious alarm device + + + + + 设备 + Device + + + + 按位置统计 + Statistics by location + + + + 按设备类型统计 + Statistics by device type + + + + 日 + Day + + + + 月 + Month + + + + 年 + Year + + + + + + 提示 + Prompt + + + + 请至少选择一项! + Please select one item! + + + + : + + + + + 总共: + Total: + + + + 保存为 + Save as + + + + (*.jpg) + + + + + 保存失败 + Failed to save + + + + FaultRecordModel + + + 时间 + Time + + + + 位置 + Location + + + + 设备名 + Dev Name + + + + 文件名 + File Name + + + + FaultRecordWidget + + 故障录波记录 + Fault Record + + + 位置 + Location + + + 设备 + Dev + + + + 开始时间 + Start Time + + + + 结束时间 + End Time + + + + 刷新 + Refresh + + + + 删除 + Delete + + + + 打开 + Open + + + + 全部删除 + All Delete + + + All + All + + + + + + + + + 提示 + Tip + + + + + 当前未选中任何项 + No rows are currently selected + + + + 开始时间不能大于结束时间! + Start time cannot be greater than end time ! + + + + 确定 + OK + + + + 不存在%1位置! + Does not exist %1 location ! + + + + FaultRecordWidget + + + + + + 当前用户不具有删除权限 + Current user have not perm to delete + + + + FilepathWidget + + 打开文件 + Open File + + + + FindReplaceDlg + + 连库替换 + Connection Replace + + + 连设备组 + DevGroup + + + 连位置 + Location + + + 连设备 + Deviece + + + 替换前: + Before: + + + 替换 + Replace + + + 替换后: + After: + + + 关闭 + close + + + 区分大小写 + Case Sensitive + + + 整站连接 + Site Connect + + + + FindWidget + + Form + FindDialog + + + + HandoverWidget + + + 交接班 + Duty shift + + + + 操作记录 + Operate Events + + + + 值班信息 + Duty info + + + + 关键告警 + Key Alarms + + + + 工作票 + Work Tickets + + + + 交班班组: + Shift group: + + + + 接班班组: + Take over group: + + + + 接班员 + Take over person + + + + 密码 + Password + + + + 接班签到 + Sign in + + + + 确认交接 + Confirm to shift + + + + + + 未签到 + Signed In + + + + + + + + 已签到 + Not Sign In + + + + HistoryWidget + + + 开始时间 + Start Time + + + + 结束时间 + End Time + + + + 查询 + Search + + + + 重开 + reTicket + + + + + 消息 + Infomation + + + + 链接数据库错误 + Linked database error + + + + 历史数据过多!表格仅展示查询结果的10000条 +更多数据查看,请缩小起始时间和结束时间之差 + Too much historical data! The table shows only 10,000 results of the query +For more data, narrow the gap between the start and end times + + + + 请选中一条记录! + Please select a record! + + + + + 提示 + Prompt + + + + InverseTimeLimit + + 该功能只支持在windows系统运行 + Only running on windows + + + 曲线配置 + Curve configuration + + + 选择文件 + Select file + + + 生成曲线 + Generate curve + + + 保存模板 + Save as template + + + 设备1 + Device 1 + + + 曲线名称 + Curve name + + + CO曲线 + CO curve + + + Vb(基准) + Vb(base) + + + Vt(换算) + Vt(conversion) + + + 设备2 + Device 2 + + + 设备3 + Device 3 + + + 设备4 + Device 4 + + + 设备5 + Device 5 + + + 设备6 + Device 6 + + + + IpcPlusWidget + + + 提醒 + Remind + + + + IpcPlusWidget + IpcPlusWidget + + + + ptz + ptz + + + + 调焦 + Focus + + + + 聚焦 + Focus + + + + 光圈 + Aperture + + + + 缩 + In + + + + 伸 + Out + + + + 近 + In + + + + 远 + Out + + + + 大 + In + + + + 小 + Out + + + + 预置点: + Preset: + + + + 调用 + Call + + + + 内存库读取失败 + Failure to query realtime database + + + + Label + + 打开 + Open + + + + LoadStatWidget + + LoadStatWidget + LoadStatWidget + + + 配置 + Config + + + 实时 + Real + + + 历史 + History + + + 风险点 + Risk Point + + + + MainWindow + + web发布 + Web Publish + + + 基础配置 + Basic Configuration + + + 首页配置 + HomePage Configuration + + + 背景图片配置 + BackgroundImage Configuration + + + 下一步 + Next + + + 权限验证 + Browser Permission Verification + + + 发布内容 + Publish Content + + + 画面/图元 + pic/icon + + + 图片 + back_pixmap + + + 风格 + style + + + 发布 + Publish + + + 上一步 + Previous + + + + Mainwindow + + + Form + Form + + + + 票库管理 + Ticket Library + + + + 开票记录 + Ticket Record + + + + NavigationConfigDialog + + + + 导航栏配置 + Configuration of Navigation Bar + + + + + + + 导入 + Import + + + + + 添加节点 + Add Node + + + + + 删除节点 + Delete Node + + + + + 清空 + Clear + + + + + 添加子节点 + Add ChildNode + + + + + 插入节点 + Insert Node + + + + + 导航栏 + Navigation Bar + + + + + + + 导出 + Export + + + + + + + + + 背景颜色: + Background Color: + + + + + + + 文字颜色: + Text Color: + + + + + 鼠标选中: + Mouse checked: + + + + + 鼠标悬停: + Mouse hovered: + + + + + 图标: + Icon: + + + + + 数据: + Data: + + + + + 项属性: + Item Property: + + + + + 节点层级属性: + Node hierarchy properties: + + + + + 节点状态属性: + Node state properties: + + + + + 窗口配置: + Window Configuration: + + + + + 一级节点 + First Node + + + + + + + + + 级别背景颜色: + Background Color: + + + + + + + + + 级别文字颜色: + Text Color: + + + + + + + + + 级别缩进距离: + Indent distance: + + + + + 二级节点 + Second Node + + + + + 三级节点 + Third Node + + + + + 取消 + Cancel + + + + + 确定 + Confirm + + + + + + + + + + + + - + + + + + + × + × + + + + + ∟ + + + + + + | + | + + + + + 启用: + Enable: + + + + + web发布: + web publish: + + + + + + + ... + ... + + + + + 操作: + Operation: + + + + + + + + + px + px + + + + PreviewForm + + Form + Form + + + + QCPItemTracer + + 时间 + Time + + + 事件信息 + Event Infomation + + + + QColorDialog + + Hu&e: + Hu&e: + + + &Sat: + &Sat: + + + &Val: + &Val: + + + &Red: + &Red: + + + &Green: + &Green: + + + Bl&ue: + Bl&ue: + + + A&lpha channel: + A&lpha channel: + + + &HTML: + &HTML: + + + Cursor at %1, %2 +Press ESC to cancel + Cursor at %1, %2 +Press ESC to cancel + + + Select Color + Select Color + + + &Basic colors + &Basic colors + + + &Custom colors + &Custom colors + + + &Add to Custom Colors + &Add to Custom Colors + + + &Pick Screen Color + &Pick Screen Color + + + + QFileDialog + + All Files (*) + All Files (*) + + + Look in: + Look in: + + + Back + Back + + + Go back + Go back + + + Alt+Left + Alt+Left + + + Forward + Forward + + + Go forward + Go forward + + + Alt+Right + Alt+Right + + + Parent Directory + Parent Directory + + + Go to the parent directory + Go to the parent directory + + + Alt+Up + Alt+Up + + + Create New Folder + Create New Folder + + + Create a New Folder + Create a New Folder + + + List View + List View + + + Change to list view mode + Change to list view mode + + + Detail View + Detail View + + + Change to detail view mode + Change to detail view mode + + + Sidebar + Sidebar + + + List of places and bookmarks + List of places and bookmarks + + + Files + Files + + + Files of type: + Files of type: + + + Find Directory + Find Directory + + + Open + Open + + + Save As + Save As + + + Directory: + Directory: + + + File &name: + File &name: + + + &Open + &Open + + + &Choose + &Choose + + + &Save + &Save + + + Show + Show + + + &Rename + &Rename + + + &Delete + &Delete + + + Show &hidden files + Show &hidden files + + + &New Folder + &New Folder + + + All files (*) + All files (*) + + + Directories + Directories + + + %1 +Directory not found. +Please verify the correct directory name was given. + %1 +Directory not found. +Please verify the correct directory name was given. + + + %1 already exists. +Do you want to replace it? + %1 already exists. +Do you want to replace it? + + + %1 +File not found. +Please verify the correct file name was given. + %1 +File not found. +Please verify the correct file name was given. + + + New Folder + New Folder + + + Delete + Delete + + + '%1' is write protected. +Do you want to delete it anyway? + '%1' is write protected. +Do you want to delete it anyway? + + + Are you sure you want to delete '%1'? + Are you sure you want to delete '%1'? + + + Could not delete directory. + Could not delete directory. + + + Recent Places + Recent Places + + + Remove + Remove + + + My Computer + My Computer + + + Drive + Drive + + + %1 File + %1 is a file name suffix, for example txt + %1 File + + + File + File + + + File Folder + Match Windows Explorer + File Folder + + + Folder + All other platforms + Folder + + + Alias + OS X Finder + Alias + + + Shortcut + All other platforms + Shortcut + + + Unknown + Unknown + + + + QFontDialog + + Select Font + Select Font + + + &Font + &Font + + + Font st&yle + Font st&yle + + + &Size + &Size + + + Effects + Effects + + + Stri&keout + Stri&keout + + + &Underline + &Underline + + + Sample + Sample + + + Wr&iting System + Wr&iting System + + + + QObject + + QPushButton::配置工具 + QPushButton::Configuration Tool + + + 起始角度 + Start Angle + + + 弧线角度 + Arc Angle + + + 半径 + Radius + + + x轴半径 + Xaxis Radius + + + y轴半径 + Yaxis Radius + + + 值 + Value + + + 属性 + Attribute + + + 组合图元不可镜像! + Composite primitive cannot be mirrored! + + + 精灵图元不可镜像! + Sprite elements cannot be mirrored! + + + 控件图元不可镜像! + Wiget primitive cannot be mirrored! + + + 图表图元不可镜像! + Chart primitive cannot be mirrored! + + + 该操作不支持组合图元 + This operation does not support composite primitive + + + 提示 + Prompt + + + 图层0 + Layer0 + + + 状态%1 + State%1 + + + 组态页面 + Configuration Page + + + 静态页面 + Static Page + + + QPushButton::图层工具 + QPushButton::Layer Tool + + + 警告 + Warning + + + HMI正在运行 + HMI still in running + + + 文字编辑 + Text Editor + + + 确定 + Confirm + + + 取消 + Cancel + + + 关系库 + Relation library + + + 时序库 + Timing library + + + 实时库 + RealTime library + + + 测点 + Measuring point + + + 数据源 + Data Source + + + 查询语句 + Query + + + 贝塞尔曲线 + Bezier curve + + + 显示类型 + Display type + + + 宽高 + Size + + + 横向缩放比例 + Horizontal Scaling + + + 纵向缩放比例 + Vertical Scaling + + + 是否显示 + isVisible + + + 数据长度 + data-length + + + 小数点位数 + Decimal places + + + 正负号显示 + Sign display + + + 边框样式 + Border style + + + 边框颜色 + Border color + + + 水平方向 + Horizontal + + + 竖直方向 + Vertical + + + 水平居左 + Horizontal left + + + 水平居中 + Horizontal center + + + 水平居右 + Horizontal right + + + 垂直居上 + Vertical up + + + 垂直居中 + Vertical center + + + 垂直居下 + Vertical down + + + 无边框 + No border + + + 凸出边框 + Raised border + + + 凹陷边框 + Sunken border + + + 浮点型 + Float + + + 整型 + Int + + + 字符串 + String + + + 日期 + Date + + + 数字量文本显示 + Dict text display + + + 菜单 + Menu + + + 光字牌 + Card + + + 平行边框 + Plain border + + + 数字量文本 + Dict text + + + 正常显示 + Normal display + + + 显示负号 + Show minus + + + 显示左右箭头 + Show left and right arrows + + + 显示上下箭头 + Show up and down arrows + + + 对象名称 + Object name + + + 文本内容 + Text content + + + 位置 + Location + + + 字体 + Font + + + 字体颜色 + Font color + + + 背景颜色 + Background color + + + 水平对齐方式 + Horizontal alignment + + + 垂直对齐方式 + Vertical alignment + + + 边框深度 + Border depth + + + 轴Z坐标 + Zaxis coordinates + + + 透明度 + Transparency + + + 网格线颜色 + Gridline color + + + 网格填充颜色 + Grid color + + + 交替填充颜色 + Alternate color + + + 交替填充 + Alternate fill + + + 行数量 + RowCount + + + 列数量 + ColumnCount + + + 旋转角度 + Rotation Angle + + + 中心点旋转 + Center rotation + + + 着色策略 + Coloring strategy + + + 起点箭头 + Starting point of the arrow + + + 终点箭头 + Ending point of the arrow + + + 起点 + Starting point + + + 终点 + Ending point + + + 起点箭头外观 + Appearance of starting arrow + + + 起点箭头大小 + Size of starting arrow + + + 终点箭头外观 + Appearance of ending arrow + + + 终点箭头大小 + Size of ending arrow + + + 位图 + Bitmap + + + 显示方式 + Display mode + + + 居中 + In the middle + + + 放缩 + Scaling + + + 调用图形 + Call the graphics + + + 热键类型 + Poke type + + + 图层显示 + Layer Display + + + 切换画面 + Switch picture + + + 弹出画面 + Popup picture + + + 程序调用 + Program Invocation + + + 文字方向 + Text direction + + + 箭头外观 + Arrow appearance + + + 水平填充百分比 + Horizontal fill percentage + + + 垂直填充百分比 + Vertical fill percentage + + + 矩形圆角 + Rounded corner + + + 画笔 + Pen + + + 画刷 + Brush + + + 所属应用 + Subordinate of the application + + + 层显示范围 + Layer display range + + + 脚本 + Script + + + 时间格式 + Time format + + + 内容 + Content + + + 插件名 + Plugin name + + + Tip提示信息 + Tip + + + 图标 + Icon + + + 图标宽高 + Icon Size + + + view_mode + view_mode + + + 调用资源 + Resource + + + 动作类型 + Action type + + + 组号 + Group no + + + 选中 + Selected + + + 类型 + Type + + + 切换图层 + Switch layer + + + 切换导航 + Switch navigation + + + 上一页 + Preview + + + 下一页 + Next + + + 显示文本 + Show Text + + + 显示密码 + Show Password + + + 文本输入 + TextEdit + + + 按钮 + Button + + + 组合框 + ComboBox + + + 复选框 + CheckBox + + + 单选按钮 + RadioBox + + + 标签 + Label + + + 列表框 + List + + + 数字输入 + SpinBox + + + 时间 + Time + + + 树形 + Tree + + + 表格 + Table + + + 插件 + Plugin + + + 文本框 + LineEdit + + + 图表标题 + Chart title + + + 标题颜色 + Title color + + + 标题字体 + Title font + + + 显示图例 + Show legend + + + 图例文字颜色 + Legend text color + + + 图例文字字体 + Legend text font + + + 显示背景 + Show background + + + 轮廓颜色 + Outline color + + + 图例位置 + Legend location + + + 图表模式 + Chart pattern + + + 是否统计图表 + Statistical chart + + + 时间滚动 + Time to roll + + + 项提示文本颜色 + Item prompt text color + + + 项提示文本字体 + Item prompt text font + + + 项数量 + Number of Item + + + 组数量 + Number of group + + + 棒描述 + Stick description + + + 棒颜色 + Stick color + + + 饼描述 + Pie description + + + 饼颜色 + Pie color + + + 曲线数量 + Curve number + + + 曲线线宽 + Curve width + + + Y轴线颜色 + Yaxis color + + + Y轴标题 + Yaxis title + + + Y轴标题颜色 + Yaxis title color + + + Y轴标题字体 + Yaxis title font + + + Y轴最小值 + Yaxis minimum + + + Y轴最大值 + Yaxis maximum + + + Y轴刻度数 + Yaxis dial number + + + Y轴文字颜色 + Yaxis text color + + + Y轴文字字体 + Yaxis text font + + + 显示Y轴网格线 + Show Yaxis grid + + + Y轴网格线 + Yaxis grid + + + X轴格式 + Xaxis format + + + X轴跨度 + Xaxis span + + + X轴刻度数 + Xaxis dial number + + + X轴线颜色 + Xaxis line color + + + X轴文字颜色 + Xaxis text color + + + X轴文字字体 + Xaxis text font + + + X轴网格线 + Xaxis grid + + + 显示X轴网格线 + Show Xaxis grid + + + 刷新间隔 + Refresh interval + + + 曲线描述 + Curve description + + + 曲线颜色 + Curve color + + + 参考线数量 + Guides Number + + + 参考线1 + Guides1 + + + 参考线2 + Guides2 + + + 参考线3 + Guides3 + + + 自定义 + Custom + + + 日 + Day + + + 月 + Month + + + 年 + Year + + + 左侧 + Left side + + + 顶部 + Top + + + 右侧 + Right side + + + 底部 + Bottom + + + 潮流外观 + Load flow appearance + + + 矩形 + Rect + + + 箭头 + Arrow + + + 圆形 + Circular + + + 圆流 + Circular flow + + + 显示端号 + Display the number + + + 方向性 + Directional + + + 圆弧 + Arc + + + 母线 + Bus + + + 多态文本 + Polymorphic text + + + 线端 + Incoming Line + + + 椭圆 + Ellipse + + + 圆 + Circle + + + 潮流线 + flow line + + + 网格 + Grid + + + 组合 + Combination + + + 直线 + Line + + + 连接线 + Connecting line + + + 折线 + Path + + + 端子 + Terminal + + + 热键 + Poke + + + 多边形 + Polygon + + + 文本 + Text + + + 设备组 + Device Group + + + 自适应模式 + Adaptive pattern + + + 屏幕宽高比 + Screen aspect radio + + + 图元宽高比 + Primitive aspect radio + + + 告警提示 + Alarm Prompt + + + 带电区域 + Power Polygon + + + 存在重复设备:%1 + Repeat device:%1 + + + + + + + 未确认 + Unconfirmed + + + + + + + 已确认 + Confirmed + + + + 预览 + Preview + + + + 打印 + Print + + + + + 模拟量 + Analog + + + + + 数字量 + Digital + + + + + 累积量 + Accuml + + + + + 混合量 + Mix + + + + + + + + 其他 + Other + + + + + 未复归 + unResumed + + + + + 已复归 + Resumed + + + + + - + - + + + + 位置列表 + Location List + + + + 告警/智能告警 + Alarms/Intelligent Alarms + + + 告警数/智能告警数 + Alarm/Intelligent Alarm + + + 自由连接线 + Free Connection Line + + + + 自定义项目 + Custom Item + + + phase A + phase A + + + phase B + phase B + + + phase C + phase C + + + Mark + Mark + + + The Order Of Harmonic Sholud Be Greater Than 0 + The Order Of Harmonic Sholud Be Greater Than 0 + + + Smapling Data Reading Error + Smapling Data Reading Error + + + The Order Of Harmonic Sholud Be Less Than nn + The Order Of Harmonic Sholud Be Less Than nn + + + Out of Memory + Out of Memory + + + Error + Error + + + input error + input error + + + + QSMessageBox + + 是 + Yes + + + 否 + No + + + + QssEditor + + 样式编辑器 + QssEditor + + + Ctrl+S + Ctrl+S + + + Ctrl+F + Ctrl+F + + + + QtBoolEdit + + True + True + + + False + False + + + + QtBoolPropertyManager + + True + True + + + False + False + + + + QtCharEdit + + Clear Char + Clear Char + + + + QtColorEditWidget + + ... + ... + + + + QtColorPropertyManager + + Red + Red + + + Green + Green + + + Blue + Blue + + + Alpha + Alpha + + + + QtCursorDatabase + + Arrow + Arrow + + + Up Arrow + Up Arrow + + + Cross + Cross + + + Wait + Wait + + + IBeam + IBeam + + + Size Vertical + Size Vertical + + + Size Horizontal + Size Horizontal + + + Size Backslash + Size Backslash + + + Size Slash + Size Slash + + + Size All + Size All + + + Blank + Blank + + + Split Vertical + Split Vertical + + + Split Horizontal + Split Horizontal + + + Pointing Hand + Pointing Hand + + + Forbidden + Forbidden + + + Open Hand + Open Hand + + + Closed Hand + Closed Hand + + + What's This + What's This + + + Busy + Busy + + + + QtFontEditWidget + + ... + ... + + + 选择字体 + Select Font + + + + QtFontPropertyManager + + Family + Family + + + Point Size + Point Size + + + Bold + Bold + + + Italic + Italic + + + Underline + Underline + + + Strikeout + Strikeout + + + Kerning + Kerning + + + + QtGradientDialog + + 编辑渐变 + Gradient Editor + + + 确认 + Confirm + + + 取消 + Cancel + + + + QtGradientEditor + + Form + Form + + + Gradient Editor + Gradient Editor + + + 1 + 1 + + + 2 + 2 + + + 3 + 3 + + + 4 + 4 + + + 5 + 5 + + + Gradient Stops Editor + Gradient Stops Editor + + + Zoom + Zoom + + + Reset Zoom + Reset Zoom + + + Position + Position + + + Hue + Hue + + + H + H + + + Saturation + Saturation + + + S + S + + + Sat + Sat + + + Value + Value + + + V + V + + + Val + Val + + + Alpha + Alpha + + + A + A + + + Type + Type + + + Spread + Spread + + + Color + Color + + + Current stop's color + Current stop's color + + + Show HSV specification + Show HSV specification + + + HSV + HSV + + + Show RGB specification + Show RGB specification + + + RGB + RGB + + + Current stop's position + Current stop's position + + + % + % + + + Zoom In + Zoom In + + + Zoom Out + Zoom Out + + + Toggle details extension + Toggle details extension + + + > + > + + + Linear Type + Linear Type + + + ... + ... + + + Radial Type + Radial Type + + + Conical Type + Conical Type + + + Pad Spread + Pad Spread + + + Repeat Spread + Repeat Spread + + + Reflect Spread + Reflect Spread + + + Start X + Start X + + + Start Y + Start Y + + + Final X + Final X + + + Final Y + Final Y + + + Central X + Central X + + + Central Y + Central Y + + + Focal X + Focal X + + + Focal Y + Focal Y + + + Radius + Radius + + + Angle + Angle + + + Linear + Linear + + + Radial + Radial + + + Conical + Conical + + + Pad + Pad + + + Repeat + Repeat + + + Reflect + Reflect + + + + QtGradientViewDialogN + + 确认 + Confirm + + + 取消 + Cancel + + + + Renderer + + 打开 + Open + + + + SWitchButton + + 打开告警联动失败! + Failure to open alarm linkage! + + + 关闭告警联动失败! + Failure to close alarm linkage! + + + 数据库连接失败! + Failure to connect to database! + + + + SearchDialog + + 查找和替换 + Find && Replace + + + 查找目标 + Find What + + + 下一个 + Next Word + + + 替换为 + Replace With + + + 全部替换 + All Replace + + + + SetValueInputDialog + + + Dialog + Dialog + + + + 确定 + Confirm + + + + 取消 + Cancel + + + + + 设置值 + Setting Value + + + + 人工置数 + Manual Setting + + + + StationLineWidget + + 站点标签设置 + Station Label Settings + + + 站点标签: + Station Label: + + + 标签字体: + Label Font: + + + 字体大小: + Font Size: + + + 标签宽度: + Label Width: + + + 标签高度: + Label Height: + + + 是否加粗 + Bold: + + + 告警提示设置 + Alert Prompt Settings + + + 按钮半径: + Button Radius: + + + 闪烁间隔: + Flash Interval: + + + 渐变步长: + Gradient Step: + + + 保存布局 + Save Layout + + + 提示 + Prompt + + + 布局保存成功 + Layout saved successfully + + + + UserManageWidget + + + UserManageWidget + User Management Widget + + + + + 提示 + Prompt + + + + 用户管理插件用户权限认证库调用失败! + Failure to initialize perm library! + + + + 当前用户ID获取失败! + Failure to get current user id! + + + + VoiceSlider + + + Form + Form + + + 53 + 53 + + + + 0 + 0 + + + + WorkTicketWidget + + + 保存 + Save + + + 出票&预览 + Ticket&Preview + + + + 保存失败:%1 + Failed to save:%1 + + + + 保存成功 + Save successed + + + + 获取当前登录用户失败! + Failure to get current user! + + + + 事务执行失败!启动回滚 + Transaction execution failed! Start the rollback + + + 出票失败 + Failed to ticket + + + + + 出票失败:%1 + Failed to ticket:%1 + + + + 消息 + Infomation + + + + 电子签章 + Electronic signature + + + + 出票 + Ticket + + + + + (签章) + (signature) + + + + 创建目录失败: %1 + Failure to create directory:%1 + + + + + + + 请先关闭文件: %1 + Please close file:%1 + + + + 历史票不存在! + Not historical ticket found! + + + + + 当前登录用户无运维管理功能权限! + Current user have no perm to operate! + + + + 出票失败,请检查网络或者主数据库服务器连接是否异常! + Failure to ticket,please check the network and database server! + + + + qtgradientviewn + + Form + Gradient Editor + + + 新建 + New + + + 编辑 + Edit + + + 重命名 + Rename + + + 移除 + Remove + + + 渐变 + Gradient + + + 确认移除选中渐变? + Remove selected gradient? + + + diff --git a/resource/en/linkage_server/translate/linkage_server_en.mo b/resource/en/linkage_server/translate/linkage_server_en.mo new file mode 100644 index 0000000000000000000000000000000000000000..fc212d713b14bb54c95fce6a4107d21b91c7106f GIT binary patch literal 6946 zcmd6qYitzP6~}K|T2ePnlQeyXw&S!EXm*WlAR(sE5-~42$6l{gf(FRjK_@wW^9|b~jSRr>YM%Qvc`PyR&2S zC~A@>Bd&jY@7#OtIp>~p?(nC_r|e^RmZMEWTk}!Iba2-c{K50+Cm8!I_!#&}a60%o za5nfbSPy;%Tm>!!8^LG5b>}wcb31WyPKw9r8Zc)sFU&8odkmg+iY2Tdc z|4Q-KAg%wc;-3}&s`xL(sSn9{Pk%^V$^;DxOpC zZ-QUM``>^h=WR9q4)_K1D^{vO4HAo=eYI0yV47y&CP z7<&$U79>A!0O|b@_yl+hYykfOR)Z@(1s{Vy1vh|s#dT1E#@_^KeEz3#cHkM1;=V_LDFAW?^_hpYP=mh{Sn5xK+>!FQR&}$@JaMv0x6zaL2Si-4z2;S z;8O4}AlX0TF{#&&z**>@2XUnA4Ad%WP@SCxp$fYS()u?+ao+0v+aT%xPmtnzDvTnzGeENQIgsLMEr==1 z0?DuK>U}pz^3H;!=S`5}<}Hxo#s?{G9)fXX-(36=_JAa3HTW^`#~?zE#X*XXB)9F7B={`26+8mwzzg6yC^ZZ|3}ugkW8iu4hcGS! zKJsN5k3Asy?Jbb>{3A%`kXO77Qc3wcNPhb_NdBsTv&g^GK!gojhBgO{Z21b>^JwHh zlqKA>URnC`0-sd@*PxQ^Uz2y(q%Ck(nR6FqfkbjI}5qQRx&A^Yf|yqS*n6xvtO=sf46g`Xwp)Px2omP!wu2jx2X zCyGY#LJ#F1!b8MoHTW$wxKBJ3%T;KU3yaVwHmI)8Lc@_V4UL}JXx|jSWV|g`zuEff z&MQ&+>Z!pKFxtG{q!mw)8Mcy5G^U%l#G?(?o( zD4yKLyv`$D|4wh${``&+e@ljWJB}5$jtPkeM*QO)5HUWwrOmByRXx;kh z@mDaC^>&<)BQ#Kn)dS;Wy>(ikme5TL?^qbwjujE9k$38R;ZondmdQDCfhK{a#RHeb z_KsTi?sQe2$(-~~W&K}f@&h}iPOwG#(A#wtI~EV-yc0*6m)++N_IcN~z-OwH&-LeX zgUsvRQ{0mAU(dpRe^-Hk;rGrA_#af4JSt z^r~t3T&F*HQgsTKFBWceF#kZGH#%Cl(NpN@W2M=>UB#^fUgvA_KuR-v&v@q!k6-D^ zAKsQfpYx9HWFl-RHt1LWSf96N45~-`1IPV~`wIPU_(yxx8)=&AKtT9R%cI_@ZTX(p z{QXzFYu%yIt9$cScFKSV;-pJtX&)F%(`S&q_+XeQj4+Sn$1~zu)co%5!i`~7>|`BL z*M=%8^4g$|xD0Ao@Uxbwo1!pwI)C<1K65soxz5y0BCo?@N47Auk2ToVPk79Yu82op z=C)&4W}Q~i@KSUY-)K-Tx>R?0omN|2J2zTAFIqcCtEs7*JMZc0`PJ1GD|N?>uCaB~ zN$9R+W93TSY)onM|udo^)8T5razxM4QeY4aNmx1u4Dw)I4GnPn%PI?YUpuCuUq zfhK=0oM~#63$>bA3o3pPUCvEzOMM$G9yeTVPSxD1xp*VH(dTuCr*yZaPOGY#9scLo zvDtbml`vwu3*XF67-lPsebwRiMsAk{thUm2j4zQU)M?U&K>Q25ZIflkot1{;)@dth z=6~LI5Jbb2`kHGbx#q<51lJ4)t02&UqF5M7 zSQrjX5Mf#+jSmgWFUZA0HwbE{c2Uaxc29A)kdk85{ByF*@BtmH9F#Ufw zCvsnNwDQh2k6AeMHZ5gaG441T>CAB|r8AKZhr=4-w^qa|bMPm@qi|-5Ja4-bM&M}I zFw>mX+qPwE4#z>7&6<^>V5I{!Ovkm;!n8_O@{nsA&CT3K3@C}|7-_@Gik4=UN1Qw6 zr1Z4ILu(K!Ny8M|hDM!MBgNt{v#qR^!{pl47Q#mQ-O+R#A%w{(sD()7O@_(inu{c7 zCJYHQVQbA+)7nH)n@l2bBWY7_MBurWmZJ0z-Um(yM(z?v!8>&#lqypqy^+&;+O?86+gK!~n^Yx4F^w$G@^Hi2-MJ2Kn81tKQy&dBjSPrAJNdrV-$3n+CokfsX|E<-uONh317XF3eUar z_W=b?E^*>3>mDT`EE1lH24P+DD>AnUHxll(Ae+jGGttISRS%0zT5+DxT672Q;--eK z(PZ#=B$eQ}qqI#rE-!2mIyiIMwFnC*->2m8*!?e3^&$7%dugwA0n{HXvWp7>X$|@EmSPjmPAPDI}Hq9N#&wo za|fRpJR<81Zn!uv--q&xyJYGIs9j)SIdDZ7#nQHoYjje;{+}FLz7p?r=Z8|^P#WB+ zaVb1LxDdFndLJf-+B}Kxlz8NR3RkjvGp<=pLE`ErZiqyi_`gSli|-M9Z*%c^rNy}u zvyBwxw3txI=sF0h9G6}3u@FlmVUsmXvX+TKsMnayTb52~79Os7-o_4?Uj z%d*(-_y682bTk+Ybo4w==eBJZio4w|qtQrTmxE}x+Z-I`X5{<6@jjVM)M~Xdd0tW{ zv+8s@YPZ{&8D+Wn1gPCFR}KUzTK}SK`+7(&;u||V;M;kV*!b!$C41E!l~sH oUicfx*M9Qgb0BH=5~wKP4|mCTRKZQdKoFcnJdvOT=pe}RPfCCaLJ965qyv{g2P7SY z|4O6-Ob0~bZ#2?4I2T_Wp{%s>c|9{Xx3}`BX&PK2#zPt;Uz9_*la5GE0DSoMAtJUp z?2w}hz`L{hmm`vo0Nw!HyYva*DI!*93z579pku5eqI6A;BtD6V@04?uaVoOJ)achv z?b*+x<{$Nl2~i9X2>1?oz^((BFAXCM~b#FJDJT5kqT-F#|t?Xv6GFUzpa;`1!6O zrAqTrT#@nK$&7Wk=ilotoav=F{k@-mq~Oeq*)CtpCJLxe>bUp6A!zDzmn&?)vOd3_ zSM`uNm+=kr0&QdeHi3%=pV{BPXdI?7-F*8k^NyL`H=TKwO!bb=a%T%$)7YzUKh@eg zs;N~$!ahpXfdA_nFZY|R;zorgk9A(8Tnju9DchveBywig7xo76W6z7VEVr#U2l|}B M)78&qol`;+0Is5ZBme*a literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/icons/app.png b/resource/en/model_studio/icons/app.png new file mode 100644 index 0000000000000000000000000000000000000000..49005e5546aef5d1c67d41f4f0b781c2fa27c919 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|&H|6fVg?3opai!N99&>>L)K;;OSW!=wTf-D#h%Sy z!wrvB*Lzj0*?Qf~`n~YPjN(t{!mL04on3n__HNF7_7+yxiVTPK*7+ZS4r1_h^>bP0 Hl+XkK>vv9< literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/icons/ats.png b/resource/en/model_studio/icons/ats.png new file mode 100644 index 0000000000000000000000000000000000000000..e00ac715783c14631d6bcc1fd0f6d215fc7ad024 GIT binary patch literal 415 zcmV;Q0bu@#P)Tl)oqP0mwAOGNf?9*<#M?M zRDn`XUK?l@ffg_UJmv(=dLhMtY)NY7p_rMcIrnIZq(bV0N8FdRXJ(tgOlsd1Fa|6E z&yr4JPcoEYatzeWtOkt6+GdO!?jG~i^rkG(Jn-(>!|@atmgL~?XzsnFg+D=Nb_jd{ zXTWl&gU1CPfD1Fb`LCjtaNYGWz-gmWR5k}Jnpvd_6g?S{G$m;qxCAO4M(bww3ETp2 zl3H06T?1>W_XFTa(i5;9(Y$Aqz>cKpw8QW5175{zSKIrLnK}5yLG4&;Tlr2aEQ51#0mE9<;K@maFXz_==S{-bHSOkNXH7#Or zgCL4cqd|)z1{aIfXb{wX#MLMUvx1HY8b_YIfngbTVVF~fckjG!&bg0yg(!;1LxoDE zQU`Q44)g$lnVtLE5l}O;nuj!j5#QU6Hx^Uez5~69^$hUhXK@1b1J9Cb z$xW?}oC07F`1KLKfKy=J_ZNX7GkY_$xptsK;22m27JwgM%{@K%NzxQ>1#Gp8wh9aY zH^8K%;lzNQ+gUR!0VO}bRM3)#Tmv7#Xri|V+)KJJGY5Q>^cgq*j~|$j)J$>LQD!y{ zJUCG3Up~kJ0_t(Jz(azJAeW?`+uxsdYA*L>hufek>9r%sT?>F4Vw%EMh*Lh%fIsXe VY}Sy>M_2#=002ovPDHLkV1mIEups~d literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/icons/base.png b/resource/en/model_studio/icons/base.png new file mode 100644 index 0000000000000000000000000000000000000000..72015b283859a7d86ee89b4b51183fd6f705dcd6 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|&H|6fVg?3opai!N2@p9san%ZY zt;WepHz(HY+B{dJ_P+8;b>_6NDI0B6?gzLE&X!Sip7OGFiP(yU=9zoX2@*;}GBK>~<=wd}t$Ye6)^LYh85km0#`YLj{9N}=7 zR4RqX<2efJcDq=XMLZs-TrMjJA&A9d;`a7d{3gw2Q$(XtA%wsMuv)FSxw-k-fWC5d zb%myB0G}AZVzKxYHXe_0xjq?r0P8t58V#1q_K!h4b@sG)?32@sW>@kDXXB7$lue?{D+%?M-gh>-B?eP9~FW%CY2x$wwz2iquq=y zfz9W006LwH+`PNHJJ{xWJn-!Wd_R?+L{(MUmBjvc1rBAkTG8wEfUh>Mudlhkzb6`v za(Q`q)MW)24u=#91^N7x^`ADI&5CxrO*kCJ?RM`oWNh1JG#XKTQ^8HcKoFcD|8WVFz+(z<2e<={4pKro!6k$WZ~^m3 z384bqfzckjC(AJbJB(ymciI`x?v8ikIO0E0nFh%OAZ^s^Bz2V^UIDxTIIR?UbZ!xX zq?Y6nK)paXN!q)6BOj~-Ndw6|n`%br{3{niF7g1N2Qc`%)Xs&{4~~p*lyr92&+e+A z2$8IRbL1mPByGUGb29S!Ne*uJydZK7)@m)O4o3}ucBM$bTE*Q)@&&?Ce?w~)i_+S? zU3xAW8)Q_HY_BZ9>OL`T%|&ee@3xf*A^8mFPYz@h&2wZnKWy+8KFiHtBC#aYIPu^j zaknItLmG$3k^L`Qf7&NWyKwX}nZ;Td_uJ9U0PqFf_HL&3Z<+!C0000ghG0aYY^$6H)baWL8C?uf(8mY5KLLJM|e@G4B7W_JN@{K8Qcr6x&(J{5liSrf362o`VJPbmi}yG zC`O7HpW-?WV+*^5vPRCmTa4Ag$?REdra|LrR&Q=}Di4C_Xg+`83oc=@nTzLGsUzA4 z>ycUz9LqmH?ygfdy=d zVO}8mK4PQji*FjS5z;n`jc_}1-Vg8Njs!u>A15#vBg+55&-CeZ5QO`W@u|8S|3ci# b9=!Vv);>;vI^aOy00000NkvXXu0mjf4-CGF literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/icons/db.png b/resource/en/model_studio/icons/db.png new file mode 100644 index 0000000000000000000000000000000000000000..5d0ee53f87d926566495dc06d3840a263a8539fc GIT binary patch literal 304 zcmV-00nh%4P)k7R5*?8l-+H@Pz;5?AO`3Lzy?V6dl>;XV3WcI=>%j0*Z_F< z5HJC35ah}?q*16672dFP9(?_Oj&!rKEJ>!SV_+Wmq}`6d&S7S!^jI}g)fMmsoFnl7 zTpLY3fLRP00c$f`{Y1Qxh~y%26_KU;UEsMLkSvKfX z_?HdLEb&mN>axc+o?9e;Sc~PrCP?p0b_hguTChKfhEu;C*f+3^nCDC?#ki|hc2%p1 zR9kHn3iPsiOjRM8EBFcdrt12BRkkn|0J8@PdtpqsFPIDwA90Ph1g zU;}Z2ny00y4J}P1-Vdbr`ugsAX{MB_0h}?9JAjIr#{h4Un07*qo IM6N<$g64#K(*OVf literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/icons/dept.png b/resource/en/model_studio/icons/dept.png new file mode 100644 index 0000000000000000000000000000000000000000..008850dc996ff3c6b7c3eedc1877862c6ecc7c5e GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|&H|6fVg?3opai!NFVdQ&MBb@08$}c A!TLl-+H@KoEonAAq+G zPyrw@v%C|es$Ue9AxDqhhQs3?8~S=H_21~ODyXOh?>wcIuh-ti=c~EEJNNF< zEoLWG!$o9PF983B5FgBDAF(4RZCAq(`IU1bhyZ@(D>}3MtOTjg3&<`V{iQlM(V%ny O0000TR6$C_KoG1Ij{)}y9@94=bMWX7)E_ALfc?Sl{zEWN zSYMzI=tFLO^#Ou8c#qWD17Xrp!4x!;bkjwpx+kk)7_bCRBaW2PBY+D4pGBzx(5dP} z*%J~0xCHPH;I+tKd2NC@q9ci_?h2(lC!6485rdW_I!-O6L}PD8`8xn_Gaj7-Xh*q& zs&?5UHuT;MpH>z4QF$%rNxA{B&O~QSs%l?K77?n0nYCptrL+d{fw4y=2?<1mN}m{f z&ZJS#-1xI>dUxyZt>;37Qxg#qZ0Vhu9T@K8)@u`lip;DNkv)wRk!&o_J!^j^a`Zlg zmm(K~d(CV2(`0000a$ysne}$o<;KDZA0%Sn( zfQVSzt%8>Bh9KV^EN&*C3Y4VwH%j%UVSK z7wYWsJqloG1A(lL2ig*kXH{r=O&4?{6Oad@wO~pCL^IIjPL&5WUC>Ok;f=z2RKV%7 z8kFVO+(k9bnT*oVYqV^mC<$^xdupBl@NznEVKhmTI7Q<$6Qs&n+RifcIoqH%);MtI@#yRM)80W%(P^2)1X2ZyOhZZ-jboZA(_m}Cy3;POguFNZbso+fY zM}BpUyvB4c|Vyeqw1-Gz0@I$+PkTKXqk-NUGl@TC~k7@Jo?xuGrbdOJ7+4s^yACtRt%0Z z3+|YwMvIrs_?&1|8+5OGVq3}I3$K#P#!t64{yuDfMbpK1{AfwHFT$F zVv;Gd)co?Pv-k83&UEaRUF+W&t-FwzT-8ntec5xOuxQ8jt^Lm9Rr@FMa(|^}d@Da| z(Yt#$-m11K*5x-w%qItOB3~c4evy0CQgv$2n`OzuRWoa^d4fx&Exygy$1lZ8^N;im zHuZeCRvzm<>UK@PJ$dG4&XKyQg3D*i_7uEGrQ#DiYdfdL2ERB2-W@r=xHPqzZ@c(G kQft>MznPX}!<_@uIf?Td+|eA`Yy64)H4WaA)mygz14ZRqXaE2J literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/icons/device_child.png b/resource/en/model_studio/icons/device_child.png new file mode 100644 index 0000000000000000000000000000000000000000..87859a9767848612cd78a7e3f223dd890aca4b0e GIT binary patch literal 259 zcmV+e0sQ`nP)ChYmjy-^D;2b_c&;vNP+0-QT2);sVN}DcijbT*8bx{YS2II;R zE|+^vKRCnx{J-yf-#JQfif6o{RYoep16EPXBEmt5Fm>ACZ6C)9hM1zZkK=DdJjUm) z!ZVCS6rf zMehZ-aqX+kv}|3*pjlk>3vG;Yymf?m)J-Ny2ffU@5&O@P`~f?XG;N2jO7Q>y002ov JPDHLkV1ix!aL@n% literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/icons/dict.png b/resource/en/model_studio/icons/dict.png new file mode 100644 index 0000000000000000000000000000000000000000..f63dff6dd21b9930d09187984fbc575331d5dfd9 GIT binary patch literal 546 zcmV+-0^R+IP)=24f5y$HDVF91aJ#t_#K(hzPsg4#{K^nM?+k z%LT6MVm_a9001Ha5usEn(RRC~<#I`lMuYxjHk(noTn_4LwMwhiDyX~NEFz&Bk`%}Q zpjNAW+WV65C;S(_QRw?VWLbuyC=kV$Zc{)k77NzF$!IhRRaLRsY+x7$R8tFv2 z#uyyO!D6up_PED^N~J>acpSN04yjZMrfGgV*?PSO0CYMX^!xqrYh#)w{e)JlMVh7s zFAWj>j-1cu(d+flY&IbX0({^9aymf}U>F7_lL=&5rgpo{{S_Gi27>|Z_xo?7KFDUX kuq+FSL;|DHC@g#jA8VTooYJ>+ivR!s07*qoM6N<$f?G7^QUCw| literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/icons/fesCfg.png b/resource/en/model_studio/icons/fesCfg.png new file mode 100644 index 0000000000000000000000000000000000000000..52c678dc436aec203d7eb46d8e6f26039527f990 GIT binary patch literal 368 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 Ef`>?XuK)l5 literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/icons/network.png b/resource/en/model_studio/icons/network.png new file mode 100644 index 0000000000000000000000000000000000000000..dc0b0060321fe15275ba0ef9efc0133911b4be3f GIT binary patch literal 484 zcmVVLfkD^!6qxmB6J`S|7dXbfE&Hpd4s#691Y5@r*%PU_9 zc3B`#VNZfQZUGw2{zTr5l*yJD)<9|}6#D>UEkF;k0UNV7VI!Drrq)R{x7pWxV&{%y z8>SWGA4;&g_U+l1xkB-!Eextjp33bWEP@WDnnRS&u&+2Tls!uWK@f(YNLq_@=^{2Ff+XzJqJ^D`tyUI-SXc*1 zV`HDnDu`BT{R5KJG75^lu@PHao0E}QIP~tgOENI*-rmf+?|f}7NfPEE3$tK|NLxe( zwy#g)3>*RbK+BJhO95p#KLdT>6BrgUDsaA2)rs3|M*F%S-QJM0;0X<^@yaMmQvR87w45Oy6->N#cgc}=GT{CrN+gXf8B9aCgI)kxS>E`)>7>;{Jl8?*e09N8SUD8Qu#VqgHFY zXI7c;`|j??{U7fwZtE#t$F=gJqstk4fk}0tOZ6CB6((g*y1jGnGJ}u0XQt1Wop|Me zal>S*-yBLit2c|?jcBcX{K9WjcjVzatPWR71zn2x6NJ592z$&vy0!9hv3sVl=?}&S z7LTQNu9h)bS?j2;Zr*fgTl)XyCP!NT`l{~;cf`wT6mjMw(x3aSqv{}L4EmmwS z1PfbR1#ugD(HGD~D-UQP*oi)YS?z2hvs@vBWL-iIq{!UNH*@CR+(w$F)S*Tk$4#IO zG%NBFpcetRz$|cA5wz-!L;;OOhnArpH0!*9P0y>~CVaO~Xf&i~K+GrOWTT>L2KQP5f70MG}l87v5U zUBD!;SvhaUxdSZxq;O7X9QaefOJTDGd>8C;=&-@5U>n>AyIBY87%95bKpP$|r!mT` zP13ZJ(mv_Yl1DS?_Gl=9Cc2QNurG_w;q!wHryyP>Ip0-JX)?Q z8CV+;(8GL+?t0Xpp@9spg-BwBo5ZD_dXu3E=g=jCX;*6vYb&~9*q0ppX4rBLw+$Y7 zbfd1T;DKNy`0h1$Wi^mmznIF5TYCn-1UpoVOxRqABLMd}Y_+aKJF;+A8%bO*r++)}}60Y~x(vQ4+$1-yuw z_nolWs2-Y!E&0LgMYWjk5(k`5RDn&yFc7>V2FM1@1}TaMfC&f_5H{#0EfXY6K-i!I zoK(6&*q}@h^wp(uolh%HvSj)G&+qfwi(wexA%w67U}Guz2f&u(){DQJ5wYM6fEK`$ zhRrwPCYV$dLRbOV19&6ZCR`1m0q{Wb`&LC2fI})`(Aq&UH;!1zHRF24o^ihZ=xRUI zh?ba>+=+kGCT6zv(rerzCn2eSro9tF=yV*z7s)E(#*JS{c8jtsGwsxotdpY}H#Xji zJ@|mZ?aRQ;$Ne7bssQ^JJrT6tce9IlCF+KP)R5*>Tl+A4dK@5c-5%;76=zx{hchW)VAWH?14$?tL1uPvv z2g%(B(!tUJ9V~M6207LYL4uJ+`!k-;<7ayYecvNDMC1v;lGDb@rm7xu_F0gKG~5XH zOu(h8wiiJJyaN~k__X(Q0-n&;761-hYyW^m=WEuLL%#`ZcKQ+K&7I z;0M601SkNv044z59{922kCvzV50WC7aPRi4Q3&swqV5BrqWDuEme*)ZgBL~A!HCSQz3%6fhy{h%@~33sm^3><~1tTkOLHJY3S@a&Jhh85m|-G zw)q(Be}{z@g*K1-&}V5Ra7DYb;1>(hH7;Vq#)7Tl+jJYFc5~nG65Tq4O+>5hYiREbOYKA*Z|ld-5_jG z-u(a@gbmmr)k(iA*F6IgwPeN4*`Lq<-FY$3GhT}^UIQC-YcJMQO5fgk7ZhV$Ya_)s z12-w9;YW}FPrwcEYUAvIJT%)Q@Fm-D0*W!-0fPWLEt(ov?gV@gaGg@xFG2|B@-y%W z^esRGI08#xd!@;{ehl*NH%Pw0QhUdvMlzbqw=$Zj9~EFF@$(v!V1FjI1Kep$q00&2 zD0T>;H*IQxs|eynst|rO&`LVF5fhLGAV;n*HEQNi0chrur%|2NWo9?C+pcD(bY+B` zI?L^>-W18HOvpE#G&w*VKqv6MCFJEw literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/icons/tv_icon.png b/resource/en/model_studio/icons/tv_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..16e4536b36ea5cc677c1ecc97b2a862cb1baa91c GIT binary patch literal 349 zcmV-j0iyniP)RXPV;sT$Ry%T$xre0!PH~SyT*Vq!!kxrdP&}?9i*i`O zVLnl70Ihf`rtTWhgI+wM1#P&&9o|yBE<8lL6n~T=OyMdP{T*kR!7Vx?XCWSxU=`b0 zp#-~_OZnH>h;}$+HY=2`P@0f#Q_3GgKh|&&v-*Q#1)*+Sru-8eU;=~X0xAiuXM_Ug z@r<1cF=cC14@x!qXi(@C?MZ)a;WP86YC(t{!Ey*3#aI-1iG5cM9r0g<8|`B;n?WTl)+KLP!NWH81C4CbN~)}mkxl7SG5A^KJ;7o{DR3mGnVkXH09cc}32_@U z%iXthD7s#aHcjOS<<0=~Q(!cbTTk31==yV%vW578>r}QuA-3NJ6=8F<_WG!=29XqK z*J?vLoSWI~2uQIn?TV6PYG#=AKiM7rVA^18HV*-23v0o|@o9b_xePN@Zz35_GmVQ9-vPK4tTP^u zMSo5oJTUXD6W8jXg)S}xs;`Ca6~3;@M+E<7W+vUXJr{2tVpYlhFAz6Xwd#@Vv>fXH nXgde29_Bbl|FYBk*Z_P2-L0YZOPM&200000NkvXXu0mjfd$7Z5 literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/icons/userGroup.png b/resource/en/model_studio/icons/userGroup.png new file mode 100644 index 0000000000000000000000000000000000000000..bb1b57c41e8c9c541508210f1e813539de9e1a1b GIT binary patch literal 393 zcmV;40e1e0P)DQ^8TgKn&b4{Ba5Cz@Cu`ND1zMql0t+9gq$%9k>J+ zpoh~zN+1=OSx3jjcW1`1Gk(Zgt)!E*o2CgVRJ8(d0?-0@a`zQL58!BKUujGxq^f%W z0|1J>0T|uYxJ{9RnO*MV9D3$O30y)kt3wf5a znT=S1`_8{st8Kv<@!XbTd-!D#$Z?#BP8h`8L zi>j{fQ5sYdB9Z&@3gErqKb0PP(VFi@=Vn~K7*u&B!ENqZp9!fd2_FDH*X{|+JA4N4 zVrI9*6cUkEL?#glw6}cZdQ3}uCnC(i1MJM~SgK+TetUe5J@+W~%!&LJF>#1OtY*t; nEZ{M$Y8K*_&P(=B3;^nHGh(6p^S`Y*00000NkvXXu0mjfA5Np2 literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/setting/fileLogic/configcheck.xml b/resource/en/model_studio/setting/fileLogic/configcheck.xml new file mode 100644 index 00000000..b6be9ed4 --- /dev/null +++ b/resource/en/model_studio/setting/fileLogic/configcheck.xml @@ -0,0 +1,430 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resource/en/model_studio/setting/style/fesTemp.xlsx b/resource/en/model_studio/setting/style/fesTemp.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..db2f176d673d4d92c2d23562be420897da54146c GIT binary patch literal 18311 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 literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/setting/style/kbdTable.qss b/resource/en/model_studio/setting/style/kbdTable.qss new file mode 100644 index 00000000..99f5fed7 --- /dev/null +++ b/resource/en/model_studio/setting/style/kbdTable.qss @@ -0,0 +1,3 @@ +QTableView { + border: 1px solid black; + } \ No newline at end of file diff --git a/resource/en/model_studio/setting/style/psc3000Temp.xlsx b/resource/en/model_studio/setting/style/psc3000Temp.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..2499b4b7ab8a303a66888f871f35b6a56c87ad80 GIT binary patch literal 12913 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 F{|{wb=5PQ2 literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/setting/style/scrollBar.qss b/resource/en/model_studio/setting/style/scrollBar.qss new file mode 100644 index 00000000..d871f2e5 --- /dev/null +++ b/resource/en/model_studio/setting/style/scrollBar.qss @@ -0,0 +1,71 @@ +QScrollBar:vertical { + border: 1px solid grey; + background: gray; + width: 15px; + margin: 22px 0 22px 0; +} +QScrollBar::handle:vertical { + background: #F0F1EF; + min-height: 20px; +} +QScrollBar::add-line:vertical { + border: 1px solid grey; + background: #F0F1EF; + height: 20px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical { + border: 1px solid grey; + background: #F0F1EF; + height: 20px; + subcontrol-position: top; + subcontrol-origin: margin; +} +QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical { + border: 1px solid grey; + width: 3px; + height: 3px; + background: white; +} + +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { + background: none; +} + +QScrollBar:horizontal { + border: 1px solid grey; + background: gray; + height: 15px; + margin: 0px 22px 0 22px; +} +QScrollBar::handle:horizontal { + background: #F0F1EF; + min-width: 20px; +} +QScrollBar::add-line:horizontal { + border: 1px solid grey; + background: #F0F1EF; + width: 20px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal { + border: 1px solid grey; + background: #F0F1EF; + width: 20px; + subcontrol-position: left; + subcontrol-origin: margin; +} +QScrollBar::left-arrow:horizontal, QScrollBar::right-arrow:horizontal { + border: 1px solid grey; + width: 3px; + height: 3px; + background: white; +} + +QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { + background: none; +} diff --git a/resource/en/model_studio/setting/style/toolBar.qss b/resource/en/model_studio/setting/style/toolBar.qss new file mode 100644 index 00000000..a784ad82 --- /dev/null +++ b/resource/en/model_studio/setting/style/toolBar.qss @@ -0,0 +1,3 @@ +QToolBar { + spacing: 6px; /* spacing between items in the tool bar */ + } \ No newline at end of file diff --git a/resource/en/model_studio/setting/table/ACCUML.xml b/resource/en/model_studio/setting/table/ACCUML.xml new file mode 100644 index 00000000..b7f5abfe --- /dev/null +++ b/resource/en/model_studio/setting/table/ACCUML.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ACCUML_LIMIT_INFO.xml b/resource/en/model_studio/setting/table/ACCUML_LIMIT_INFO.xml new file mode 100644 index 00000000..6a1f8014 --- /dev/null +++ b/resource/en/model_studio/setting/table/ACCUML_LIMIT_INFO.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ACCUML_MAP_TO_FES.xml b/resource/en/model_studio/setting/table/ACCUML_MAP_TO_FES.xml new file mode 100644 index 00000000..842d29d0 --- /dev/null +++ b/resource/en/model_studio/setting/table/ACCUML_MAP_TO_FES.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ACCUML_TEMP_DEFINE.xml b/resource/en/model_studio/setting/table/ACCUML_TEMP_DEFINE.xml new file mode 100644 index 00000000..4ffc4d3d --- /dev/null +++ b/resource/en/model_studio/setting/table/ACCUML_TEMP_DEFINE.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ACS_DEVICE_INFO.xml b/resource/en/model_studio/setting/table/ACS_DEVICE_INFO.xml new file mode 100644 index 00000000..29341cb6 --- /dev/null +++ b/resource/en/model_studio/setting/table/ACS_DEVICE_INFO.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ADD_POINT_FROM_FES_TEMP.xml b/resource/en/model_studio/setting/table/ADD_POINT_FROM_FES_TEMP.xml new file mode 100644 index 00000000..38c397db --- /dev/null +++ b/resource/en/model_studio/setting/table/ADD_POINT_FROM_FES_TEMP.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ALARM_ACTION_DEFINE.xml b/resource/en/model_studio/setting/table/ALARM_ACTION_DEFINE.xml new file mode 100644 index 00000000..28933a11 --- /dev/null +++ b/resource/en/model_studio/setting/table/ALARM_ACTION_DEFINE.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ALARM_KEYWORD_DEFINE.xml b/resource/en/model_studio/setting/table/ALARM_KEYWORD_DEFINE.xml new file mode 100644 index 00000000..1d4694d0 --- /dev/null +++ b/resource/en/model_studio/setting/table/ALARM_KEYWORD_DEFINE.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ALARM_LEVEL_DEFINE.xml b/resource/en/model_studio/setting/table/ALARM_LEVEL_DEFINE.xml new file mode 100644 index 00000000..c4abef78 --- /dev/null +++ b/resource/en/model_studio/setting/table/ALARM_LEVEL_DEFINE.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ALARM_LEVEL_SOUND_DEF.xml b/resource/en/model_studio/setting/table/ALARM_LEVEL_SOUND_DEF.xml new file mode 100644 index 00000000..78723b13 --- /dev/null +++ b/resource/en/model_studio/setting/table/ALARM_LEVEL_SOUND_DEF.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ALARM_MANNER_DEFINE.xml b/resource/en/model_studio/setting/table/ALARM_MANNER_DEFINE.xml new file mode 100644 index 00000000..d70a9a1e --- /dev/null +++ b/resource/en/model_studio/setting/table/ALARM_MANNER_DEFINE.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ALARM_SMS_CONFIG.xml b/resource/en/model_studio/setting/table/ALARM_SMS_CONFIG.xml new file mode 100644 index 00000000..35bfe3a0 --- /dev/null +++ b/resource/en/model_studio/setting/table/ALARM_SMS_CONFIG.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ALARM_SMS_DEVICE.xml b/resource/en/model_studio/setting/table/ALARM_SMS_DEVICE.xml new file mode 100644 index 00000000..81d98569 --- /dev/null +++ b/resource/en/model_studio/setting/table/ALARM_SMS_DEVICE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ALARM_SMS_RULE.xml b/resource/en/model_studio/setting/table/ALARM_SMS_RULE.xml new file mode 100644 index 00000000..506ca4e2 --- /dev/null +++ b/resource/en/model_studio/setting/table/ALARM_SMS_RULE.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ALARM_STATUS_DEFINE.xml b/resource/en/model_studio/setting/table/ALARM_STATUS_DEFINE.xml new file mode 100644 index 00000000..4e7844e0 --- /dev/null +++ b/resource/en/model_studio/setting/table/ALARM_STATUS_DEFINE.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ALARM_STATUS_DIG_SET.xml b/resource/en/model_studio/setting/table/ALARM_STATUS_DIG_SET.xml new file mode 100644 index 00000000..151db3fa --- /dev/null +++ b/resource/en/model_studio/setting/table/ALARM_STATUS_DIG_SET.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ALARM_TYPE_DEFINE.xml b/resource/en/model_studio/setting/table/ALARM_TYPE_DEFINE.xml new file mode 100644 index 00000000..3528bcf5 --- /dev/null +++ b/resource/en/model_studio/setting/table/ALARM_TYPE_DEFINE.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ANALOG.xml b/resource/en/model_studio/setting/table/ANALOG.xml new file mode 100644 index 00000000..2825cbc3 --- /dev/null +++ b/resource/en/model_studio/setting/table/ANALOG.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ANALOG_CONTROL.xml b/resource/en/model_studio/setting/table/ANALOG_CONTROL.xml new file mode 100644 index 00000000..26d0e257 --- /dev/null +++ b/resource/en/model_studio/setting/table/ANALOG_CONTROL.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ANALOG_LIMIT_INFO.xml b/resource/en/model_studio/setting/table/ANALOG_LIMIT_INFO.xml new file mode 100644 index 00000000..849f837d --- /dev/null +++ b/resource/en/model_studio/setting/table/ANALOG_LIMIT_INFO.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ANALOG_MAP_TO_FES.xml b/resource/en/model_studio/setting/table/ANALOG_MAP_TO_FES.xml new file mode 100644 index 00000000..d96fac59 --- /dev/null +++ b/resource/en/model_studio/setting/table/ANALOG_MAP_TO_FES.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ANALOG_OVER_STATISTICS.xml b/resource/en/model_studio/setting/table/ANALOG_OVER_STATISTICS.xml new file mode 100644 index 00000000..8e77e4ed --- /dev/null +++ b/resource/en/model_studio/setting/table/ANALOG_OVER_STATISTICS.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ANALOG_TEMP_DEFINE.xml b/resource/en/model_studio/setting/table/ANALOG_TEMP_DEFINE.xml new file mode 100644 index 00000000..7a6d0fe0 --- /dev/null +++ b/resource/en/model_studio/setting/table/ANALOG_TEMP_DEFINE.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/APC_ANALOG.xml b/resource/en/model_studio/setting/table/APC_ANALOG.xml new file mode 100644 index 00000000..7eeefe89 --- /dev/null +++ b/resource/en/model_studio/setting/table/APC_ANALOG.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/APC_DIGITAL.xml b/resource/en/model_studio/setting/table/APC_DIGITAL.xml new file mode 100644 index 00000000..e56e43f3 --- /dev/null +++ b/resource/en/model_studio/setting/table/APC_DIGITAL.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ATS_FES_LOCATION_INFO.xml b/resource/en/model_studio/setting/table/ATS_FES_LOCATION_INFO.xml new file mode 100644 index 00000000..6a4341b4 --- /dev/null +++ b/resource/en/model_studio/setting/table/ATS_FES_LOCATION_INFO.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/ATS_FES_PLATFORM_INFO.xml b/resource/en/model_studio/setting/table/ATS_FES_PLATFORM_INFO.xml new file mode 100644 index 00000000..d3ebdcb9 --- /dev/null +++ b/resource/en/model_studio/setting/table/ATS_FES_PLATFORM_INFO.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/BACKGROUND_X_FES_ACCUML.xml b/resource/en/model_studio/setting/table/BACKGROUND_X_FES_ACCUML.xml new file mode 100644 index 00000000..70b727fa --- /dev/null +++ b/resource/en/model_studio/setting/table/BACKGROUND_X_FES_ACCUML.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/BACKGROUND_X_FES_ANALOG.xml b/resource/en/model_studio/setting/table/BACKGROUND_X_FES_ANALOG.xml new file mode 100644 index 00000000..ebe4f992 --- /dev/null +++ b/resource/en/model_studio/setting/table/BACKGROUND_X_FES_ANALOG.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/BACKGROUND_X_FES_DIGTAL.xml b/resource/en/model_studio/setting/table/BACKGROUND_X_FES_DIGTAL.xml new file mode 100644 index 00000000..114b6dba --- /dev/null +++ b/resource/en/model_studio/setting/table/BACKGROUND_X_FES_DIGTAL.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/BAS_CRAFT_DEF.xml b/resource/en/model_studio/setting/table/BAS_CRAFT_DEF.xml new file mode 100644 index 00000000..5d1a387c --- /dev/null +++ b/resource/en/model_studio/setting/table/BAS_CRAFT_DEF.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/BAS_MODE_DEF.xml b/resource/en/model_studio/setting/table/BAS_MODE_DEF.xml new file mode 100644 index 00000000..e682b209 --- /dev/null +++ b/resource/en/model_studio/setting/table/BAS_MODE_DEF.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/BAS_MODE_TYPE.xml b/resource/en/model_studio/setting/table/BAS_MODE_TYPE.xml new file mode 100644 index 00000000..f54d6cf5 --- /dev/null +++ b/resource/en/model_studio/setting/table/BAS_MODE_TYPE.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/BAS_TIMETABLE_CTRL_PARAM.xml b/resource/en/model_studio/setting/table/BAS_TIMETABLE_CTRL_PARAM.xml new file mode 100644 index 00000000..99e682b3 --- /dev/null +++ b/resource/en/model_studio/setting/table/BAS_TIMETABLE_CTRL_PARAM.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/BAS_TIMETABLE_DEF.xml b/resource/en/model_studio/setting/table/BAS_TIMETABLE_DEF.xml new file mode 100644 index 00000000..a8e069ff --- /dev/null +++ b/resource/en/model_studio/setting/table/BAS_TIMETABLE_DEF.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/BAS_TIMETABLE_INFO.xml b/resource/en/model_studio/setting/table/BAS_TIMETABLE_INFO.xml new file mode 100644 index 00000000..4318fb7d --- /dev/null +++ b/resource/en/model_studio/setting/table/BAS_TIMETABLE_INFO.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/BAS_TIMETABLE_SCHEDULE.xml b/resource/en/model_studio/setting/table/BAS_TIMETABLE_SCHEDULE.xml new file mode 100644 index 00000000..fc057e3c --- /dev/null +++ b/resource/en/model_studio/setting/table/BAS_TIMETABLE_SCHEDULE.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/CALC_FUNC_DEF.xml b/resource/en/model_studio/setting/table/CALC_FUNC_DEF.xml new file mode 100644 index 00000000..3cc05131 --- /dev/null +++ b/resource/en/model_studio/setting/table/CALC_FUNC_DEF.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/CALC_GROUP_DEF.xml b/resource/en/model_studio/setting/table/CALC_GROUP_DEF.xml new file mode 100644 index 00000000..024a03c6 --- /dev/null +++ b/resource/en/model_studio/setting/table/CALC_GROUP_DEF.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/CALC_IN_PARA.xml b/resource/en/model_studio/setting/table/CALC_IN_PARA.xml new file mode 100644 index 00000000..bd62abaf --- /dev/null +++ b/resource/en/model_studio/setting/table/CALC_IN_PARA.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/CALC_OUT_PARA.xml b/resource/en/model_studio/setting/table/CALC_OUT_PARA.xml new file mode 100644 index 00000000..8a20f18e --- /dev/null +++ b/resource/en/model_studio/setting/table/CALC_OUT_PARA.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/CALC_PARA_DEF.xml b/resource/en/model_studio/setting/table/CALC_PARA_DEF.xml new file mode 100644 index 00000000..68928fc9 --- /dev/null +++ b/resource/en/model_studio/setting/table/CALC_PARA_DEF.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/CCTV_CAMERA_INFO.xml b/resource/en/model_studio/setting/table/CCTV_CAMERA_INFO.xml new file mode 100644 index 00000000..a8944450 --- /dev/null +++ b/resource/en/model_studio/setting/table/CCTV_CAMERA_INFO.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/CCTV_MONITOR_INFO.xml b/resource/en/model_studio/setting/table/CCTV_MONITOR_INFO.xml new file mode 100644 index 00000000..0fce3624 --- /dev/null +++ b/resource/en/model_studio/setting/table/CCTV_MONITOR_INFO.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/CCTV_ORIENTATION.xml b/resource/en/model_studio/setting/table/CCTV_ORIENTATION.xml new file mode 100644 index 00000000..9aaae7f0 --- /dev/null +++ b/resource/en/model_studio/setting/table/CCTV_ORIENTATION.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/CCTV_SEPARATOR_INFO.xml b/resource/en/model_studio/setting/table/CCTV_SEPARATOR_INFO.xml new file mode 100644 index 00000000..d4a2b38b --- /dev/null +++ b/resource/en/model_studio/setting/table/CCTV_SEPARATOR_INFO.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DEV_GROUP.xml b/resource/en/model_studio/setting/table/DEV_GROUP.xml new file mode 100644 index 00000000..2e8e6d0a --- /dev/null +++ b/resource/en/model_studio/setting/table/DEV_GROUP.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DEV_INFO.xml b/resource/en/model_studio/setting/table/DEV_INFO.xml new file mode 100644 index 00000000..2f3148e9 --- /dev/null +++ b/resource/en/model_studio/setting/table/DEV_INFO.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DEV_INFO_FOR_EMPTY_ADD.xml b/resource/en/model_studio/setting/table/DEV_INFO_FOR_EMPTY_ADD.xml new file mode 100644 index 00000000..5226d833 --- /dev/null +++ b/resource/en/model_studio/setting/table/DEV_INFO_FOR_EMPTY_ADD.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DEV_TEMP_DEF.xml b/resource/en/model_studio/setting/table/DEV_TEMP_DEF.xml new file mode 100644 index 00000000..02d9a58e --- /dev/null +++ b/resource/en/model_studio/setting/table/DEV_TEMP_DEF.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DEV_TEMP_GROUP.xml b/resource/en/model_studio/setting/table/DEV_TEMP_GROUP.xml new file mode 100644 index 00000000..69a87bb5 --- /dev/null +++ b/resource/en/model_studio/setting/table/DEV_TEMP_GROUP.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DEV_TRIGGER_FLAG.xml b/resource/en/model_studio/setting/table/DEV_TRIGGER_FLAG.xml new file mode 100644 index 00000000..e68d3dc4 --- /dev/null +++ b/resource/en/model_studio/setting/table/DEV_TRIGGER_FLAG.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DEV_TYPE_DEF.xml b/resource/en/model_studio/setting/table/DEV_TYPE_DEF.xml new file mode 100644 index 00000000..219f07cb --- /dev/null +++ b/resource/en/model_studio/setting/table/DEV_TYPE_DEF.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DEV_TYPE_DEF_61850.xml b/resource/en/model_studio/setting/table/DEV_TYPE_DEF_61850.xml new file mode 100644 index 00000000..970c065f --- /dev/null +++ b/resource/en/model_studio/setting/table/DEV_TYPE_DEF_61850.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DICT_MENU_INFO_PNT_CLASS.xml b/resource/en/model_studio/setting/table/DICT_MENU_INFO_PNT_CLASS.xml new file mode 100644 index 00000000..a4b31481 --- /dev/null +++ b/resource/en/model_studio/setting/table/DICT_MENU_INFO_PNT_CLASS.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DICT_MENU_INFO_PNT_CLASS.xml.bak b/resource/en/model_studio/setting/table/DICT_MENU_INFO_PNT_CLASS.xml.bak new file mode 100644 index 00000000..8476a780 --- /dev/null +++ b/resource/en/model_studio/setting/table/DICT_MENU_INFO_PNT_CLASS.xml.bak @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DICT_POINT_TYPE.xml b/resource/en/model_studio/setting/table/DICT_POINT_TYPE.xml new file mode 100644 index 00000000..c9b67c33 --- /dev/null +++ b/resource/en/model_studio/setting/table/DICT_POINT_TYPE.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DICT_POINT_TYPE_FOR_POINT_ADD.xml b/resource/en/model_studio/setting/table/DICT_POINT_TYPE_FOR_POINT_ADD.xml new file mode 100644 index 00000000..815b461a --- /dev/null +++ b/resource/en/model_studio/setting/table/DICT_POINT_TYPE_FOR_POINT_ADD.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DICT_STATE_TEXT_INFO.xml b/resource/en/model_studio/setting/table/DICT_STATE_TEXT_INFO.xml new file mode 100644 index 00000000..09ecca66 --- /dev/null +++ b/resource/en/model_studio/setting/table/DICT_STATE_TEXT_INFO.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DICT_TEXT_DEFINE.xml b/resource/en/model_studio/setting/table/DICT_TEXT_DEFINE.xml new file mode 100644 index 00000000..61ebc905 --- /dev/null +++ b/resource/en/model_studio/setting/table/DICT_TEXT_DEFINE.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DICT_UNIT_INFO.xml b/resource/en/model_studio/setting/table/DICT_UNIT_INFO.xml new file mode 100644 index 00000000..350ecf75 --- /dev/null +++ b/resource/en/model_studio/setting/table/DICT_UNIT_INFO.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DICT_VOL_LEVEL.xml b/resource/en/model_studio/setting/table/DICT_VOL_LEVEL.xml new file mode 100644 index 00000000..6d02b824 --- /dev/null +++ b/resource/en/model_studio/setting/table/DICT_VOL_LEVEL.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DIGITAL.xml b/resource/en/model_studio/setting/table/DIGITAL.xml new file mode 100644 index 00000000..c48964ca --- /dev/null +++ b/resource/en/model_studio/setting/table/DIGITAL.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DIGITAL_CONTROL.xml b/resource/en/model_studio/setting/table/DIGITAL_CONTROL.xml new file mode 100644 index 00000000..ea2d63af --- /dev/null +++ b/resource/en/model_studio/setting/table/DIGITAL_CONTROL.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DIGITAL_MAP_TO_FES.xml b/resource/en/model_studio/setting/table/DIGITAL_MAP_TO_FES.xml new file mode 100644 index 00000000..9ad6fe0f --- /dev/null +++ b/resource/en/model_studio/setting/table/DIGITAL_MAP_TO_FES.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/DIGITAL_TEMP_DEFINE.xml b/resource/en/model_studio/setting/table/DIGITAL_TEMP_DEFINE.xml new file mode 100644 index 00000000..14798489 --- /dev/null +++ b/resource/en/model_studio/setting/table/DIGITAL_TEMP_DEFINE.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FAULT_RECALL_COND_DEF.xml b/resource/en/model_studio/setting/table/FAULT_RECALL_COND_DEF.xml new file mode 100644 index 00000000..ad5a1e3b --- /dev/null +++ b/resource/en/model_studio/setting/table/FAULT_RECALL_COND_DEF.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FBD_GROUP_INFO.xml b/resource/en/model_studio/setting/table/FBD_GROUP_INFO.xml new file mode 100644 index 00000000..34743adb --- /dev/null +++ b/resource/en/model_studio/setting/table/FBD_GROUP_INFO.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_ACCUML.xml b/resource/en/model_studio/setting/table/FES_ACCUML.xml new file mode 100644 index 00000000..d9437aa7 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_ACCUML.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_ANALOG.xml b/resource/en/model_studio/setting/table/FES_ANALOG.xml new file mode 100644 index 00000000..24a48cc2 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_ANALOG.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_ANALOG_CTRL.xml b/resource/en/model_studio/setting/table/FES_ANALOG_CTRL.xml new file mode 100644 index 00000000..c3fbebe4 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_ANALOG_CTRL.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_CHANNEL_PARA.xml b/resource/en/model_studio/setting/table/FES_CHANNEL_PARA.xml new file mode 100644 index 00000000..63ed5df8 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_CHANNEL_PARA.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_CONST.xml b/resource/en/model_studio/setting/table/FES_CONST.xml new file mode 100644 index 00000000..7e123200 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_CONST.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_CONST_TEMP.xml b/resource/en/model_studio/setting/table/FES_CONST_TEMP.xml new file mode 100644 index 00000000..e2874dfe --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_CONST_TEMP.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DATA_BLOCK.xml b/resource/en/model_studio/setting/table/FES_DATA_BLOCK.xml new file mode 100644 index 00000000..3c8b2336 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DATA_BLOCK.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DATA_BLOCK_TEMP.xml b/resource/en/model_studio/setting/table/FES_DATA_BLOCK_TEMP.xml new file mode 100644 index 00000000..ef9e08d5 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DATA_BLOCK_TEMP.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DEV_ACCUNL_TEMP_DEF.xml b/resource/en/model_studio/setting/table/FES_DEV_ACCUNL_TEMP_DEF.xml new file mode 100644 index 00000000..f48ec6e2 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DEV_ACCUNL_TEMP_DEF.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DEV_ANALOG_CTRL_TEMP_DEF.xml b/resource/en/model_studio/setting/table/FES_DEV_ANALOG_CTRL_TEMP_DEF.xml new file mode 100644 index 00000000..2f5ab9e8 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DEV_ANALOG_CTRL_TEMP_DEF.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DEV_ANALOG_TEMP_DEF.xml b/resource/en/model_studio/setting/table/FES_DEV_ANALOG_TEMP_DEF.xml new file mode 100644 index 00000000..50be25f5 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DEV_ANALOG_TEMP_DEF.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DEV_DIGITAL_CTRL_TEMP_DEF.xml b/resource/en/model_studio/setting/table/FES_DEV_DIGITAL_CTRL_TEMP_DEF.xml new file mode 100644 index 00000000..4e312cf0 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DEV_DIGITAL_CTRL_TEMP_DEF.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DEV_DIGITAL_TEMP_DEF.xml b/resource/en/model_studio/setting/table/FES_DEV_DIGITAL_TEMP_DEF.xml new file mode 100644 index 00000000..08b23a70 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DEV_DIGITAL_TEMP_DEF.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DEV_INFO.xml b/resource/en/model_studio/setting/table/FES_DEV_INFO.xml new file mode 100644 index 00000000..be9caaa7 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DEV_INFO.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DEV_INFO_FOR_ADD.xml b/resource/en/model_studio/setting/table/FES_DEV_INFO_FOR_ADD.xml new file mode 100644 index 00000000..53e4c43c --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DEV_INFO_FOR_ADD.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DEV_INFO_FOR_EMPTY_TEMP.xml b/resource/en/model_studio/setting/table/FES_DEV_INFO_FOR_EMPTY_TEMP.xml new file mode 100644 index 00000000..d16a79a8 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DEV_INFO_FOR_EMPTY_TEMP.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DEV_MIX_CTRL_TEMP_DEF.xml b/resource/en/model_studio/setting/table/FES_DEV_MIX_CTRL_TEMP_DEF.xml new file mode 100644 index 00000000..c8a80ddc --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DEV_MIX_CTRL_TEMP_DEF.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DEV_MIX_TEMP_DEF.xml b/resource/en/model_studio/setting/table/FES_DEV_MIX_TEMP_DEF.xml new file mode 100644 index 00000000..018d941f --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DEV_MIX_TEMP_DEF.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DEV_PT_TEMP_DEF.xml b/resource/en/model_studio/setting/table/FES_DEV_PT_TEMP_DEF.xml new file mode 100644 index 00000000..7228d8fa --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DEV_PT_TEMP_DEF.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DEV_TEMP_DEF.xml b/resource/en/model_studio/setting/table/FES_DEV_TEMP_DEF.xml new file mode 100644 index 00000000..659fb46a --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DEV_TEMP_DEF.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_ADD.xml b/resource/en/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_ADD.xml new file mode 100644 index 00000000..9d10c530 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_ADD.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_IMPORT.xml b/resource/en/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_IMPORT.xml new file mode 100644 index 00000000..0fa2871e --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_IMPORT.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DEV_TYPE_DEF.xml b/resource/en/model_studio/setting/table/FES_DEV_TYPE_DEF.xml new file mode 100644 index 00000000..79d50fd9 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DEV_TYPE_DEF.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DIGITAL.xml b/resource/en/model_studio/setting/table/FES_DIGITAL.xml new file mode 100644 index 00000000..c258d515 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DIGITAL.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_DIGITAL_CTRL.xml b/resource/en/model_studio/setting/table/FES_DIGITAL_CTRL.xml new file mode 100644 index 00000000..9130e1e5 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_DIGITAL_CTRL.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_FORWARDING_ACCUML.xml b/resource/en/model_studio/setting/table/FES_FORWARDING_ACCUML.xml new file mode 100644 index 00000000..848b820d --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_FORWARDING_ACCUML.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_FORWARDING_ANAOLG.xml b/resource/en/model_studio/setting/table/FES_FORWARDING_ANAOLG.xml new file mode 100644 index 00000000..5d1f0505 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_FORWARDING_ANAOLG.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_FORWARDING_ANAOLG_CTRL.xml b/resource/en/model_studio/setting/table/FES_FORWARDING_ANAOLG_CTRL.xml new file mode 100644 index 00000000..c8bec534 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_FORWARDING_ANAOLG_CTRL.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_FORWARDING_DIGITAL.xml b/resource/en/model_studio/setting/table/FES_FORWARDING_DIGITAL.xml new file mode 100644 index 00000000..2f45e424 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_FORWARDING_DIGITAL.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_FORWARDING_DIGITAL_CTRL.xml b/resource/en/model_studio/setting/table/FES_FORWARDING_DIGITAL_CTRL.xml new file mode 100644 index 00000000..a2141dd0 --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_FORWARDING_DIGITAL_CTRL.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_MIX.xml b/resource/en/model_studio/setting/table/FES_MIX.xml new file mode 100644 index 00000000..8775287d --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_MIX.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_MIX_CTRL.xml b/resource/en/model_studio/setting/table/FES_MIX_CTRL.xml new file mode 100644 index 00000000..791de12b --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_MIX_CTRL.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_PROTOCOL.xml b/resource/en/model_studio/setting/table/FES_PROTOCOL.xml new file mode 100644 index 00000000..abc8c9ba --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_PROTOCOL.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FES_RTU_PARA.xml b/resource/en/model_studio/setting/table/FES_RTU_PARA.xml new file mode 100644 index 00000000..69f1175f --- /dev/null +++ b/resource/en/model_studio/setting/table/FES_RTU_PARA.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FORWARD_ACCUML.xml b/resource/en/model_studio/setting/table/FORWARD_ACCUML.xml new file mode 100644 index 00000000..de886b3c --- /dev/null +++ b/resource/en/model_studio/setting/table/FORWARD_ACCUML.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FORWARD_ANALOG.xml b/resource/en/model_studio/setting/table/FORWARD_ANALOG.xml new file mode 100644 index 00000000..416b2e14 --- /dev/null +++ b/resource/en/model_studio/setting/table/FORWARD_ANALOG.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FORWARD_ANALOG_CTRL.xml b/resource/en/model_studio/setting/table/FORWARD_ANALOG_CTRL.xml new file mode 100644 index 00000000..64d61ff3 --- /dev/null +++ b/resource/en/model_studio/setting/table/FORWARD_ANALOG_CTRL.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FORWARD_DIGITAL_CTRL.xml b/resource/en/model_studio/setting/table/FORWARD_DIGITAL_CTRL.xml new file mode 100644 index 00000000..9b430bba --- /dev/null +++ b/resource/en/model_studio/setting/table/FORWARD_DIGITAL_CTRL.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FORWARD_DIGITAL_DOUBLE.xml b/resource/en/model_studio/setting/table/FORWARD_DIGITAL_DOUBLE.xml new file mode 100644 index 00000000..f43333e1 --- /dev/null +++ b/resource/en/model_studio/setting/table/FORWARD_DIGITAL_DOUBLE.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FORWARD_DIGITAL_SINGLE.xml b/resource/en/model_studio/setting/table/FORWARD_DIGITAL_SINGLE.xml new file mode 100644 index 00000000..70d0c42b --- /dev/null +++ b/resource/en/model_studio/setting/table/FORWARD_DIGITAL_SINGLE.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FORWARD_MIX.xml b/resource/en/model_studio/setting/table/FORWARD_MIX.xml new file mode 100644 index 00000000..a5700ac9 --- /dev/null +++ b/resource/en/model_studio/setting/table/FORWARD_MIX.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/FORWARD_MIX_CTRL.xml b/resource/en/model_studio/setting/table/FORWARD_MIX_CTRL.xml new file mode 100644 index 00000000..11242c61 --- /dev/null +++ b/resource/en/model_studio/setting/table/FORWARD_MIX_CTRL.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/HIS_WORK_TICKET.xml b/resource/en/model_studio/setting/table/HIS_WORK_TICKET.xml new file mode 100644 index 00000000..af8aadc4 --- /dev/null +++ b/resource/en/model_studio/setting/table/HIS_WORK_TICKET.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/HMI_TYPE_INFO.xml b/resource/en/model_studio/setting/table/HMI_TYPE_INFO.xml new file mode 100644 index 00000000..1f8926a2 --- /dev/null +++ b/resource/en/model_studio/setting/table/HMI_TYPE_INFO.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/IA_DISPOSAL_PLAN.xml b/resource/en/model_studio/setting/table/IA_DISPOSAL_PLAN.xml new file mode 100644 index 00000000..2a456c81 --- /dev/null +++ b/resource/en/model_studio/setting/table/IA_DISPOSAL_PLAN.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/INVALID_SYS_TABLE_INFO.xml b/resource/en/model_studio/setting/table/INVALID_SYS_TABLE_INFO.xml new file mode 100644 index 00000000..a060070e --- /dev/null +++ b/resource/en/model_studio/setting/table/INVALID_SYS_TABLE_INFO.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/LINKAGE_ACTION.xml b/resource/en/model_studio/setting/table/LINKAGE_ACTION.xml new file mode 100644 index 00000000..7ac9862e --- /dev/null +++ b/resource/en/model_studio/setting/table/LINKAGE_ACTION.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_BAS.xml b/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_BAS.xml new file mode 100644 index 00000000..46e4f084 --- /dev/null +++ b/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_BAS.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_MSG.xml b/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_MSG.xml new file mode 100644 index 00000000..da85df28 --- /dev/null +++ b/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_MSG.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_PA.xml b/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_PA.xml new file mode 100644 index 00000000..a485aa4c --- /dev/null +++ b/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_PA.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_PIS.xml b/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_PIS.xml new file mode 100644 index 00000000..bcb92525 --- /dev/null +++ b/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_PIS.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_PSCADA.xml b/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_PSCADA.xml new file mode 100644 index 00000000..10bcd071 --- /dev/null +++ b/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_PSCADA.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_PUSH_PIC.xml b/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_PUSH_PIC.xml new file mode 100644 index 00000000..c16f3f6d --- /dev/null +++ b/resource/en/model_studio/setting/table/LINKAGE_ACTION_FOR_PUSH_PIC.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/LINKAGE_DEFINE.xml b/resource/en/model_studio/setting/table/LINKAGE_DEFINE.xml new file mode 100644 index 00000000..3759359c --- /dev/null +++ b/resource/en/model_studio/setting/table/LINKAGE_DEFINE.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/LINKAGE_FUNCTION.xml b/resource/en/model_studio/setting/table/LINKAGE_FUNCTION.xml new file mode 100644 index 00000000..fa6f290f --- /dev/null +++ b/resource/en/model_studio/setting/table/LINKAGE_FUNCTION.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/LINKAGE_FUNCTION_LIST.xml b/resource/en/model_studio/setting/table/LINKAGE_FUNCTION_LIST.xml new file mode 100644 index 00000000..21bf8ac5 --- /dev/null +++ b/resource/en/model_studio/setting/table/LINKAGE_FUNCTION_LIST.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/LINKAGE_SETTING.xml b/resource/en/model_studio/setting/table/LINKAGE_SETTING.xml new file mode 100644 index 00000000..7facd538 --- /dev/null +++ b/resource/en/model_studio/setting/table/LINKAGE_SETTING.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/LINKAGE_SETTING_FOR_ADD_AND_MODIFY.xml b/resource/en/model_studio/setting/table/LINKAGE_SETTING_FOR_ADD_AND_MODIFY.xml new file mode 100644 index 00000000..1f35490a --- /dev/null +++ b/resource/en/model_studio/setting/table/LINKAGE_SETTING_FOR_ADD_AND_MODIFY.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/LOAD_STAT_DEFINE.xml b/resource/en/model_studio/setting/table/LOAD_STAT_DEFINE.xml new file mode 100644 index 00000000..ef426077 --- /dev/null +++ b/resource/en/model_studio/setting/table/LOAD_STAT_DEFINE.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/MIX.xml b/resource/en/model_studio/setting/table/MIX.xml new file mode 100644 index 00000000..8c2eeda2 --- /dev/null +++ b/resource/en/model_studio/setting/table/MIX.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/MIX_CONTROL.xml b/resource/en/model_studio/setting/table/MIX_CONTROL.xml new file mode 100644 index 00000000..46645e9f --- /dev/null +++ b/resource/en/model_studio/setting/table/MIX_CONTROL.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/MIX_MAP_TO_FES.xml b/resource/en/model_studio/setting/table/MIX_MAP_TO_FES.xml new file mode 100644 index 00000000..1814399d --- /dev/null +++ b/resource/en/model_studio/setting/table/MIX_MAP_TO_FES.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/MIX_METHOD.xml b/resource/en/model_studio/setting/table/MIX_METHOD.xml new file mode 100644 index 00000000..587e411b --- /dev/null +++ b/resource/en/model_studio/setting/table/MIX_METHOD.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/MIX_TEMP_DEFINE.xml b/resource/en/model_studio/setting/table/MIX_TEMP_DEFINE.xml new file mode 100644 index 00000000..17b3b7c0 --- /dev/null +++ b/resource/en/model_studio/setting/table/MIX_TEMP_DEFINE.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/OPT_CTRL_ACT_DEFINE.xml b/resource/en/model_studio/setting/table/OPT_CTRL_ACT_DEFINE.xml new file mode 100644 index 00000000..ffe7db0e --- /dev/null +++ b/resource/en/model_studio/setting/table/OPT_CTRL_ACT_DEFINE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/OPT_HANDOVER_GRP.xml b/resource/en/model_studio/setting/table/OPT_HANDOVER_GRP.xml new file mode 100644 index 00000000..26d4d888 --- /dev/null +++ b/resource/en/model_studio/setting/table/OPT_HANDOVER_GRP.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/OPT_INTERLOCK_DEFINE.xml b/resource/en/model_studio/setting/table/OPT_INTERLOCK_DEFINE.xml new file mode 100644 index 00000000..fb32f1bb --- /dev/null +++ b/resource/en/model_studio/setting/table/OPT_INTERLOCK_DEFINE.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/OPT_INTERLOCK_PARA.xml b/resource/en/model_studio/setting/table/OPT_INTERLOCK_PARA.xml new file mode 100644 index 00000000..9c21a67d --- /dev/null +++ b/resource/en/model_studio/setting/table/OPT_INTERLOCK_PARA.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/OPT_INTERLOCK_PARA_FOR_SELECT.xml b/resource/en/model_studio/setting/table/OPT_INTERLOCK_PARA_FOR_SELECT.xml new file mode 100644 index 00000000..71895d66 --- /dev/null +++ b/resource/en/model_studio/setting/table/OPT_INTERLOCK_PARA_FOR_SELECT.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/OPT_SHIELD_DEFINE.xml b/resource/en/model_studio/setting/table/OPT_SHIELD_DEFINE.xml new file mode 100644 index 00000000..7b070f84 --- /dev/null +++ b/resource/en/model_studio/setting/table/OPT_SHIELD_DEFINE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/OPT_TOKEN_DEFINE.xml b/resource/en/model_studio/setting/table/OPT_TOKEN_DEFINE.xml new file mode 100644 index 00000000..b969a89d --- /dev/null +++ b/resource/en/model_studio/setting/table/OPT_TOKEN_DEFINE.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/PA_AREA_INFO.xml b/resource/en/model_studio/setting/table/PA_AREA_INFO.xml new file mode 100644 index 00000000..453ac6ba --- /dev/null +++ b/resource/en/model_studio/setting/table/PA_AREA_INFO.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/PA_AUDIO_INFO.xml b/resource/en/model_studio/setting/table/PA_AUDIO_INFO.xml new file mode 100644 index 00000000..28d8d96b --- /dev/null +++ b/resource/en/model_studio/setting/table/PA_AUDIO_INFO.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/PA_BROADCAST_GROUP.xml b/resource/en/model_studio/setting/table/PA_BROADCAST_GROUP.xml new file mode 100644 index 00000000..afc28947 --- /dev/null +++ b/resource/en/model_studio/setting/table/PA_BROADCAST_GROUP.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/PA_CTRL_PARAM.xml b/resource/en/model_studio/setting/table/PA_CTRL_PARAM.xml new file mode 100644 index 00000000..6c55abd5 --- /dev/null +++ b/resource/en/model_studio/setting/table/PA_CTRL_PARAM.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/PA_LOCATION_AREA_DEF.xml b/resource/en/model_studio/setting/table/PA_LOCATION_AREA_DEF.xml new file mode 100644 index 00000000..07a6315e --- /dev/null +++ b/resource/en/model_studio/setting/table/PA_LOCATION_AREA_DEF.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/PA_LOCATION_SEQ_DEF.xml b/resource/en/model_studio/setting/table/PA_LOCATION_SEQ_DEF.xml new file mode 100644 index 00000000..0f2bba7a --- /dev/null +++ b/resource/en/model_studio/setting/table/PA_LOCATION_SEQ_DEF.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/PA_OPERATOR_DEF.xml b/resource/en/model_studio/setting/table/PA_OPERATOR_DEF.xml new file mode 100644 index 00000000..6e2057da --- /dev/null +++ b/resource/en/model_studio/setting/table/PA_OPERATOR_DEF.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/PA_OPERATOR_MAP.xml b/resource/en/model_studio/setting/table/PA_OPERATOR_MAP.xml new file mode 100644 index 00000000..6d0531c0 --- /dev/null +++ b/resource/en/model_studio/setting/table/PA_OPERATOR_MAP.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/PA_TIMED_AUDIO.xml b/resource/en/model_studio/setting/table/PA_TIMED_AUDIO.xml new file mode 100644 index 00000000..1bbe175d --- /dev/null +++ b/resource/en/model_studio/setting/table/PA_TIMED_AUDIO.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/PIS_AREA_INFO.xml b/resource/en/model_studio/setting/table/PIS_AREA_INFO.xml new file mode 100644 index 00000000..0e5ae3a1 --- /dev/null +++ b/resource/en/model_studio/setting/table/PIS_AREA_INFO.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/PIS_CTRL_PARAM.xml b/resource/en/model_studio/setting/table/PIS_CTRL_PARAM.xml new file mode 100644 index 00000000..4b836198 --- /dev/null +++ b/resource/en/model_studio/setting/table/PIS_CTRL_PARAM.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/PIS_DISPLAY_INFO.xml b/resource/en/model_studio/setting/table/PIS_DISPLAY_INFO.xml new file mode 100644 index 00000000..b58076a0 --- /dev/null +++ b/resource/en/model_studio/setting/table/PIS_DISPLAY_INFO.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/PIS_FES_LOCATION_INFO.xml b/resource/en/model_studio/setting/table/PIS_FES_LOCATION_INFO.xml new file mode 100644 index 00000000..49888897 --- /dev/null +++ b/resource/en/model_studio/setting/table/PIS_FES_LOCATION_INFO.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/PIS_LOCATION_AREA_DEF.xml b/resource/en/model_studio/setting/table/PIS_LOCATION_AREA_DEF.xml new file mode 100644 index 00000000..f12a9f70 --- /dev/null +++ b/resource/en/model_studio/setting/table/PIS_LOCATION_AREA_DEF.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/PIS_MESSAGE_INFO.xml b/resource/en/model_studio/setting/table/PIS_MESSAGE_INFO.xml new file mode 100644 index 00000000..4bccbbf7 --- /dev/null +++ b/resource/en/model_studio/setting/table/PIS_MESSAGE_INFO.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/PSC3000_FES_TEMP.xml b/resource/en/model_studio/setting/table/PSC3000_FES_TEMP.xml new file mode 100644 index 00000000..c71b8852 --- /dev/null +++ b/resource/en/model_studio/setting/table/PSC3000_FES_TEMP.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/REGION_INFO.xml b/resource/en/model_studio/setting/table/REGION_INFO.xml new file mode 100644 index 00000000..989c7d80 --- /dev/null +++ b/resource/en/model_studio/setting/table/REGION_INFO.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/REPORT_TYPE_INFO.xml b/resource/en/model_studio/setting/table/REPORT_TYPE_INFO.xml new file mode 100644 index 00000000..82b9e397 --- /dev/null +++ b/resource/en/model_studio/setting/table/REPORT_TYPE_INFO.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/RM_DEPT_DEF.xml b/resource/en/model_studio/setting/table/RM_DEPT_DEF.xml new file mode 100644 index 00000000..cd5770a0 --- /dev/null +++ b/resource/en/model_studio/setting/table/RM_DEPT_DEF.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/RM_NORM_FUNC_DEF.xml b/resource/en/model_studio/setting/table/RM_NORM_FUNC_DEF.xml new file mode 100644 index 00000000..e32e7b22 --- /dev/null +++ b/resource/en/model_studio/setting/table/RM_NORM_FUNC_DEF.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/RM_ROLE_DB_INFO.xml b/resource/en/model_studio/setting/table/RM_ROLE_DB_INFO.xml new file mode 100644 index 00000000..9bfa50a3 --- /dev/null +++ b/resource/en/model_studio/setting/table/RM_ROLE_DB_INFO.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/RM_ROLE_DEF.xml b/resource/en/model_studio/setting/table/RM_ROLE_DEF.xml new file mode 100644 index 00000000..a7a85525 --- /dev/null +++ b/resource/en/model_studio/setting/table/RM_ROLE_DEF.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/RM_ROLE_HMI_INFO.xml b/resource/en/model_studio/setting/table/RM_ROLE_HMI_INFO.xml new file mode 100644 index 00000000..d59d138e --- /dev/null +++ b/resource/en/model_studio/setting/table/RM_ROLE_HMI_INFO.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/RM_ROLE_SPEF_REG.xml b/resource/en/model_studio/setting/table/RM_ROLE_SPEF_REG.xml new file mode 100644 index 00000000..0189754f --- /dev/null +++ b/resource/en/model_studio/setting/table/RM_ROLE_SPEF_REG.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/RM_SECURITY_DEF.xml b/resource/en/model_studio/setting/table/RM_SECURITY_DEF.xml new file mode 100644 index 00000000..a3fd0279 --- /dev/null +++ b/resource/en/model_studio/setting/table/RM_SECURITY_DEF.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/RM_SPCL_FUNC_DEF.xml b/resource/en/model_studio/setting/table/RM_SPCL_FUNC_DEF.xml new file mode 100644 index 00000000..5747000a --- /dev/null +++ b/resource/en/model_studio/setting/table/RM_SPCL_FUNC_DEF.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/RM_USERG_DB_INFO.xml b/resource/en/model_studio/setting/table/RM_USERG_DB_INFO.xml new file mode 100644 index 00000000..2a4ab181 --- /dev/null +++ b/resource/en/model_studio/setting/table/RM_USERG_DB_INFO.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/RM_USERG_DEF.xml b/resource/en/model_studio/setting/table/RM_USERG_DEF.xml new file mode 100644 index 00000000..0d86dda8 --- /dev/null +++ b/resource/en/model_studio/setting/table/RM_USERG_DEF.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/RM_USERG_HMI_INFO.xml b/resource/en/model_studio/setting/table/RM_USERG_HMI_INFO.xml new file mode 100644 index 00000000..250056f6 --- /dev/null +++ b/resource/en/model_studio/setting/table/RM_USERG_HMI_INFO.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/RM_USERG_RSP_INFO.xml b/resource/en/model_studio/setting/table/RM_USERG_RSP_INFO.xml new file mode 100644 index 00000000..4aeb90e0 --- /dev/null +++ b/resource/en/model_studio/setting/table/RM_USERG_RSP_INFO.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/RM_USER_DEF.xml b/resource/en/model_studio/setting/table/RM_USER_DEF.xml new file mode 100644 index 00000000..78fea9be --- /dev/null +++ b/resource/en/model_studio/setting/table/RM_USER_DEF.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/RT_COLUMN_MODE.xml b/resource/en/model_studio/setting/table/RT_COLUMN_MODE.xml new file mode 100644 index 00000000..125ac30a --- /dev/null +++ b/resource/en/model_studio/setting/table/RT_COLUMN_MODE.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/RT_TABLE_MODE.xml b/resource/en/model_studio/setting/table/RT_TABLE_MODE.xml new file mode 100644 index 00000000..99bcb4b9 --- /dev/null +++ b/resource/en/model_studio/setting/table/RT_TABLE_MODE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/SAFETY_DAY.xml b/resource/en/model_studio/setting/table/SAFETY_DAY.xml new file mode 100644 index 00000000..e2dadeac --- /dev/null +++ b/resource/en/model_studio/setting/table/SAFETY_DAY.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/SAMPLE_DEFINE.xml b/resource/en/model_studio/setting/table/SAMPLE_DEFINE.xml new file mode 100644 index 00000000..38136a5d --- /dev/null +++ b/resource/en/model_studio/setting/table/SAMPLE_DEFINE.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/SEQUENCE_ACTION.xml b/resource/en/model_studio/setting/table/SEQUENCE_ACTION.xml new file mode 100644 index 00000000..0d656a7f --- /dev/null +++ b/resource/en/model_studio/setting/table/SEQUENCE_ACTION.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/SEQUENCE_DEFINE.xml b/resource/en/model_studio/setting/table/SEQUENCE_DEFINE.xml new file mode 100644 index 00000000..fbec1c59 --- /dev/null +++ b/resource/en/model_studio/setting/table/SEQUENCE_DEFINE.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/SEQUENCE_FUNCTION.xml b/resource/en/model_studio/setting/table/SEQUENCE_FUNCTION.xml new file mode 100644 index 00000000..52023160 --- /dev/null +++ b/resource/en/model_studio/setting/table/SEQUENCE_FUNCTION.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/SEQUENCE_SETTING.xml b/resource/en/model_studio/setting/table/SEQUENCE_SETTING.xml new file mode 100644 index 00000000..e33bf353 --- /dev/null +++ b/resource/en/model_studio/setting/table/SEQUENCE_SETTING.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/STAT_INST_DEF.xml b/resource/en/model_studio/setting/table/STAT_INST_DEF.xml new file mode 100644 index 00000000..2fe02bea --- /dev/null +++ b/resource/en/model_studio/setting/table/STAT_INST_DEF.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/STAT_INST_PARA_GRP.xml b/resource/en/model_studio/setting/table/STAT_INST_PARA_GRP.xml new file mode 100644 index 00000000..ffb6ea5a --- /dev/null +++ b/resource/en/model_studio/setting/table/STAT_INST_PARA_GRP.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/STAT_INST_PARA_POINT.xml b/resource/en/model_studio/setting/table/STAT_INST_PARA_POINT.xml new file mode 100644 index 00000000..214cb803 --- /dev/null +++ b/resource/en/model_studio/setting/table/STAT_INST_PARA_POINT.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/STAT_INST_PARA_POINT_FOR_ADD.xml b/resource/en/model_studio/setting/table/STAT_INST_PARA_POINT_FOR_ADD.xml new file mode 100644 index 00000000..ef87d6b6 --- /dev/null +++ b/resource/en/model_studio/setting/table/STAT_INST_PARA_POINT_FOR_ADD.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/STAT_INST_PARA_TIME.xml b/resource/en/model_studio/setting/table/STAT_INST_PARA_TIME.xml new file mode 100644 index 00000000..0937bcea --- /dev/null +++ b/resource/en/model_studio/setting/table/STAT_INST_PARA_TIME.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/STAT_INST_PARA_TIME_FOR_ADD.xml b/resource/en/model_studio/setting/table/STAT_INST_PARA_TIME_FOR_ADD.xml new file mode 100644 index 00000000..1e33d84e --- /dev/null +++ b/resource/en/model_studio/setting/table/STAT_INST_PARA_TIME_FOR_ADD.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/STAT_INST_RET_GRP.xml b/resource/en/model_studio/setting/table/STAT_INST_RET_GRP.xml new file mode 100644 index 00000000..e7cf6b43 --- /dev/null +++ b/resource/en/model_studio/setting/table/STAT_INST_RET_GRP.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/STAT_INST_RET_PARA.xml b/resource/en/model_studio/setting/table/STAT_INST_RET_PARA.xml new file mode 100644 index 00000000..86f3a3ef --- /dev/null +++ b/resource/en/model_studio/setting/table/STAT_INST_RET_PARA.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/STAT_INST_RET_PARA_FOR_ADD.xml b/resource/en/model_studio/setting/table/STAT_INST_RET_PARA_FOR_ADD.xml new file mode 100644 index 00000000..c3e57410 --- /dev/null +++ b/resource/en/model_studio/setting/table/STAT_INST_RET_PARA_FOR_ADD.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/STAT_LINK_DEF.xml b/resource/en/model_studio/setting/table/STAT_LINK_DEF.xml new file mode 100644 index 00000000..0f4e7196 --- /dev/null +++ b/resource/en/model_studio/setting/table/STAT_LINK_DEF.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/STAT_LINK_PARA.xml b/resource/en/model_studio/setting/table/STAT_LINK_PARA.xml new file mode 100644 index 00000000..11e9c22b --- /dev/null +++ b/resource/en/model_studio/setting/table/STAT_LINK_PARA.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/en/model_studio/setting/table/STAT_LINK_RET.xml b/resource/en/model_studio/setting/table/STAT_LINK_RET.xml new file mode 100644 index 00000000..3d67fb9e --- /dev/null +++ b/resource/en/model_studio/setting/table/STAT_LINK_RET.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/en/model_studio/setting/table/STAT_TEMPLATE_DEF.xml b/resource/en/model_studio/setting/table/STAT_TEMPLATE_DEF.xml new file mode 100644 index 00000000..878576be --- /dev/null +++ b/resource/en/model_studio/setting/table/STAT_TEMPLATE_DEF.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/STAT_TEMPLATE_PARA.xml b/resource/en/model_studio/setting/table/STAT_TEMPLATE_PARA.xml new file mode 100644 index 00000000..10dec40e --- /dev/null +++ b/resource/en/model_studio/setting/table/STAT_TEMPLATE_PARA.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/STAT_TEMPLATE_RET.xml b/resource/en/model_studio/setting/table/STAT_TEMPLATE_RET.xml new file mode 100644 index 00000000..2f47ab47 --- /dev/null +++ b/resource/en/model_studio/setting/table/STAT_TEMPLATE_RET.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/SWITCH_CFG_INFO.xml b/resource/en/model_studio/setting/table/SWITCH_CFG_INFO.xml new file mode 100644 index 00000000..92324e8b --- /dev/null +++ b/resource/en/model_studio/setting/table/SWITCH_CFG_INFO.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/SYS_MODEL_MSG_RELAY.xml b/resource/en/model_studio/setting/table/SYS_MODEL_MSG_RELAY.xml new file mode 100644 index 00000000..67631d07 --- /dev/null +++ b/resource/en/model_studio/setting/table/SYS_MODEL_MSG_RELAY.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/TBL_FES_DEV_INFO_FOR_FES_ADD.xml b/resource/en/model_studio/setting/table/TBL_FES_DEV_INFO_FOR_FES_ADD.xml new file mode 100644 index 00000000..75ff3baa --- /dev/null +++ b/resource/en/model_studio/setting/table/TBL_FES_DEV_INFO_FOR_FES_ADD.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/TEMP_PLUGIN.xml b/resource/en/model_studio/setting/table/TEMP_PLUGIN.xml new file mode 100644 index 00000000..9c747c01 --- /dev/null +++ b/resource/en/model_studio/setting/table/TEMP_PLUGIN.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/TEMP_PLUGIN_DEV_MAP.xml b/resource/en/model_studio/setting/table/TEMP_PLUGIN_DEV_MAP.xml new file mode 100644 index 00000000..c311fc4f --- /dev/null +++ b/resource/en/model_studio/setting/table/TEMP_PLUGIN_DEV_MAP.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/en/model_studio/setting/table/TEMP_PLUGIN_FES_DEV_MAP.xml b/resource/en/model_studio/setting/table/TEMP_PLUGIN_FES_DEV_MAP.xml new file mode 100644 index 00000000..6471cadb --- /dev/null +++ b/resource/en/model_studio/setting/table/TEMP_PLUGIN_FES_DEV_MAP.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ACC.xml b/resource/en/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ACC.xml new file mode 100644 index 00000000..8271020c --- /dev/null +++ b/resource/en/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ACC.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ANA.xml b/resource/en/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ANA.xml new file mode 100644 index 00000000..ebb38da8 --- /dev/null +++ b/resource/en/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ANA.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_DIG.xml b/resource/en/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_DIG.xml new file mode 100644 index 00000000..7abe7f18 --- /dev/null +++ b/resource/en/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_DIG.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_MIX.xml b/resource/en/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_MIX.xml new file mode 100644 index 00000000..5fb8e367 --- /dev/null +++ b/resource/en/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_MIX.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/TRIGGER_CONDITION_DEFINE.xml b/resource/en/model_studio/setting/table/TRIGGER_CONDITION_DEFINE.xml new file mode 100644 index 00000000..06bf75f1 --- /dev/null +++ b/resource/en/model_studio/setting/table/TRIGGER_CONDITION_DEFINE.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/TRIGGER_FUNCTION_DEFINE.xml b/resource/en/model_studio/setting/table/TRIGGER_FUNCTION_DEFINE.xml new file mode 100644 index 00000000..4587cf95 --- /dev/null +++ b/resource/en/model_studio/setting/table/TRIGGER_FUNCTION_DEFINE.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/TRIGGER_PERIOD_DEFINE.xml b/resource/en/model_studio/setting/table/TRIGGER_PERIOD_DEFINE.xml new file mode 100644 index 00000000..f08960eb --- /dev/null +++ b/resource/en/model_studio/setting/table/TRIGGER_PERIOD_DEFINE.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/TRIGGER_TIMER_DEFINE.xml b/resource/en/model_studio/setting/table/TRIGGER_TIMER_DEFINE.xml new file mode 100644 index 00000000..cb611fab --- /dev/null +++ b/resource/en/model_studio/setting/table/TRIGGER_TIMER_DEFINE.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/sample.xml b/resource/en/model_studio/setting/table/sample.xml new file mode 100644 index 00000000..dcaee87b --- /dev/null +++ b/resource/en/model_studio/setting/table/sample.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/sys_model_app_info.xml b/resource/en/model_studio/setting/table/sys_model_app_info.xml new file mode 100644 index 00000000..2dc96122 --- /dev/null +++ b/resource/en/model_studio/setting/table/sys_model_app_info.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/sys_model_dbconfig_domain.xml b/resource/en/model_studio/setting/table/sys_model_dbconfig_domain.xml new file mode 100644 index 00000000..b4c65075 --- /dev/null +++ b/resource/en/model_studio/setting/table/sys_model_dbconfig_domain.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/sys_model_dbconfig_node.xml b/resource/en/model_studio/setting/table/sys_model_dbconfig_node.xml new file mode 100644 index 00000000..c1390571 --- /dev/null +++ b/resource/en/model_studio/setting/table/sys_model_dbconfig_node.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/sys_model_deploy_info.xml b/resource/en/model_studio/setting/table/sys_model_deploy_info.xml new file mode 100644 index 00000000..e90404e4 --- /dev/null +++ b/resource/en/model_studio/setting/table/sys_model_deploy_info.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/sys_model_domain_info.xml b/resource/en/model_studio/setting/table/sys_model_domain_info.xml new file mode 100644 index 00000000..393d6aa6 --- /dev/null +++ b/resource/en/model_studio/setting/table/sys_model_domain_info.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/sys_model_location_info.xml b/resource/en/model_studio/setting/table/sys_model_location_info.xml new file mode 100644 index 00000000..d37bb703 --- /dev/null +++ b/resource/en/model_studio/setting/table/sys_model_location_info.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/sys_model_node_info.xml b/resource/en/model_studio/setting/table/sys_model_node_info.xml new file mode 100644 index 00000000..486b1d2b --- /dev/null +++ b/resource/en/model_studio/setting/table/sys_model_node_info.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/sys_model_process_info.xml b/resource/en/model_studio/setting/table/sys_model_process_info.xml new file mode 100644 index 00000000..dc481faa --- /dev/null +++ b/resource/en/model_studio/setting/table/sys_model_process_info.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/en/model_studio/setting/table/sys_model_sub_system_info.xml b/resource/en/model_studio/setting/table/sys_model_sub_system_info.xml new file mode 100644 index 00000000..4305c504 --- /dev/null +++ b/resource/en/model_studio/setting/table/sys_model_sub_system_info.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/en/model_studio/setting/tree/TriggerFuncTree.xml b/resource/en/model_studio/setting/tree/TriggerFuncTree.xml new file mode 100644 index 00000000..b2aa8d8c --- /dev/null +++ b/resource/en/model_studio/setting/tree/TriggerFuncTree.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/TriggerParaTree.xml b/resource/en/model_studio/setting/tree/TriggerParaTree.xml new file mode 100644 index 00000000..e720d409 --- /dev/null +++ b/resource/en/model_studio/setting/tree/TriggerParaTree.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/alarmTree.xml b/resource/en/model_studio/setting/tree/alarmTree.xml new file mode 100644 index 00000000..524fc94b --- /dev/null +++ b/resource/en/model_studio/setting/tree/alarmTree.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/app.json b/resource/en/model_studio/setting/tree/app.json new file mode 100644 index 00000000..d104d68c --- /dev/null +++ b/resource/en/model_studio/setting/tree/app.json @@ -0,0 +1,6 @@ +{ +"tree": "app.xml", +"table": "sys_model_process_info.xml", +"where": "%1='-1' OR APP_ID='%1' ORDER BY APP_ID,RUN_ORDER", +"columnNameInTree": "APP_ID" +} \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/app.xml b/resource/en/model_studio/setting/tree/app.xml new file mode 100644 index 00000000..0ccd288d --- /dev/null +++ b/resource/en/model_studio/setting/tree/app.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/autoRelation.json b/resource/en/model_studio/setting/tree/autoRelation.json new file mode 100644 index 00000000..df45a826 --- /dev/null +++ b/resource/en/model_studio/setting/tree/autoRelation.json @@ -0,0 +1,27 @@ +{ + "acc": { + }, + "ana": { + }, + "anaCtrl": { + }, + "comment": { + "IA": "IA", + "Pos": "PosOn,PosOff", + "c": "以下内容大小写敏感,例如" + }, + "dig": { + "PTRkd": "PTRkdOut,PTRkdIn", + "Pos": "PosOff,PosOn", + "Rkd": "RkdOut,RkdIn", + "sRkd": "sRkdOut,sRkdIn" + }, + "digCtrl": { + "NRT": "RsOper", + "Pos": "Oper" + }, + "mix": { + }, + "mixCtrl": { + } +} \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/calcFunc.xml b/resource/en/model_studio/setting/tree/calcFunc.xml new file mode 100644 index 00000000..a93b2fcb --- /dev/null +++ b/resource/en/model_studio/setting/tree/calcFunc.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/chan.xml b/resource/en/model_studio/setting/tree/chan.xml new file mode 100644 index 00000000..091b9041 --- /dev/null +++ b/resource/en/model_studio/setting/tree/chan.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/resource/en/model_studio/setting/tree/commonTree.xml b/resource/en/model_studio/setting/tree/commonTree.xml new file mode 100644 index 00000000..76ad3643 --- /dev/null +++ b/resource/en/model_studio/setting/tree/commonTree.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resource/en/model_studio/setting/tree/ctrlActDefine.xml b/resource/en/model_studio/setting/tree/ctrlActDefine.xml new file mode 100644 index 00000000..6078600c --- /dev/null +++ b/resource/en/model_studio/setting/tree/ctrlActDefine.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/en/model_studio/setting/tree/deploy.json b/resource/en/model_studio/setting/tree/deploy.json new file mode 100644 index 00000000..bdd41b98 --- /dev/null +++ b/resource/en/model_studio/setting/tree/deploy.json @@ -0,0 +1,6 @@ +{ +"tree": "deploy.xml", +"table": "sys_model_deploy_info.xml", +"where": "%1='-1' OR DOMAIN_ID='%1'", +"columnNameInTree": "DOMAIN_ID" +} \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/deploy.xml b/resource/en/model_studio/setting/tree/deploy.xml new file mode 100644 index 00000000..6bce208c --- /dev/null +++ b/resource/en/model_studio/setting/tree/deploy.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/devInstListTree.xml b/resource/en/model_studio/setting/tree/devInstListTree.xml new file mode 100644 index 00000000..bfbbedad --- /dev/null +++ b/resource/en/model_studio/setting/tree/devInstListTree.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/devInstTree.xml b/resource/en/model_studio/setting/tree/devInstTree.xml new file mode 100644 index 00000000..91a54638 --- /dev/null +++ b/resource/en/model_studio/setting/tree/devInstTree.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/en/model_studio/setting/tree/devInstTreeAll.xml b/resource/en/model_studio/setting/tree/devInstTreeAll.xml new file mode 100644 index 00000000..3abf1c9d --- /dev/null +++ b/resource/en/model_studio/setting/tree/devInstTreeAll.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/resource/en/model_studio/setting/tree/devInstTreeDev.xml b/resource/en/model_studio/setting/tree/devInstTreeDev.xml new file mode 100644 index 00000000..3b800b30 --- /dev/null +++ b/resource/en/model_studio/setting/tree/devInstTreeDev.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/resource/en/model_studio/setting/tree/devInstTreeDevAndGrp.xml b/resource/en/model_studio/setting/tree/devInstTreeDevAndGrp.xml new file mode 100644 index 00000000..1822f698 --- /dev/null +++ b/resource/en/model_studio/setting/tree/devInstTreeDevAndGrp.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/en/model_studio/setting/tree/devInstTreeDevAndLocation.xml b/resource/en/model_studio/setting/tree/devInstTreeDevAndLocation.xml new file mode 100644 index 00000000..77c31acf --- /dev/null +++ b/resource/en/model_studio/setting/tree/devInstTreeDevAndLocation.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/en/model_studio/setting/tree/devInstTreeGrp.xml b/resource/en/model_studio/setting/tree/devInstTreeGrp.xml new file mode 100644 index 00000000..5d0b71c1 --- /dev/null +++ b/resource/en/model_studio/setting/tree/devInstTreeGrp.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/resource/en/model_studio/setting/tree/devInstTreeGrpAndLocation.xml b/resource/en/model_studio/setting/tree/devInstTreeGrpAndLocation.xml new file mode 100644 index 00000000..b40662f9 --- /dev/null +++ b/resource/en/model_studio/setting/tree/devInstTreeGrpAndLocation.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/en/model_studio/setting/tree/devInstTreeLocation.xml b/resource/en/model_studio/setting/tree/devInstTreeLocation.xml new file mode 100644 index 00000000..c4af0b1b --- /dev/null +++ b/resource/en/model_studio/setting/tree/devInstTreeLocation.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/resource/en/model_studio/setting/tree/devModelTree.xml b/resource/en/model_studio/setting/tree/devModelTree.xml new file mode 100644 index 00000000..eeee11ee --- /dev/null +++ b/resource/en/model_studio/setting/tree/devModelTree.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/devTempTree.xml b/resource/en/model_studio/setting/tree/devTempTree.xml new file mode 100644 index 00000000..9f4a6c44 --- /dev/null +++ b/resource/en/model_studio/setting/tree/devTempTree.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/expressionTree.xml b/resource/en/model_studio/setting/tree/expressionTree.xml new file mode 100644 index 00000000..053f799f --- /dev/null +++ b/resource/en/model_studio/setting/tree/expressionTree.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/fesDevInstListTree.xml b/resource/en/model_studio/setting/tree/fesDevInstListTree.xml new file mode 100644 index 00000000..0c118221 --- /dev/null +++ b/resource/en/model_studio/setting/tree/fesDevInstListTree.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/fesDevTreeAll.xml b/resource/en/model_studio/setting/tree/fesDevTreeAll.xml new file mode 100644 index 00000000..dfcc7a11 --- /dev/null +++ b/resource/en/model_studio/setting/tree/fesDevTreeAll.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/resource/en/model_studio/setting/tree/fesDevTreeDev.xml b/resource/en/model_studio/setting/tree/fesDevTreeDev.xml new file mode 100644 index 00000000..356d20fc --- /dev/null +++ b/resource/en/model_studio/setting/tree/fesDevTreeDev.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/resource/en/model_studio/setting/tree/fesDevTreeDevLocation.xml b/resource/en/model_studio/setting/tree/fesDevTreeDevLocation.xml new file mode 100644 index 00000000..ec80a847 --- /dev/null +++ b/resource/en/model_studio/setting/tree/fesDevTreeDevLocation.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/en/model_studio/setting/tree/fesDevTreeDevRTU.xml b/resource/en/model_studio/setting/tree/fesDevTreeDevRTU.xml new file mode 100644 index 00000000..54eee0d0 --- /dev/null +++ b/resource/en/model_studio/setting/tree/fesDevTreeDevRTU.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/en/model_studio/setting/tree/fesDevTreeLocation.xml b/resource/en/model_studio/setting/tree/fesDevTreeLocation.xml new file mode 100644 index 00000000..630090d0 --- /dev/null +++ b/resource/en/model_studio/setting/tree/fesDevTreeLocation.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/resource/en/model_studio/setting/tree/fesDevTreeLocationRTU.xml b/resource/en/model_studio/setting/tree/fesDevTreeLocationRTU.xml new file mode 100644 index 00000000..072bdfc4 --- /dev/null +++ b/resource/en/model_studio/setting/tree/fesDevTreeLocationRTU.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/en/model_studio/setting/tree/fesDevTreeRTU.xml b/resource/en/model_studio/setting/tree/fesDevTreeRTU.xml new file mode 100644 index 00000000..d250c933 --- /dev/null +++ b/resource/en/model_studio/setting/tree/fesDevTreeRTU.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/resource/en/model_studio/setting/tree/fesTree.xml b/resource/en/model_studio/setting/tree/fesTree.xml new file mode 100644 index 00000000..ad6ae74f --- /dev/null +++ b/resource/en/model_studio/setting/tree/fesTree.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/resource/en/model_studio/setting/tree/location.json b/resource/en/model_studio/setting/tree/location.json new file mode 100644 index 00000000..54de0fde --- /dev/null +++ b/resource/en/model_studio/setting/tree/location.json @@ -0,0 +1,6 @@ +{ +"tree": "location.xml", +"table": "sys_model_node_info.xml", +"where": "%1='-1' OR LOCATION_ID='%1'", +"columnNameInTree": "LOCATION_ID" +} \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/location.xml b/resource/en/model_studio/setting/tree/location.xml new file mode 100644 index 00000000..5023ee86 --- /dev/null +++ b/resource/en/model_studio/setting/tree/location.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/lockDefineTree.xml b/resource/en/model_studio/setting/tree/lockDefineTree.xml new file mode 100644 index 00000000..220d6355 --- /dev/null +++ b/resource/en/model_studio/setting/tree/lockDefineTree.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/mainWindow.xml b/resource/en/model_studio/setting/tree/mainWindow.xml new file mode 100644 index 00000000..4c1f7016 --- /dev/null +++ b/resource/en/model_studio/setting/tree/mainWindow.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + diff --git a/resource/en/model_studio/setting/tree/optLockPara.xml b/resource/en/model_studio/setting/tree/optLockPara.xml new file mode 100644 index 00000000..1d08e75d --- /dev/null +++ b/resource/en/model_studio/setting/tree/optLockPara.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/pcs3000ImportData.json b/resource/en/model_studio/setting/tree/pcs3000ImportData.json new file mode 100644 index 00000000..c4abcbde --- /dev/null +++ b/resource/en/model_studio/setting/tree/pcs3000ImportData.json @@ -0,0 +1,52 @@ +{ + "电站设备": + { + "设备ID":"DEV_ID", + "设备类型":"DEV_MODEL", + "设备名称":"DESCRIPTION", + "设备标签":"TAG_NAME", + "端口":"DEV_PORT" + }, + "YC类型": + { + "属于的设备ID":"DEV_ID", + "点名缩写":"TAG_NAME", + "系数":"RATIO", + "远动号":"REMOTE_NO", + "点描述":"DESCRIPTION" + }, + "YX类型": + { + "属于的设备ID":"DEV_ID", + "点名缩写":"TAG_NAME", + "远动号":"REMOTE_NO", + "点描述":"DESCRIPTION" + }, + "YK类型": + { + "属于的设备ID":"DEV_ID", + "远动号":"REMOTE_NO", + "点名缩写":"TAG_NAME", + "点描述":"DESCRIPTION" + }, + "YM类型": + { + "属于的设备ID":"DEV_ID", + "点名缩写":"TAG_NAME", + "系数":"RATIO", + "修正值":"REVISE", + "远动号":"REMOTE_NO", + "点描述":"DESCRIPTION" + }, + "DZ类型": + { + "属于的设备ID":"DEV_ID", + "定值组号":"GROUP_NO", + "定值代号":"SEQ_NO", + "定值序号":"DZ_SEQ", + "装置系数":"RATIO", + "修正值":"REVISE", + "数值描述文件":"VALUE_TEXT", + "点描述":"DESCRIPTION" + } +} \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/pcs3000ToFes.json b/resource/en/model_studio/setting/tree/pcs3000ToFes.json new file mode 100644 index 00000000..a84742f5 --- /dev/null +++ b/resource/en/model_studio/setting/tree/pcs3000ToFes.json @@ -0,0 +1,72 @@ +{ + "Device": + { + "设备型号":"TAG_NAME,DEV_MODEL", + "设备描述":"DESCRIPTION" + }, + "YC": + { + "功能号":"FUN_CODE,RES_PARA_INT2", + "信息号":"INFO_NO,RES_PARA_INT3", + "修正值":"REVISE", + "附加值":"APPEND,RES_PARA_INT5", + "点描述":"DESCRIPTION", + "装置系数":"RATIO", + "点名缩写":"TAG_NAME,SHORT_NAME" + }, + "YX": + { + "功能号":"FUN_CODE,RES_PARA_INT2", + "信息号":"INFO_NO,RES_PARA_INT3", + "点描述":"DESCRIPTION", + "点名缩写":"TAG_NAME,SHORT_NAME", + "关联遥信点ID":"ASS_DIG", + "遥信属性":"ATTR", + "自定义#1":"RES_PARA_INT4" + }, + "YM": + { + "功能号":"FUN_CODE,RES_PARA_INT2", + "信息号":"INFO_NO,RES_PARA_INT3", + "修正值":"REVISE", + "点描述":"DESCRIPTION", + "装置系数":"RATIO", + "点名缩写":"TAG_NAME,SHORT_NAME" + }, + "BLOCK": + { + "功能码":"FUNC_CODE", + "起始地址":"STAR_ADDR", + "寄存器长度":"DATA_LEN", + "寄存器类型":"DATA_FARME_TYPE", + "轮巡时间":"REF_CYCLE", + "生成SOE":"IS_CREATE_SOE" + }, + "YK": + { + "功能号":"FUN_CODE,RES_PARA_INT2", + "信息号":"INFO_NO,RES_PARA_INT3", + "点描述":"DESCRIPTION", + "点名缩写":"TAG_NAME", + "遥控属性":"ATTR", + "遥控参数":"CTRL_TYPE", + "自定义#1":"RES_PARA_INT4" + }, + "DZ": + { + "定值组号":"GROUP_NO", + "修正值":"VALUE", + "定值代号":"SEQ_NO", + "点描述":"DESCRIPTION", + "装置系数":"VALUE_RATIO", + "定值序号":"DZ_SEQ", + "数值描述文件":"VALUE_TEXT" + }, + "AO": + { + "装置系数":"RATIO", + "修正值":"REVISE", + "定值代号":"SEQ_NO", + "点描述":"DESCRIPTION" + } +} diff --git a/resource/en/model_studio/setting/tree/projec.xml b/resource/en/model_studio/setting/tree/projec.xml new file mode 100644 index 00000000..0a7e99f6 --- /dev/null +++ b/resource/en/model_studio/setting/tree/projec.xml @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/rt.json b/resource/en/model_studio/setting/tree/rt.json new file mode 100644 index 00000000..9a5fff8e --- /dev/null +++ b/resource/en/model_studio/setting/tree/rt.json @@ -0,0 +1,6 @@ +{ +"tree": "rtTree.xml", +"table": "RT_COLUMN_MODE.xml", +"where": "TABLE_NAME='%1' ORDER BY COLUMN_NO", +"columnNameInTree": "TABLE_NAME" +} \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/rtTree.xml b/resource/en/model_studio/setting/tree/rtTree.xml new file mode 100644 index 00000000..a1c8cd77 --- /dev/null +++ b/resource/en/model_studio/setting/tree/rtTree.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/rtuList.xml b/resource/en/model_studio/setting/tree/rtuList.xml new file mode 100644 index 00000000..99858df6 --- /dev/null +++ b/resource/en/model_studio/setting/tree/rtuList.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/resource/en/model_studio/setting/tree/sampleTree.xml b/resource/en/model_studio/setting/tree/sampleTree.xml new file mode 100644 index 00000000..74d548f2 --- /dev/null +++ b/resource/en/model_studio/setting/tree/sampleTree.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/statInstInput.xml b/resource/en/model_studio/setting/tree/statInstInput.xml new file mode 100644 index 00000000..6d47dff4 --- /dev/null +++ b/resource/en/model_studio/setting/tree/statInstInput.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/statInstOutput.xml b/resource/en/model_studio/setting/tree/statInstOutput.xml new file mode 100644 index 00000000..8beace5b --- /dev/null +++ b/resource/en/model_studio/setting/tree/statInstOutput.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/stateTextTree.xml b/resource/en/model_studio/setting/tree/stateTextTree.xml new file mode 100644 index 00000000..2737b01e --- /dev/null +++ b/resource/en/model_studio/setting/tree/stateTextTree.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/en/model_studio/setting/tree/staticsTree.xml b/resource/en/model_studio/setting/tree/staticsTree.xml new file mode 100644 index 00000000..71e0eaba --- /dev/null +++ b/resource/en/model_studio/setting/tree/staticsTree.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/en/model_studio/setting/tree/sysConfigTree.xml b/resource/en/model_studio/setting/tree/sysConfigTree.xml new file mode 100644 index 00000000..ec7f10c1 --- /dev/null +++ b/resource/en/model_studio/setting/tree/sysConfigTree.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/resource/en/model_studio/setting/tree/textDefine.outline b/resource/en/model_studio/setting/tree/textDefine.outline new file mode 100644 index 00000000..10a10d29 --- /dev/null +++ b/resource/en/model_studio/setting/tree/textDefine.outline @@ -0,0 +1,6 @@ +{ +"tree": "textDefine.xml", +"table": "DICT_TEXT_DEFINE.xml", +"where": "CLASS_NAME='%1'", +"columnNameInTree": "CLASS_NAME" +} \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/textDefine.xml b/resource/en/model_studio/setting/tree/textDefine.xml new file mode 100644 index 00000000..f05c9b9c --- /dev/null +++ b/resource/en/model_studio/setting/tree/textDefine.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/resource/en/model_studio/setting/tree/userTree.xml b/resource/en/model_studio/setting/tree/userTree.xml new file mode 100644 index 00000000..28ba8d6f --- /dev/null +++ b/resource/en/model_studio/setting/tree/userTree.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + diff --git a/resource/en/model_studio/translate/Common_config_plugin_EN.qm b/resource/en/model_studio/translate/Common_config_plugin_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..dec02af1c0636dcca4b4457ad8630ef34d97e2a7 GIT binary patch literal 15233 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 + + + + CommonWidget + + + + 添加记录 + Add Record + + + + + 删除记录 + Delete Record + + + + + 撤销更改 + Undo Changes + + + + + + 保存 + Save + + + + + Excel导出 + Export to Excel + + + + + Excel导入 + Import from Excel + + + + 模拟量 + Analog Quantity + + + + 数字量 + Digital Quantity + + + + 混合量 + Mixed Quantity + + + + 累积量 + Cumulative Quantity + + + + + 输出测点 %1 格式不正确 + Output point %1 format is incorrect + + + + + + 数据库查询错误 + Database query error + + + + + + 输出测点%1 不存在对应的车站和专业信息 + Output point %1 does not have corresponding station and professional information + + + + 超时输出测点 %1 格式不正确 + Timeout output point %1 format is incorrect + + + + 输出测点和超时输出测点不属于同一个车站与专业 + Output point and timeout output point do not belong to the same station and profession + + + + + + + + 消息 + Message + + + + + 文件打开不成功 + File open failed + + + + 导出配置成功! +导出路径: + Export configuration successful! +Export path: + + + + 保存失败 + Save failed + + + + 导出失败:%1 + Export failed: %1 + + + + 打开文件 + Open File + + + + 导入失败:%1 + Import failed: %1 + + + + 导入成功 + Import successful + + + + KbdApcAnaWidget + + + 添加记录 + Add Record + + + + 删除记录 + Delete Record + + + + + + + + + + + + + + + 消息 + Message + + + + 输出测点 %1 格式不正确,请重新输入 + Output point %1 format is incorrect, please re-enter + + + + + + + 数据库查询错误 + Database query error + + + + 输出测点%1 不存在对应的车站和专业信息 + Output point %1 does not have corresponding station and professional information + + + + 超时输出测点 %1 格式不正确 + Timeout output point %1 format is incorrect + + + + 超时输出测点%1 不存在对应的车站和专业信息 + Timeout output point %1 does not have corresponding station and professional information + + + + 超时输出测点与输出测点不是同一个车站和专业 + Timeout output point and output point are not from the same station and profession + + + + 输出测点或者超时状态输出DI点 格式不正确,请重新输入 + Output point or timeout status output DI point format is incorrect, please re-enter + + + + + 不存在对应的车站和专业信息 + Corresponding station and professional information does not exist + + + + 所选的输出测点和超时输出测点不是同一个车站 + The selected output point and timeout output point are not from the same station + + + + 所选的输出测点和超时输出测点不是同一个专业 + The selected output point and timeout output point are not from the same profession + + + + 添加失败 + Add failed + + + + 是否删除? + Are you sure you want to delete? + + + + 删除失败 + Delete failed + + + + 修改失败 + Modify failed + + + + 此次修改失败,已启动回滚! + This modification failed, rollback has been initiated! + + + + 回滚事务失败! + Rollback transaction failed! + + + + KbdApcDigWidget + + + 添加记录 + Add Record + + + + 删除记录 + Delete Record + + + + + + + + + + + 消息 + Message + + + + 输出测点 %1 格式不正确,请重新输入 + Output point %1 format is incorrect, please re-enter + + + + 数据库查询错误 + Database query error + + + + 输出测点%1 不存在对应的车站和专业信息 + Output point %1 does not have corresponding station and professional information + + + + 添加失败 + Add failed + + + + 是否删除? + Are you sure you want to delete? + + + + 删除失败 + Delete failed + + + + 修改失败 + Modify failed + + + + 此次修改失败,已启动回滚! + This modification failed, rollback has been initiated! + + + + 回滚事务失败! + Rollback transaction failed! + + + + KbdCtrlActWidget + + + + 添加记录 + Add Record + + + + 修改记录 + Modify Record + + + + + 删除记录 + Delete Record + + + + 撤销更改 + Undo Changes + + + + 保存 + Save + + + + 请选中要添加的专业 + Please select the professional to add + + + + 动作名%1 + Action Name %1 + + + + 组名不允许为空! + Group name cannot be empty! + + + + 修改失败 + Modify failed + + + + 修改成功 + Modify succeeded + + + + 请选中要删除的数字量文本 + Please select the numerical text to delete + + + + 删除失败 + Delete failed + + + + 删除成功 + Delete succeeded + + + + 请选中对应的控制动作组 + Please select the corresponding control action group + + + + 无法获得分量数 + Unable to obtain the number of components + + + + + + 消息 + Message + + + + 此次修改失败,已启动回滚! + This modification failed, rollback has been initiated! + + + + KbdLockDefineWidget + + + 添加 + Add + + + + 删除 + Delete + + + + 修改 + Modify + + + + 闭锁函数定义 + Lock Function Definition + + + + 保存 + Save + + + + 请选中要添加的专业! + Please select the professional to add! + + + + + 请选中要删除的闭锁函数! + Please select the lock function to delete! + + + + + 写入数据库不成功 + Failed to write to database + + + + 删除成功 + Delete succeeded + + + + 修改成功 + Modify succeeded + + + + 保存成功 + Save succeeded + + + + + + + 消息 + Message + + + + 闭锁函数修改未提交,是否提交到数据库? + The lock function modification is not submitted, do you want to submit it to the database? + + + + 此次修改失败,已启动回滚! + This modification failed, rollback has been initiated! + + + + KbdLockParaWidget + + + 设备实例 + Device Instance + + + + 请输入DO描述关键字 + Please enter the DO description keyword + + + + 添加记录 + Add Record + + + + 修改记录 + Modify Record + + + + 删除记录 + Delete Record + + + + Excel导出 + Export to Excel + + + + Excel导入 + Import from Excel + + + + 添加闭锁参数配置 + Add Lock Parameter Configuration + + + + 累计量无闭锁出口 + Cumulative amount has no lock outlet + + + + 获取%1 信息失败! + Failed to get %1 information! + + + + 添加成功 + Add succeeded + + + + 修改成功 + Modify succeeded + + + + 写入数据库不成功 + Failed to write to database + + + + 删除成功 + Delete succeeded + + + + + + 消息 + Message + + + + 此次修改失败,已启动回滚! + This modification failed, rollback has been initiated! + + + + KbdOutLineWidget + + + + 添加记录 + Add Record + + + + + 删除记录 + Delete Record + + + + 撤销更改 + Undo Changes + + + + 保存 + Save + + + + 删除失败 + Delete Failed + + + + 删除成功 + Delete Succeeded + + + + + + 消息 + Message + + + + 此次修改失败,已启动回滚! + This modification failed, rollback has been initiated! + + + + KbdSelctLockParaDlg + + + 数字量出口 + Digital Output + + + + 模拟量出口 + Analog Output + + + + 枚举量出口 + Enumerated Output + + + + 在本车站,本专业中挑选具有相同描述的测点 + Select measurement points with the same description in this station and profession + + + + <<删除 + <<Delete + + + + 该测点 +已挑选 + This measurement point has been selected + + + + 消息 + Message + + + + 请先选中测点 + Please select a measurement point first + + + + KbdStateTextWidget + + + + 添加记录 + Add Record + + + + + 删除记录 + Delete Record + + + + 撤销更改 + Undo Changes + + + + 保存 + Save + + + + 请选中要添加的专业 + Please select the profession to add + + + + 请选中要删除的数字量文本 + Please select the digital text to delete + + + + 删除失败 + Delete Failed + + + + 删除成功 + Delete Successful + + + + 请选中对应的数字量文本 + Please select the corresponding digital text + + + + + + 消息 + Message + + + + 此次修改失败,已启动回滚! + The modification failed, rollback has been initiated! + + + diff --git a/resource/en/model_studio/translate/expression_plugin_EN.qm b/resource/en/model_studio/translate/expression_plugin_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..c88c0d0d2cf209aa8d522d3d5136e0ff9bccf901 GIT binary patch literal 3869 zcmb7HZA@Eb6h1As18gaq&H%DmRF)+Yl12AJq9_AhShhfzAJO<@9WBs=(F#Sk#1Alh zlo^H!xWP6Z5thY;c1vdXlCijdOH7viGST_N^xn3a%bfbdk7e;W_qDgTrMDN-l=r^9 z?|II7&w0)V&&|7wuH88`{(V{L%7Llno4bfixm3F4St84?RNh!jWd4qZZ@Gx_Z<=~< z%o9C$+jJxFA(8cG(@*cuV4W~K^54Y!H_Rm?FVTRj023m4K}@a;v7onG6*RU67W?^)0PVxv3L; z@B#2$KzZ@(!L#@!07vuAt#HOg2eEc(NKhmVOi2AR^7sXLI3z8Ce#1t$*ap?zh+T7n zgn+Mu5)MX(qCSG79rn>l3fCZ^e5b^!V|v9+#-XT24Et5^JNvBE?(Sv2JEn!nc`i6grsN0m!Vj zLELV&ZgyQKEDBJiN`wZj+amL`74oSe>D%$>*g1K2S_%$Cm-_1Ks>*j%#KLn@e^3gZ ziBC+61ChmnSa?R9iB9$jAYIRsO$p!sw^Q|71){!~haqQTfH1c_D`E2z3 zL}X=3?hPA~`hHqrbU0Cje2V^nZc*b>6~H;wM?YFvRn3$Jfl3v-JSq(?;zW8~Lpf8W_1RZNwK~3SNby{w>S-qi zD!x@Ru{H}mswGnJcx>vNzRtaAjRMV8X%yTYlg&(29Bv3*N}RbWFxOgfMiW&v-HK4u z<2^%gloVc&7ROZI=o?bECPOsJ6!Um$I0O^KG?g4hA5{&Ao$VDP$r^0fvnCtTDVRt~ zZI4Z+T&dO)QK;3PmSvP%n>)nt=s_H~Bk)Wn#wHinPR#(BVuUC>Yy`US#icApY*SJ{ zk+83UoIIcL6vl0HHTgC%?fPe=krVO35hLauL{kuBh?a9a_@;0QJCU~?xFd6t$0{$q zjn$)6nzYdnCwOe)!KhQ^<90ztl>!(OrLk~izNbQ+9OGjXv2a+QpSv;^Vor<>e7Gr# ugkeS|X23MlRC6}RM=#6Al2fZuTgu!7)}>oRhDS1L*P%fW|F)S;rvCuuQ7Jb7 literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/translate/expression_plugin_EN.ts b/resource/en/model_studio/translate/expression_plugin_EN.ts new file mode 100644 index 00000000..f2f80351 --- /dev/null +++ b/resource/en/model_studio/translate/expression_plugin_EN.ts @@ -0,0 +1,184 @@ + + + + + ExpressionWidget + + + + + 添加记录 + Add Record + + + + + + 删除记录 + Delete Record + + + + + 撤销更改 + Undo Changes + + + + + 保存 + Save + + + + 添加 + Add + + + + 删除 + Delete + + + + 函数定义 + Function Definition + + + + 测试 + Test + + + + 位置 + Location + + + + 专业 + Specialty + + + + 修改记录 + Modify Record + + + + 计算输出点列表 + Calculation Output Point List + + + + 保存更改 + Save Changes + + + + 输入变量列表 + Input Variable List + + + + + 所有 + All + + + + 链接数据库失败! + Failed to connect to the database! + + + + 函数定义中,有引用此分组ID:%1,请先删除引用了该分组的函数 + In the function definition, there are references to this group ID: %1. Please delete the functions that reference this group first. + + + + 请选中要添加的分类! + Please select the category to add! + + + + + 请选中要删除的函数! + Please select the function to delete! + + + + 链接数据库失败 + Failed to connect to the database + + + + 计算点中,有引用此函数的输出点:%1,请先删除该计算点 + In the calculation point, there are output points that reference this function: %1. Please delete this calculation point first. + + + + + 写入数据库不成功 + Failed to write to the database + + + + + 删除成功 + Delete Successful + + + + 保存成功 + Save Successful + + + + + + 获取车站信息失败! + Failed to get station information! + + + + 添加失败 + Add Failed + + + + 添加成功 + Add Successful + + + + 请选中要修改的输出 + Please select the output to modify + + + + 选中的输出不唯一,数据库错误 + The selected output is not unique, database error + + + + 修改失败! + Modification Failed! + + + + 修改成功 + Modification Successful + + + + 删除R失败! + Delete R Failed! + + + + 请选中对应的输出 + Please select the corresponding output + + + diff --git a/resource/en/model_studio/translate/model_common_EN.qm b/resource/en/model_studio/translate/model_common_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..01ff5ab5f9bec19afc91d6d68abc250c00c5a99b GIT binary patch literal 801 zcmaJ<-z$S*6h1SI8{e%W#-%HTJLN|xO3Ytiw&BxkHJcxIR>rqhxIv_5nP0_5WE9P{ zlD|Mw-tXJ4cICnq&-uopjo!}to^v|qJkNQ0Td(Yu_nGarhq~(IaOC!>lZe`lYD+Is zQFC$YcoOk@@oUKok>R`~z59sxs-nJ0LTr~zXCH`3s&#RlBE2;}salc${}3$HP6?NCt0?IXep90}5Gq&e!F3s7fs-#LBuB zRMhR`*JK2ei|ASEVlQ*!&)a8+26b>N09Zi2Sr!`zFr9HdYtx}wD*j8~G=EBH1|?ai n>CF+TNyQT)prq%6YUn7n@6W2LZ7qn!fQViH;-cW|6&VblduYkV literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/translate/model_common_EN.ts b/resource/en/model_studio/translate/model_common_EN.ts new file mode 100644 index 00000000..cd1f2429 --- /dev/null +++ b/resource/en/model_studio/translate/model_common_EN.ts @@ -0,0 +1,48 @@ + + + + + QObject + + + 获取版本信息失败! + Failed to obtain version information! + + + + 模拟量 + Analog Quantity + + + + 数字量 + Digital Quantity + + + + 混合量 + Mixed Quantity + + + + 确定删除? + Are you sure you want to delete? + + + + 请先选择要删除的内容 + Please select the content to delete first + + + + 累积量 + Accumulative Quantity + + + + + 消息 + Message + + + diff --git a/resource/en/model_studio/translate/model_linkage_EN.qm b/resource/en/model_studio/translate/model_linkage_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..52c6a4c689d93293cb7cd45a16190998ad463b72 GIT binary patch literal 9980 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 literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/translate/model_linkage_EN.ts b/resource/en/model_studio/translate/model_linkage_EN.ts new file mode 100644 index 00000000..1ca8bb87 --- /dev/null +++ b/resource/en/model_studio/translate/model_linkage_EN.ts @@ -0,0 +1,612 @@ + + + + + CctvActDlg + + + 选择监视器: + Select monitor: + + + + 单画面 + Single camera + + + + 四画面 + Four Camera + + + + 九画面 + Nine camera + + + + 序列显示 + serial display + + + + 选择车站: + select location: + + + + 选择摄像机: + Select camera: + + + + 选择预设位: + Select orient location: + + + + 选择序列 + Selece series + + + + 序号 + Sequence number + + + + 摄像机 + Camera + + + + + + 消息 + Message + + + + 已经存在,无法添加! + Can't be added,alreay existed! + + + + 提交事务失败,已回滚 + Commit transaction failed,rolled back + + + + 开启事务失败 + Start transaction failed + + + + 添加成功 + Add succcess + + + + 修改成功 + modify success + + + + KbdPeriodDlg + + + 名称 + Name + + + + 描述 + Description + + + + 开始时间 + Start time + + + + 结束时间 + End time + + + + 月 + Month + + + + 1:星期一/2:星期二/3:星期三/4:星期四/5:星期五/6:星期六/0:星期天 + 1:Monday/2:Tuesday/3:Wednesday/4:Thursday/5:Friday/6:Saturday/0:Sunday + + + + 日 + Day + + + + 时 + Hour + + + + 分 + Minute + + + + 秒 + Second + + + + + 消息 + Message + + + + 名称为空 + Name is null + + + + 描述为空 + Description is null + + + + Linkage + + + + + + + + + + + + + + 联动动作定义错误 + Linkage action define error + + + + + + + + + + + + + + 添加成功 + Add success + + + + + + + + + + + + + + 修改成功 + Modify success + + + + + 动作内容错误 + Action content error + + + + 发布内容包含非法字符*,请替换掉*字符 + Content posting contains illegal characters*, please replace * characters + + + + + + + + + 消息 + Message + + + + + 该动作未定义: + Not define the action: + + + + 以下功能使用了该动作,请先修改对应功能设置! + + The following functions use this action,please modify the corresponding function settings first! + + + + + + + + + + 删除成功 + Delete success + + + + 功能名称重复 + Function name repeat + + + + + 以下联动使用了该功能,请先修改对应联动设置! + + The following linkage uses this function,please modify the corresponding linkage settings first! + + + + + + + + 请先保存修改 + Please save modify first + + + + 请选中要添加的功能 + Please select the function want to add + + + + + 请选中要修改的行 + Please select the line to modify + + + + 如果此联动正在执行或者已触发会导致联动终止,确定删除? + If this linkage is being executed or triggered, the linkage will be terminated and the deletion will be confirmed? + + + + 删除失败! + Delete failed! + + + + 请选中要修改的条目 + Please select items to modify + + + + 提交事务失败,已回滚 + Transaction submit failed,rollback has started + + + + PeriodWidget + + + 添加失败 + Add failed + + + + 添加成功 + Add success + + + + 修改失败 + Modify failed + + + + 修改成功 + Modify success + + + + 删除失败! + Delete failed! + + + + 删除成功 + Delete success + + + + + + 消息 + Message + + + + 提交事务失败,已回滚 + Transaction submit failed,rollback has started + + + + QObject + + + 联动动作 + Linkage action + + + + 联动功能 + Linkage function + + + + 联动定义 + Linkage define + + + + 触发定义 + Trigger define + + + + 动作类型 + Action type + + + + 动作列表 + Action list + + + + 搜索动作描述 + Search action description + + + + + + + + + 添加 + Add + + + + + + + + 修改 + Modify + + + + + + + + + 删除 + Delete + + + + 功能类型 + Function type + + + + 功能列表 + Function list + + + + 功能所含动作列表 + List of actions included in the function + + + + 搜索功能描述 + Search function description + + + + + 添加记录 + Add record + + + + + 修改记录 + Modify record + + + + + 删除记录 + Delete record + + + + 联动类型 + Linkage type + + + + 联动列表 + Linkage list + + + + 联动所含功能列表 + List of actions included in the linkage + + + + 搜索联动描述 + Search linkage description + + + + 触发类型 + Trigger type + + + + 0:定时触发/1:周期触发/2:触发函数/3:触发器定义 + 0:Timed trigger/1:Cycle trigger/2:Trigger function/3:Trigger definition + + + + 保存 + Save + + + + TriggerFuncWidget + + + 添加 + Add + + + + 删除 + Delete + + + + 函数定义 + Function define + + + + 保存 + Save + + + + 请选中要添加的专业! + Please select the subsystem to add! + + + + + 请选中要删除的触发函数! + Please select the trigger function you want to delete! + + + + + 写入数据库不成功 + Write into database failed + + + + 删除成功 + Delete success + + + + 保存成功 + Save success + + + + + + 消息 + Message + + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + + TriggerParaWidget + + + 添加 + Add + + + + 删除 + Delete + + + + 保存 + Save + + + + 请选中要添加的专业! + Please select the subSystem to add! + + + + + 请选中要删除的触发器! + Please select the trigger you want to delete! + + + + + 写入数据库不成功 + Write into database failed + + + + 删除成功 + Delete success + + + + 保存成功 + Save success + + + + + + 消息 + Message + + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + diff --git a/resource/en/model_studio/translate/model_plan_curve_EN.qm b/resource/en/model_studio/translate/model_plan_curve_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..fa4e86c12bc674eb4f94455a8a2095434619d530 GIT binary patch literal 8186 zcmb_hYitzP6+XL$^%};z#xIC*!_x9fY7%UchLQ>#Y^dC{5lu{zrmD(<*T!Ib$v$}W zM`b4vOdT+7c*ZYGc&6f&xOA~GP8+q6DkUmae^hFTDB77_r%nTE)S^@({qDV<+41hq z?1a>o_s-1D`R;emJ+FKGtw`OBKYY@C;QiU9BWwGIudg7oM~EiAN zN_5{D`_%8>#yorN({8;4B)=$Q{NzGz=^HHdk__DTo7pIK@DORyGlA7o|y_IKd% zR@U7=-i7?wq_J6*;D2m#;k&Dein=Dxy8nLM-*h-1`#Vvo&ym~v5K-QB$FgIOV+=Yf zJ2w%zs~x{zj`ycK9RGQD4v};uJ8NVOVl3E( zu@Lt+#aIx*=)rxN81o^&=mFfkMWOpbE6PwDQ9Mp}&}^XWPAL9PX#K_mIy#_}$z zrLc+Y;H$>660M>DH5$x1xZhYZkDkFwLzp>`URvIH)=avVHgH*k70X>+#?lhz4jbuO zIdsBU(m_99n$q?sOF4Yr_-!Zl-%HKp)82OjT{(0~Irl4h-=5g13rtq3s$N&q67mJ= zz3YW7tfRS9P99o{zZICT0UB<>HMb3n>w(&WUqAHcp>=qJeKz8~23!Yl7lL-!JK~Cc z@55akMu9O~V>D-Oxo4?IzS1h6>HxWDWKaC%Vfpx}=-}Si&}&LhA0EzTGz+U%H+fsC z!htQmV3oh6zOf-35Og;h&~4@h&8U1i$_X3;+THDGXm_`p(f%Ainhw$~&1B6JgzYue zR$tBD;%y51YU)hhhoYU_Gq&ig#t|Lqk9b^7pX8acgy%aSZ33$rFk}W1pe@X(v}NYVKR+$vtocgQL}*Pi z5uuH_EHLH*c2zt8*0ad0F>`D9qdWJ+hR>PvYtiAe9H3h(-xF3baD13efICMcpVNam zgLp&ajWDi#RK_JzGe;0|h&B^K#k?ez@ngS?4v)n4pDt4l9aY{wARvq@9*?4%`(cDKe)z7p#?h+;}PFo18(RbK+* zV&?4!K1;K@n5xYo$>*=gJ5LBtH;0>-1ZUvr$Y5N5W#JxqW;c ziBw!FUmg$~xmmUe%anJX#`6qbm5(X9VqyHv{ff`@Pa&)LFlVO2%E{y zaprlgNa27Yi6Jtm$4b}!?k4_*q{}; z;z-PbxvC#l(!#)?Gf_q*3f(e1XF=V|ODa~EutIq~FGdqmtXfeEvqaEG?Q}w~Ur`;G z#n1m*d81Y7J0XltXd^=scre+=KvlCoeytJEd^=wxZDEC0bna9Gk_O=r?I?5SveL;i zuBfedvy3sUb+nA-t#q}FrLA_h%n;c5i^UT2?v^ovl@6D&v{9GKSfZFa%1YV>SMb3_ zQq%9@^JsrYuXf1C51O0LyrdKHdNruRtmpGi(|lYl*KBe+T5y0KKNa&3JAZEZ{N?7e zR3HPebH(_n0atY(9t3^X&eRrw=k<7xHw(2H^Of#5mEBk6_6sZzcXq}{cpuMLJL+U= z9e9tEAt_s!tc0FG>|q@iKiYvF&OU?{g>_v3Hw!}@eWSZNm`ufTEqY;oST1W1i$<}?QffoEjyt2sLCg_bu=mV{*=c$!?nOsdk5QrP z<;{=xzq-_eu5dK67nh%0d3|n$2dM*R0ko}IUuUE@Hgq;af_h%#C>W}$XMAwh0F#ML zY?f15cTqH~MeCX!1laM9opV&VL^fTh^3*GTybpY#6YXpLDJBEk)T%3AU$R*-R1Z!K ztUal#0zo^S$xeW_Vz~JlbZX@$37%H!)wNo|!%7&T;zY^v|15MK(3AQSRnGH#;fZ2P zZxH$tE4lYo52In{HxGS>uQSZeXglu9VPYYjvCl;D6&>1Ju5`DTqdF5NW2pkGPT|Jd z)2tL^=IX_tYO)>#U)G^y2T~S&5(zC~%%$Kl+PYimIK#SAJ^lJpErac@N+Oc180Kp% ze=#~uxMt07mZY2cKaN + + + + CCombBoxDelegate + + + 星期日 + Sunday + + + + 星期一 + Monday + + + + 星期二 + Tuesday + + + + 星期三 + Wednesday + + + + 星期四 + Thursday + + + + 星期五 + Friday + + + + 星期六 + Saturday + + + + 否 + No + + + + 是 + Yes + + + + CDbInterface + + + 日时段名称 + Name + + + + CPlanCurvesConfigure + + + CPlanCurvesConfigure + + + + + 类型配置 + Type Config + + + + 年时段配置 + Year Interval Config + + + + 周时段配置 + Week Interval Config + + + + 日时段模板配置 + Day Interval Temp Config + + + + 计划曲线配置 + PlanCurve Config + + + + 新建类型 + New Type + + + + + + + + + + 保存 + Save + + + + + + + 计划类型 + Plan Type + + + + + + + + + + 删除 + Delete + + + + 新建模板类型 + New Temp Type + + + + 日时段模板类型 + Day Interval Temp Type + + + + 新建年时段配置 + New Year Interval + + + + 新建周时段配置 + New Week Interval + + + + 新建日时段配置 + New Day Interval + + + + + 日模板类型 + Day Temp Type + + + + + 新建计划曲线 + New PlanCurve + + + + 关联标签 + Related Tag + + + + 计划曲线名称 + Name + + + + 类型ID + Type ID + + + + 所属位置 + Location + + + + 所属专业 + Subsystem + + + + + 单位 + Unit + + + + 时段曲线配置 + Interval Curve Config + + + + 导入模板 + Import Temp + + + + 新建 + New + + + + 预览 + Preview + + + + + 否 + No + + + + 是 + Yes + + + + 星期日 + Sunday + + + + 星期一 + Monday + + + + 星期二 + Tuesday + + + + 星期三 + Wednesday + + + + 星期四 + Thursday + + + + 星期五 + Friday + + + + 星期六 + Saturday + + + + + + + ID + + + + + + 类型名称 + Name + + + + 年时段名称 + Name + + + + 是否例外 + isException + + + + 开始月 + Start Month + + + + 开始日 + Start Day + + + + 结束月 + End Month + + + + 结束日 + End Day + + + + 周时段名称 + Name + + + + 星期 + Week + + + + 年时段 + Year Interval + + + + 周时段 + Week Interval + + + + valueId + + + + + + + 日时段名称 + Name + + + + + 开始时间 + Start Time + + + + + 结束时间 + End Time + + + + + 值 + Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 提示 + Prompt + + + + + + + + 名称不能为空! + The name cannot be empty! + + + + + + + + + 保存成功! + Save Successfully! + + + + + + + + + 保存失败! + Save failed! + + + + 行: %1 结束时间不能小于开始时间! + Row:%1 End time cannot less than start time! + + + + 行: %1 与行:%2 时间段不连续! + Row: %1 is not discontinuous with Row: %2! + + + + 周时段配置需覆盖一整周 + Week interval configuration needs to cover the entire week + + + + %1 : 开始月不能大于结束月! + %1 : Begin month cannot be bigger than the end month! + + + + %1 : 开始日不能大于结束日! + %1 : Begin day cannot be bigger than the end day! + + + + + 年配置需要覆盖全年! + Year interval configuration need to cover the whole year! + + + + 请从1月1日开始配置! + Please start configuration from January 1st! + + + + 请配置到12月31日! + Please configure until December 31! + + + + 模拟量出口 + Analog output + + + + 是否删除曲线'%1'? + Delete curve '%1' ? + + + + 删除成功! + Delete successfully! + + + + 删除失败! + Delete failed! + + + + + + 计划类型为空,请检查类型配置! + The plan type is empty,please check type config! + + + + + 周时段配置被使用,无法保存! + Week interval configuration is in use, cannot be saved! + + + + 日模板类型为空,请检查类型配置! + The day temp type is empty,please check type config! + + + + + 请选择一条时段曲线! + Please select a time period curve! + + + + 未找到年描述 + No year description found + + + + 未找到周描述 + No week description found + + + + 导入失败 + Import failed + + + + 导入成功 + Import successfully + + + diff --git a/resource/en/model_studio/translate/model_plugin_EN.qm b/resource/en/model_studio/translate/model_plugin_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..37cb472c7267a8bc1312afb05a55695d9ab0027d GIT binary patch literal 164456 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
`U|f&i!-aKd@~p7QASr}}|^ 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 literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/translate/model_plugin_EN.ts b/resource/en/model_studio/translate/model_plugin_EN.ts new file mode 100644 index 00000000..9fc7d748 --- /dev/null +++ b/resource/en/model_studio/translate/model_plugin_EN.ts @@ -0,0 +1,7624 @@ + + + + + AlarmWidget + + + + + 添加记录 + Add record + + + + + + 删除记录 + Delete record + + + + + + 撤销更改 + Undo changes + + + + + + + + + 保存 + Save + + + + Excel导出 + ExcelExport + + + + Excel导入 + ExcelImport + + + + 所属告警状态选择 + Select alarm status + + + + + 添加<< + Add<< + + + + + 删除>> + Delete>> + + + + 告警动作选择 + Select alarm action + + + + + + 消息 + Message + + + + + + 是否保存当前预案 + Whether to save the current plan + + + + 超过了最大字符限制512 + Exceeded maximum character limit of 512 + + + + 保存成功! + Save successed! + + + + 设备实例 + Device instance + + + + 位置: + Location: + + + + 专业: + Subsystem: + + + + 设备测点 + Device point + + + + 只显示有预案的测点 + Only show points with plan + + + + 预案 + Plan + + + + 请选中对应的告警方式 + Please select the corresponding alarm method + + + + 保存不成功 + Save failed + + + + 保存成功 + Save successed + + + + 请选中对应告警等级 + Please select the corresponding alarm level + + + + DevWidget + + + 显示模式: + Display Mode: + + + + 详细模式 + Detailed Mode + + + + 表格模式 + Table Mode + + + + + 请输入描述 + Please enter a description + + + + 设备实例 + Device Instance + + + + 位置: + Location: + + + + 专业: + Specialty: + + + + RTU: + RTU: + + + + 设备测点 + Device Measurement Points + + + + 属性面板 + Property Panel + + + + 保存 + Save + + + + + 添加设备组 + Add Device Group + + + + + 导入建模实例 + Import Modeling Instance + + + + + 导出建模实例 + Export Modeling Instance + + + + + 修改设备组 + Modify Device Group + + + + 删除设备组 + Delete Device Group + + + + + 批量修改设备组 + Batch Modify Device Group + + + + 复制整个设备组设备 + Copy Entire Device Group Devices + + + + 修改设备 + Modify Device + + + + 删除设备 + Delete Device + + + + 直接添加设备 + Add Device Directly + + + + 同步前置设备的描述到所选设备 + Sync Description from Preceding Device to Selected Device + + + + 关联RTU/清除前置RTU + Associate RTU/Clear Preceding RTU + + + + 刷新 + Refresh + + + + 添加累积量特殊点 + Add Accumulated Quantity Special Point + + + + 添加模拟量特殊点 + Add Analog Quantity Special Point + + + + 添加数字量特殊点 + Add Digital Quantity Special Point + + + + 添加混合量特殊点 + Add Mixed Quantity Special Point + + + + 删除特殊点 + Delete Special Point + + + + 强制删除测点 + Force Delete Measurement Point + + + + + 生成该测点的闭锁出口 + Generate Lockout Exit for this Measurement Point + + + + 从前置设备添加测点 + Add Measurement Point from Preceding Device + + + + + 所有 + All + + + + 基础属性 + Basic Properties + + + + 限值属性 + Limit Properties + + + + 前置属性 + Preceding Properties + + + + 控制属性 + Control Properties + + + + 闭锁属性 + Lockout Properties + + + + 测点信息错误,请刷新测点信息并删除该测点! + Point information error, please refresh the point information and delete this point! + + + + 参数错误 + Parameter error + + + + 添加的数据格式不对 + The format of the added data is incorrect + + + + + + + + + + 数据库链接错误 + Database connection error + + + + 无此数据%1 + No data %1 + + + + + + + + 获取设备信息失败! + Failed to retrieve device information! + + + + + + + + + + + 获取测点序号信息失败! + Failed to retrieve point serial number information! + + + + 缺少xml文件 + Missing XML file + + + + 通过点类型获取单位失败 + Failed to obtain unit by point type + + + + 此次修改失败,已启动回滚! + This modification failed, rollback has been initiated! + + + + 添加不成功 + Addition failed + + + + 请输入标签或描述 + Please enter a label or description + + + + 全部 + All + + + + 提示 + Tip + + + + 测点属性已经修改,是否保存? + Point attributes have been modified, do you want to save? + + + + + 越上限值不允许小于或等于越下限值 + The upper limit cannot be less than or equal to the lower limit + + + + + + + 保存失败: + Save failed: + + + + 越上上限值不允许小于或等于越上限值 + The upper limit cannot be less than or equal to the upper limit + + + + 越下限值不允许小于或等于越下下限值 + The lower limit cannot be less than or equal to the lower limit + + + + 存在重复的前置分量! + Duplicate preceding components exist! + + + + 保存失败 + Save failed + + + + 保存成功! + Save successful! + + + + 未选中设备 + No device selected + + + + 设备信息有误,请重新打开软件 + Device information is incorrect, please reopen the software + + + + 复制设备-请输入新的设备名 + Copy device - please enter a new device name + + + + 标签名已存在,请修改 + The label name already exists, please modify it + + + + + 复制失败! + Copy failed! + + + + + 复制成功 + Copy successful + + + + 请选中要复制的设备组 + Please select the device group to copy + + + + 复制设备组-请输入新的设备组名 + Copy device group - please enter a new device group name + + + + 新的设备组名 + New device group name + + + + 标签名或描述不能为空 + Label name or description cannot be empty + + + + + + 数据库链接出错 + Database connection error + + + + 设备组的标签名重复!请重新填写 + The label name of the device group is duplicated! Please fill it in again. + + + + 请选择设备! + Please select a device! + + + + 设备信息有错,请重新打开软件 + Device information is incorrect, please reopen the software. + + + + 修改设备属性 + Modify device properties + + + + + + 修改成功 + Modification successful + + + + 请选中要删除的设备 + Please select the device to delete + + + + 删除设备失败! + Failed to delete the device! + + + + 删除设备成功 + Device deleted successfully + + + + + 请选中要关联的设备实例 + Please select the device instance to associate + + + + 查询设备信息失败 + Failed to query device information + + + + 该设备的模板未与前置模板有任何关联,请先关联! + The template of this device has no association with the preceding template, please associate first! + + + + 选择前置设备进行关联 + Select the preceding device for association + + + + 获取设备信息错误 + Error retrieving device information + + + + 消息 + Message + + + + 未选择任何RTU,将执行清除RTU属性操作,是否执行? + No RTU selected, the operation to clear RTU properties will be executed, do you want to proceed? + + + + 执行失败! + Execution failed! + + + + 执行成功 + Execution successful + + + + 请先选择位置和专业 + Please select a location and specialty first + + + + 请选择具体的位置后添加 + Please select a specific location before adding + + + + 请选择具体的专业后添加 + Please select a specific specialty before adding + + + + + + 获取车站标签信息失败 + Failed to retrieve station label information + + + + + 添加成功 + Addition successful + + + + 导入成功 + Import successful + + + + 导出成功 + Export successful + + + + 设备组数据异常,请刷新设备组信息后将其删除! + Device group data is abnormal, please refresh the device group information and then delete it! + + + + 请选中设备组 + Please select a device group + + + + 删除设备组失败! + Failed to delete the device group! + + + + 删除设备组成功 + Device group deleted successfully + + + + 请选中要生成出口的测点 + Please select the point to generate the outlet + + + + 累计量无闭锁出口 + Cumulative amount has no interlock outlet + + + + 此测点非控制点,无法生成闭锁出口 + This point is not a control point and cannot generate an interlock outlet + + + + 闭锁出口生成成功! + Interlock outlet generated successfully! + + + + + + + 未选中具体设备! + No specific device selected! + + + + + + + 获取RTU信息失败! + Failed to retrieve RTU information! + + + + + + + 该测点 %1 不是特殊点,不可删除! + This point %1 is not a special point and cannot be deleted! + + + + + 删除点失败! + Failed to delete the point! + + + + + 删除点成功! + Point deleted successfully! + + + + 请选中要同步更新描述的设备 + Please select the device to update the description synchronously + + + + 更新描述完毕! + Update description completed! + + + + 选择要添加的测点 + Select the points to add + + + + 请选中要添加的设备 + Please select the device to add + + + + 不可添加的前置测点类型 + Cannot add the type of preceding measurement point + + + + 请选中要添加的设备组 + Please select the device group to add + + + + 请先选择具体位置和专业后添加设备 + Please select a specific location and specialty before adding the device + + + + 添加设备 + Add device + + + + 添加失败 + Addition failed + + + + 请选择同一类型的测点 + Please select measurement points of the same type + + + + EditRelationDlg + + + 点类型: + Point type: + + + + 添加 + Add + + + + 移除 + Remove + + + + 确定 + Ok + + + + 取消 + Cancel + + + + 模拟量 + Analog + + + + 模拟量控制 + Analog control + + + + 数字量 + Digital + + + + 数字量控制 + Digital control + + + + 累积量 + Accuml + + + + 混合量 + Mix + + + + 混合量控制 + Mix control + + + + 后台测点标志 + Back point flag + + + + 前置测点标志 + Fes point flag + + + + + 警告 + Warnning + + + + 不允许表格为空! + The talbe can't be empty! + + + + 后台标志不允许重复! + Back flag does not allow duplicates! + + + + FesTempWidget + + + 请输入标签或描述 + Please enter a label or description + + + + 属性同步至实例设备 + Sync attributes to instance device + + + + 添加记录 + Add record + + + + 修改 + Edit + + + + 复制点 + Copy point + + + + 删除记录 + Delete record + + + + Excel导出 + Excel export + + + + Excel导入 + Excel import + + + + 批量修改前置设备 + Batch modify pre-device + + + + 添加应用至前置设备 + Add application to pre-device + + + + 删除应用至前置设备 + Remove application from pre-device + + + + 累积量 + Accuml + + + + 模拟量 + Analog + + + + 数字量 + Digital + + + + 混合量 + Mix + + + + 模拟量控制 + Analog control + + + + 数字量控制 + Digital control + + + + 混合量控制 + Mixed control + + + + + 数据块 + DataBlock + + + + + 保护定值 + ProtectionSet + + + + 前置设备模板 + fesDevTemp + + + + 累积量模板点 + AccumlTempPoint + + + + 模拟量模板点 + AnalogTempPoint + + + + 数字量模板点 + DigitalTempPoint + + + + 混合量模板点 + MixedTempPoint + + + + 模拟量控制点 + AnalogCtrlPoint + + + + 数字量控制点 + DigitalCtrlPoint + + + + 混合量控制点 + MixedCtrlPoint + + + + + + 导出%1不成功 + Export %1 failed + + + + + 文件打开不成功! + Failed to open the file! + + + + 导入失败!事务已回滚!原因: + Import failed! Transaction has been rolled back! Reason: + + + + 导入失败!原因:事务开启失败 + Import failed! Reason: Transaction opening failed + + + + excel文件中没有%1表 + No %1 sheet in the Excel file + + + + + 表格%1中没有%2列 + No %2 column in sheet %1 + + + + 设备模板名为空! + Device template name is empty! + + + + 存在同名模板%1,无法导入 + Template with the same name %1 exists, cannot import + + + + 写入TAG_NAME失败 + Failed to write TAG_NAME + + + + 写入设备描述失败 + Failed to write device description + + + + 错误:没有%1表! + Error: No %1 sheet! + + + + 错误:没有此列%1 + Error: No such column %1 + + + + + + 请选中要添加测点的模板! + Please select the template to which the measurement points should be added! + + + + 添加前置测点模板 + Add Precursor Measurement Point Template + + + + + + 添加失败 + Addition failed + + + + + + + 添加成功 + Addition successful + + + + 添加数据块 + Add Data Block + + + + 添加保护定值 + Add Protection Set Value + + + + + + + + 请选中要修改的模板 + Please select the template to modify + + + + 请选中要修改的行 + Please select the row to modify + + + + + 请选中要复制的模板点 + Please select the template points to copy + + + + + 复制点失败! + Copying points failed! + + + + + + + 消息 + Message + + + + 请至少选择一条数据! + Please select at least one data! + + + + 是否删除前置测点? + Do you want to delete the precursor measurement point? + + + + 删除失败! + Deletion failed! + + + + 删除成功 + Deletion successful + + + + 添加前置模板 + Add Precursor Template + + + + 添加成功! + Addition successful! + + + + 该模板在数据库中的数据不唯一 + The data of this template in the database is not unique + + + + 修改前置模板 + Modify Precursor Template + + + + 修改成功! + Modification successful! + + + + 是否删除前置模板? + Do you want to delete the precursor template? + + + + 链接数据库查询失败 + Database query connection failed + + + + 有以下RTU引用了模板%1: + %2 + 是否强制删除此模板? + The following RTUs reference template %1: + %2 + Do you want to forcibly delete this template? + + + + 删除失败 + Deletion failed + + + + 删除设备成功 + Device deleted successfully + + + + 请选中需要导出的设备 + Please select the device to export + + + + 保存模板 + Save Template + + + + 导出模板不成功! + Template export unsuccessful! + + + + + + + + + + + + + + 导出设备模板不成功! + 原因:%1 + Device template export unsuccessful! + Reason: %1 + + + + 保存文件失败! + %1 + File save failed! + %1 + + + + 导出成功!导出路径: + %1 + Export successful! Export path: + %1 + + + + + 模板导入 + Template Import + + + + + 导入失败! + 失败文件:%1 + 失败原因:%2 + + Import failed! + Failed file: %1 + Reason for failure: %2 + + + + + + + 导入成功 + Import successful + + + + 导入失败 + Import failed + + + + 请输入模板所属的专业和类型 + Please enter the specialty and type of the template + + + + 选择PSC3000导出的转发数据 + Select the forwarded data exported from PSC3000 + + + + 未检测到任何设备模板 + No device templates detected + + + + 导入失败! + 失败原因:%1 + + Import failed! + Reason for failure: %1 + + + + + 请选择要实例化的前置模板 + Please select the template to instantiate + + + + 获取模板信息失败! + Failed to retrieve template information! + + + + 模板信息错误 + Template information error + + + + 批量实例化前置设备 + Batch instantiate Fes devices + + + + 实例化成功! + Instantiation successful! + + + + 复制前置设备模板 + Copy Fes device template + + + + 数据库链接错误 + Database connection error + + + + 标签名已存在,请修改 + Label name already exists, please modify + + + + 复制失败! + Copy failed! + + + + 复制成功! + Copy successful! + + + + + 未选中模板点 + No template points selected + + + + 选中要添加的设备 + Select the device to add + + + + 添加点失败! + Adding point failed! + + + + 添加成功! + Added successfully! + + + + 选中要删除的设备 + Select the device to delete + + + + 删除点失败! + Deleting point failed! + + + + 删除点成功 + Deleting point successful + + + + 删除点成功! + Deleting point successful! + + + + 请先保存修改 + Please save changes first + + + + 该列不可编辑 + This column is not editable + + + + 该列是主键,不可编辑 + This column is a primary key and cannot be edited + + + + 选中要修改的设备 + Select the device to modify + + + + 当前属性无法同步 + The current property cannot be synchronized + + + + 开始执行批量菜单 + Starting batch menu execution + + + + 结束执行批量菜单 + Ending batch menu execution + + + + 修改失败 + Modification failed + + + + + 修改成功 + Modification successful + + + + FesWidget + + + 添加记录 + Add record + + + + 修改记录 + Edit record + + + + 删除记录 + Delete record + + + + Excel导出 + Export to Excel + + + + Excel导入 + Import from Excel + + + + 添加失败 + Addition failed + + + + 添加成功 + Addition successful + + + + 修改失败 + Modification failed + + + + 修改成功 + Modification successful + + + + 以下通道设置中有引用该规约,请先删除通道! + + The following channel settings reference this protocol, please delete the channel first! + + + + 有以下FES设备模板挂载在此设备类型,请先FES设备模板 + + The following FES device templates are mounted on this device type, please first remove the FES device templates + + + + 删除失败 + Deletion failed + + + + 删除成功 + Deletion successful + + + + KbdAddTempGroupDlg + + + 模板组标签名 + Template group label + + + + 模板组描述 + Template group description + + + + 同时添加以下设备模板 + Simultaneously add the following device templates + + + + 间隔信息 + Interval information + + + + 断路器 + Circuit breaker + + + + 上隔离刀 + Upper isolating switch + + + + 下隔离刀 + Lower isolating switch + + + + 接地刀闸 + Earthing switch + + + + 手车 + Handcart + + + + 此次修改失败,已启动回滚! + This modification failed, rollback has been initiated! + + + + 添加失败 + Addition failed + + + + 消息 + Message + + + + KbdBatchFesDevDlg + + + 批量实例化 + Batch instantiation + + + + 批量实例设备 + Batch instantiate devices + + + + 批量设置 + Batch settings + + + + 批量实例数量 + Batch instance quantity + + + + 批量起始数字 + Batch starting number + + + + 批量标签名格式(%1表示占位符) + Batch label name format ( %1 represents a placeholder ) + + + + 示例:tagName%1 + Example: tagName%1 + + + + 批量描述格式(%1表示占位符) + Batch description format ( %1 represents a placeholder ) + + + + 示例:#%1电表 + Example: #%1 meter + + + + + 实例化失败! + Instantiation failed! + + + + + 提交事务失败,已回滚 + Transaction submission failed, rollback has been initiated + + + + 批量标签名格式为空 + Batch label name format is empty + + + + 批量标签名格式中含有非法字符.号 + Batch label name format contains illegal characters, such as '.' + + + + 批量标签名格式中没有包含占位符%1 + Batch label name format does not include the placeholder %1 + + + + 批量描述格式为空 + Batch description format is empty + + + + 批量描述格式中含有非法字符.号 + Batch description format contains illegal characters, such as '.' + + + + 批量描述格式中没有包含占位符%1 + Batch description format does not include the placeholder %1 + + + + 请先选择RTU + Please select an RTU first + + + + 查询RTU信息失败! + Failed to query RTU information! + + + + 消息 + Message + + + + KbdBatchInstanceDlg + + + 批量实例化 + Batch instantiation + + + + 批量处理未完成 + Batch processing not completed + + + + 批量实例设备 + Batch instantiate devices + + + + 后台设备批量设置 + Batch settings for background devices + + + + 批量实例数量 + Batch instance quantity + + + + 批量起始数字 + Batch starting number + + + + 批量标签名格式(%1表示占位符) + Batch label name format ( %1 represents a placeholder ) + + + + 示例:tagName%1 + Example: tagName%1 + + + + 批量描述格式(%1表示占位符) + Batch description format ( %1 represents a placeholder ) + + + + 示例:#%1电表 + Example: #%1 meter + + + + 同时在前置中实例化对应设备 + Instantiate corresponding devices in the front end simultaneously + + + + 前置批量设置 + Batch settings for front end + + + + 选择同时要实例的前置RTU + Select the front end RTU to be instantiated simultaneously + + + + + + 实例化失败! + Instantiation failed! + + + + 提交事务失败,已回滚 + Transaction submission failed, rollback has been initiated + + + + 实例化成功! + Instantiation successful! + + + + 批量标签名格式为空 + Batch label name format is empty + + + + 批量标签名格式中含有非法字符.号 + Batch label name format contains illegal characters, such as '.' + + + + 批量标签名格式中没有包含占位符%1 + Batch label name format does not include the placeholder %1 + + + + 批量描述格式为空 + Batch description format is empty + + + + 批量描述格式中含有非法字符.号 + Batch description format contains illegal characters, such as '.' + + + + 批量描述格式中没有包含占位符%1 + Batch description format does not include the placeholder %1 + + + + 没有选择前置要实例的RTU,无法同时在前置中实例化对应设备 +请先选择! + No front end RTU selected for instantiation; cannot instantiate corresponding devices in the front end. Please select first! + + + + 查询数据库失败 + Failed to query the database + + + + 所选择的后台模板的属性 二次设备模板名 为空 + The attribute 'Secondary device template name' of the selected background template is empty + + + + 关联失败!数据库链接错误! + Association failed! Database connection error! + + + + 关联失败!不存在相同名称的前置设备,请手动关联! + Association failed! No front end device with the same name exists, please associate manually! + + + + 关联失败!存在多个相同名称的前置设备,请手动关联 + Association failed! Multiple front end devices with the same name exist, please associate manually + + + + 关联失败! + Association failed! + + + + 关联失败!启动回滚 + Association failed! Initiating rollback + + + + 车站没有选择,请在属性框中选择 + No station selected, please select in the property box + + + + 专业没有选择,请在属性框中选择 + No specialty selected, please select in the property box + + + + 获取RTU信息失败! + Failed to get RTU information! + + + + 消息 + Message + + + + KbdChanWidget + + + 请选中要添加的位置 + Please select the position to add. + + + + 请先选择要添加的专业 + Please select the specialty to add first. + + + + + 获取通道号不成功! + Failed to obtain channel number! + + + + 获取车站信息和专业信息失败 + Failed to obtain station and specialty information. + + + + 添加失败 + Addition failed. + + + + 添加成功 + Addition successful. + + + + 请先选中要修改的通道 + Please select the channel to modify first. + + + + 写入失败,原因:获取车站信息和专业信息失败 + Write failed, reason: Failed to obtain station and specialty information. + + + + 修改失败 + Modification failed. + + + + 修改成功 + Modification successful. + + + + 有以下RTU挂载在此通道,请先删除RTU + + The following RTUs are mounted on this channel; please delete the RTUs first. + + + + 删除失败 + Deletion failed. + + + + 删除成功 + Deletion successful. + + + + 请选中要复制的行 + Please select the row to copy. + + + + 复制 + Copy + + + + 复制数量 + Copy Quantity + + + + 复制失败 + Copy failed. + + + + 复制成功 + Copy successful. + + + + KbdCreateDevByFES + + + 按照前置设备实例化 + Instantiate according to the Fes device. + + + + 下一步 + Next + + + + 取消 + Cancel + + + + 完成 + Finish + + + + 设备组名称 + Device Group Name + + + + 设备组描述 + Device Group Description + + + + 模板 + Template + + + + 对应的设备 + Corresponding Device + + + + 选择模板组 %1 对应的前置设备(以光标为锚点进行添加,或者拖拽添加) + Select the Fes device corresponding to template group %1 (add using the cursor as an anchor point or drag to add). + + + + 位置 + Position + + + + 专业 + Specialty + + + + 筛选 + Filter + + + + 添加时带RTU前缀 + Add RTU prefix when adding. + + + + 添加>> + Add >> + + + + >替换< + >Replace< + + + + <<删除 + <<Delete + + + + 选择责任区 + Select Responsibility Area + + + + 添加记录 + Add Record + + + + 删除记录 + Delete Record + + + + 撤销更改 + Undo Changes + + + + 保存 + Save + + + + 责任区表格未保存! + Responsibility area table not saved! + + + + 请选择责任区 + Please select a responsibility area. + + + + 正在处理,请稍侯.... + Processing, please wait... + + + + 设备组为空!请先添加设备组 + The device group is empty! Please add a device group first. + + + + 第%1行的设备组名称为空,请删除或修改! + The device group name on line %1 is empty, please delete or modify! + + + + 设备组名称%1重复,请删除或修改! + Device group name %1 is duplicated, please delete or modify! + + + + + 每次添加只能选择相同模板的设备! + You can only select devices with the same template each time you add! + + + + + 未找到前置设备所对应的列! + Column corresponding to the Fes device not found! + + + + + 表格中光标所处的位置不是设备模板所对应的位置, +请移动光标到正确的位置 + The position of the cursor in the table does not correspond to the position of the device template. Please move the cursor to the correct position. + + + + 请选择要替换的单元格 + Please select the cell to replace. + + + + 按照前置设备批量生成成功 + Batch generation according to the Fes device succeeded. + + + + 消息 + Message + + + + KbdDevAndFesWidget + + + 设备 + Device + + + + 关联状态 + Association Status + + + + 前置 + Fes + + + + RTU + RTU + + + + 前置设备 + Fes Device + + + + 前置测点 + Fes Measurement Point + + + + 清空所选测点的关联 + Clear Association of Selected Points + + + + 移除设备组 + Remove Device Group + + + + 清空所选设备的关联(包括输入输出) + Clear Association of Selected Devices (Including Inputs and Outputs) + + + + 同步所选设备的前置测点描述 + Synchronize Descriptions of Selected Device Measurement Points + + + + 刷新设备组关联状态 + Refresh Device Group Association Status + + + + 刷新 + Refresh + + + + 已关联:%1,未关联:%2 + Associated: %1, Unassociated: %2 + + + + 请选中设备组 + Please Select a Device Group + + + + 所选设备组已经存在,请重新选择 + The Selected Device Group Already Exists, Please Re-select + + + + 请选中设备组进行删除 + Please Select a Device Group for Deletion + + + + + + + 请选择相同类型的点,控制点与普通测点不要同时选中 + Please Select Points of the Same Type; Control Points and Regular Measurement Points Should Not Be Selected Together + + + + + + + 所选测点类型与表格中的测点类型不一致 + The Selected Measurement Point Type Does Not Match the Type in the Table + + + + 请选中模拟量的测点类型 + Please Select the Analog Measurement Point Type + + + + + + + 请拖拽到前置分量上 + Please Drag to the Fes Component + + + + + + 请拖拽到输出分量上 + Please Drag to the Output Component + + + + + + + 更新成功 + Update Successful + + + + 请选中累积量的测点类型 + Please Select the Accumulated Measurement Point Type + + + + 请选中数字量的测点类型 + Please Select the Digital Measurement Point Type + + + + 请选中混合量的测点类型 + Please Select the Mixed Measurement Point Type + + + + + + + 清空执行完毕! + Clear Operation Completed! + + + + 请选中要同步更新描述的设备 + Please Select the Device to Synchronize and Update the Description + + + + 更新描述完毕! + Update Description Completed! + + + + 关联失败 + Association Failed + + + + 关联成功 + Association Successful + + + + 消息 + Message + + + + KbdDevGroupListDlg + + + 位置: + Location: + + + + 专业: + Specialty: + + + + 设备组: + Device Group: + + + + 全选 + Select All + + + + 反选 + Invert Selection + + + + 确定 + OK + + + + 消息 + Message + + + + 更新成功 + Update Successful + + + + + 数据库链接错误 + Database Connection Error + + + + KbdDevInfo + + + + 设备实例 + Device Instance + + + + 搜索... + Search... + + + + 全选 + Select All + + + + KbdFesDevDlg + + + 选择前置设备(设备的原有关联关系不覆盖,如需覆盖请先清空关联关系) + Select Fes Device (The original association of the device will not be overwritten. To overwrite, please clear the associations first) + + + + 已选中关联设备 + Selected Associated Devices + + + + 后台设备 + Background Device + + + + 前置设备 + Fes Device + + + + 关联 + Associate + + + + 取消 + Cancel + + + + 关联失败! + Association Failed! + + + + 关联成功! + Association Successful! + + + + 此次修改失败,已启动回滚! + This modification failed, rollback initiated! + + + + 消息 + Message + + + + KbdFesDevTempDlg + + + 选择前置设备模板 + Select Fes Device Template + + + + KbdFesDevWidget + + + 位置 + Location + + + + 专业 + Specialty + + + + RTU + RTU + + + + 实例化设备 + Instantiate Device + + + + 修改设备 + Modify Device + + + + 删除设备 + Delete Device + + + + 刷新 + Refresh + + + + 前置设备 + Fes Device + + + + 所有 + All + + + + 请先选择RTU + Please select RTU first + + + + 查询RTU信息失败! + Failed to query RTU information! + + + + 实例化成功! + Instantiation Successful! + + + + 请选中对应设备! + Please select the corresponding device! + + + + 修改成功! + Modification Successful! + + + + 删除设备失败! + Failed to delete device! + + + + 删除设备成功! + Device deleted successfully! + + + + + + 消息 + Message + + + + 此次修改失败,已启动回滚! + This modification failed, rollback initiated! + + + + KbdFesPointDlg + + + 前置测点检索器 + Fes Point Retriever + + + + 位置 + Location + + + + 专业 + Specialty + + + + RTU + RTU + + + + 点类型 + Point Type + + + + 标签名 + Label Name + + + + 模拟量 + Analog Quantity + + + + 数字量 + Digital Quantity + + + + 累积量 + Cumulative Quantity + + + + 混合量 + Mixed Quantity + + + + 模拟量控制 + Analog Control + + + + 数字量控制 + Digital Control + + + + 混合量控制 + Mixed Control + + + + KbdFesPointWidget + + + 专业 + Professional + + + + 请输入位置或设备描述关键字 + Please enter location or device description keywords + + + + + 添加设备 + Add Device + + + + 多选 + Multi-select + + + + 查询 + Query + + + + 前置测点 + Pre-measurement Point + + + + 请输入标签或描述 + Please enter a label or description + + + + 添加记录 + Add Record + + + + 修改记录 + Edit Record + + + + 复制记录 + Copy Record + + + + 删除记录 + Delete Record + + + + Excel导出 + Export to Excel + + + + Excel导入 + Import from Excel + + + + 按照设备ID重排规约参数1 + Rearrange Protocol Parameter 1 by Device ID + + + + 显示位置 + Display Location + + + + 显示RTU + Display RTU + + + + 显示设备 + Display Device + + + + 全选 + Select All + + + + 反选 + Inverse Selection + + + + 导入前置设备 + Import Preceding Device + + + + 修改设备 + Edit Device + + + + 删除设备 + Delete Device + + + + 刷新 + Refresh + + + + 所有 + All + + + + 累积量 + Cumulative Quantity + + + + 模拟量 + Analog Quantity + + + + 混合量 + Mixed Quantity + + + + 数字量 + Digital Quantity + + + + 模拟量控制 + Analog Control + + + + 数字量控制 + Digital Control + + + + 混合量控制 + Mixed Control + + + + 数据块 + Data Block + + + + 保护定值 + Protection Setting + + + + 查询RTU信息失败! + Failed to Query RTU Information! + + + + 请选择要添加的RTU + Please select the RTU to add + + + + 数据库链接出错 + Database connection error + + + + + + + 添加失败 + Add Failed + + + + + + + 添加成功 + Add Successful + + + + 请选中对应设备! + Please select the corresponding device! + + + + 设备组信息错误,请刷新设备组后删除! + Device group information error, please refresh the device group before deleting! + + + + 修改成功! + Modification Successful! + + + + 是否删除前置设备? + Are you sure you want to delete the Fes device? + + + + 当前选中包含场站或RTU,是否删除其下全部前置设备? + The current selection includes a station or RTU. Are you sure you want to delete all associated Fes devices? + + + + + + + + + 消息 + Message + + + + 删除前置设备失败 + Failed to delete the Fes device + + + + 删除设备成功! + Device deletion successful! + + + + 请选中要导入的RTU + Please select the RTU to import + + + + 文件访问失败 + File access failed + + + + 请先选择前置设备! + Please select the Fes device first! + + + + + + + + 获取RTU信息失败! + Failed to retrieve RTU information! + + + + + 修改失败 + Modification Failed + + + + + 修改成功 + Modification Successful + + + + 复制 + Copy + + + + 复制数量 + Copy Quantity + + + + 获取最大规约参数不成功! + Failed to retrieve the maximum protocol parameters! + + + + 获取最大点号不成功! + Failed to retrieve the maximum point number! + + + + 获取最大设备点序号不成功! + Failed to retrieve the maximum device point sequence number! + + + + 获取最大数据块不成功! + Failed to retrieve the maximum data block! + + + + 复制失败 + Copy Failed + + + + 复制成功 + Copy Successful + + + + 是否删除前置测点? + Are you sure you want to delete the Fes measurement point? + + + + + 删除失败! + Deletion Failed! + + + + + 删除成功 + Deletion Successful + + + + 点号不支持批量修改 + Point number does not support batch modification + + + + 此次修改失败,已启动回滚! + This modification failed, rollback has been initiated! + + + + 请选中要排序的RTU + Please select the RTU to sort + + + + 是否排序? + Are you sure you want to sort? + + + + 排序失败 + Sorting Failed + + + + + 排序成功 + Sorting Successful + + + + KbdFesProtocolWidget + + + 添加记录 + Add Record + + + + 修改记录 + Edit Record + + + + 删除记录 + Delete Record + + + + Excel导出 + Export to Excel + + + + Excel导入 + Import from Excel + + + + + + + 模块名称 + Module Name + + + + + + 模块描述 + Module Description + + + + + + 参数名称 + Parameter Name + + + + + + 参数数据 + Parameter Data + + + + + + 参数描述 + Parameter Description + + + + 保存失败 + Save Failed + + + + 保存成功 + Save Successful + + + + + + 添加成功 + Add Successful + + + + + + + 添加失败 + Add Failed + + + + 消息 + Message + + + + %1 模板数据无法删除 + Template data %1 cannot be deleted + + + + + + 删除成功 + Delete Successful + + + + 复制成功 + Copy Successful + + + + 字符串格式(占位符%1) + String Format (Placeholder %1) + + + + 起始数字 + Starting Number + + + + 复制个数 + Number of Copies + + + + + 修改成功 + Edit Successful + + + + + 修改失败 + Edit Failed + + + + 以下通道设置中有引用该规约,请先删除通道! + The following channel settings reference this protocol; please delete the channel first! + + + + 有以下FES设备模板挂载在此设备类型,请先删除FES设备模板! + The following FES device templates are mounted on this device type; please delete the FES device templates first! + + + + 删除失败 + Delete Failed + + + + + 添加 + Add + + + + + 删除 + Delete + + + + 复制 + Copy + + + + KbdFesTempDlg + + + 全选 + Select All + + + + 全不选 + Select None + + + + + 无 + None + + + + KbdFesTempPointModifyDlg + + + 修改前置模板测点 + Modify Front Template Points + + + + 勾选更改 + Check to Change + + + + 修改应用至前置设备 + Apply Changes to Front Devices + + + + 仅修改模板点 + Only Modify Template Points + + + + 取消 + Cancel + + + + 当前属性表未关联相应模型! + The current attribute table is not associated with the corresponding model! + + + + + 此次修改失败,已启动回滚! + This modification failed, rollback initiated! + + + + 修改失败 + Modification Failed + + + + 修改成功 + Modification Successful + + + + 测点模型为空 + Point Model is Empty + + + + 未勾选任何属性 + No Attributes Selected + + + + 选中要修改的设备 + Select Devices to Modify + + + + 更新失败! + Update Failed! + + + + 更新成功! + Update Successful! + + + + 消息 + Message + + + + KbdForwardBackWidget + + + 转发位置: + Forwarding Location: + + + + 转发专业: + Forwarding Specialty: + + + + 转发RTU: + Forwarding RTU: + + + + 导出转发表 + Export Forwarding Table + + + + 导入转发表 + Import Forwarding Table + + + + 转发复制 + Forward Copy + + + + 刷新 + Refresh + + + + + 模拟量 + Analog Quantity + + + + + 模拟量控制 + Analog Quantity Control + + + + 单点数字量 + Single Point Digital Quantity + + + + 双点数字量 + Double Point Digital Quantity + + + + + 数字量控制 + Digital Quantity Control + + + + + 累积量 + Cumulative Quantity + + + + + 混合量 + Mixed Quantity + + + + + 混合量控制 + Mixed Quantity Control + + + + <<添加 + << Add + + + + <<插入 + << Insert + + + + 设备组列表 + Device Group List + + + + 位置 + Location + + + + 专业 + Specialty + + + + RTU + RTU + + + + + 全选 + Select All + + + + + 反选 + Invert Selection + + + + + 全不选 + Deselect All + + + + 测点列表 + Measurement Point List + + + + 查询 + Query + + + + 数字量 + Digital Quantity + + + + + + + 所有 + All + + + + 全部 + All + + + + + + 双点数字量只能挑选数字量或数字量控制 + Double Point Digital Quantity can only select Digital Quantity or Digital Quantity Control + + + + 转发RTU为空! + Forwarding RTU is empty! + + + + + + + 获取行数据失败! + Failed to retrieve row data! + + + + + 获取行数据为空! + Retrieved row data is empty! + + + + + + + 添加失败! + Addition failed! + + + + + + + 添加成功! + Addition successful! + + + + + + + 开启事务失败! + Failed to start transaction! + + + + 请选中一行作为插入位置! + Please select a row as the insertion position! + + + + 后移失败! + Failed to move back! + + + + 无法添加到 + Cannot add to + + + + 选择 + Select + + + + 点描述 + Point Description + + + + 所属设备 + Belonging Device + + + + 点:%1不是双点,不允许添加,点标签是:%2! + Point: %1 is not a double point, cannot be added. Point label is: %2! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 消息 + Message + + + + + + + 提交事务失败,已回滚 + Transaction submission failed, rolled back. + + + + + 此次修改失败,已启动回滚! + The modification failed, rollback initiated! + + + + 开启事务失败! + Failed to start transaction! + + + + 修改成功 + Modification successful + + + + 导出文件 + Export file + + + + *.xlsx + *.xlsx + + + + 导出失败 + Export failed + + + + 导出成功 + Export successful + + + + 导入操作会直接修改数据库,需确保数据正确有效,否则会导致配置错误! + Importing operations will directly modify the database, ensure the data is correct and valid; otherwise, it may lead to configuration errors! + + + + 打开文件 + Open file + + + + 文件打开失败! + Failed to open file! + + + + 导入成功 + Import successful + + + + 拷贝完成! + Copy completed! + + + + %1 中的表的列数和描述数量不一致! + The number of columns in the table in %1 does not match the number of descriptions! + + + + 获取%1 信息失败! + Failed to retrieve information from %1! + + + + KbdForwardWizard + + + 批量挑点导航 + Batch Point Selection Navigation + + + + 下一步 + Next + + + + 取消 + Cancel + + + + 完成 + Finish + + + + 未挑选任何测点 + No measurement points selected + + + + + + + + 数据库链接错误 + Database connection error + + + + + 数据库链接出错 + Error connecting to the database + + + + 事务提交失败,启动回滚 + Transaction commit failed, initiating rollback + + + + 开启事务失败 + Failed to start transaction + + + + 挑点失败 + Point selection failed + + + + 累积量 + Cumulative amount + + + + 模拟量 + Analog quantity + + + + 数字量 + Digital quantity + + + + 模拟量控制 + Analog control + + + + 数字量控制 + Digital control + + + + 以设备 %1 为模板挑选测点 + Select points using device %1 as template + + + + 应用同样的挑点模式到以下设备中 + Apply the same point selection mode to the following devices + + + + RTU列表 + RTU List + + + + 车站 + Station + + + + 专业 + Specialty + + + + 设备列表 + Device List + + + + + 添加>> + Add >> + + + + + <<删除 + << Remove + + + + 所选设备 + Selected devices + + + + + 所有 + All + + + + 选中设备:%1与挑点个数不一致, +请确保所选中设备中包含所挑的点一样的序号 + Selected device: %1 does not match the number of selected points. Please ensure the selected device contains the same point numbers. + + + + 设备%1中不存在序号为%2的点 + Point number %2 does not exist in device %1 + + + + 消息 + Message + + + + KbdForwardrtuDlg + + + 转发复制 + Forward Copy + + + + 复制目的位置: + Copy destination: + + + + 复制目的专业: + Copy destination specialty: + + + + 复制目的RTU: + Copy destination RTU: + + + + 确定 + OK + + + + 取消 + Cancel + + + + + 所有 + All + + + + + 消息 + Message + + + + KbdGenerateFesDlg + + + 生成与后台设备模板一样的前置模板 + Generate a Fes template identical to the backend device template + + + + 请输入前置模板属性 + Please enter the Fes template attributes + + + + 生成 + Generate + + + + 取消 + Cancel + + + + 提交事务失败,已回滚 + Transaction submission failed, rolled back + + + + 生成成功 + Generation successful + + + + 消息 + Message + + + + KbdGenerateTempWizard + + + 从前置模板添加测点 + Add measurement points from the Fes template + + + + 上一步 + Previous + + + + 下一步 + Next + + + + 取消 + Cancel + + + + 完成 + Finish + + + + 挑选前置模板 + Select Fes template + + + + 专业 + Specialty + + + + 设备类型 + Device Type + + + + 挑选模板测点 + Select template measurement points + + + + 模拟量 + Analog Quantity + + + + 模拟量控制 + Analog Control + + + + 数字量 + Digital Quantity + + + + 数字量控制 + Digital Control + + + + 累积量 + Cumulative Quantity + + + + 混合量 + Mixed Quantity + + + + 混合量控制 + Mixed Control + + + + 全选 + Select All + + + + 全不选 + Select None + + + + 此次修改失败,已启动回滚! + This modification failed, rollback initiated! + + + + 所有 + All + + + + 消息 + Message + + + + KbdImportDevGroupDlg + + + 位置 + Location + + + + 专业 + Specialty + + + + + RTU + RTU + + + + 遥控类型 + Remote Control Type + + + + 路径 + Path + + + + 下载模板 + Download Template + + + + 获取位置标签失败! + Failed to obtain location label! + + + + 获取专业标签失败! + Failed to obtain specialty label! + + + + 获取RTU号失败! + Failed to obtain RTU number! + + + + 打开文件 + Open File + + + + 保存文件 + Save File + + + + 保存模板 + Save Template + + + + + + + 消息 + Message + + + + 模板下载成功 + Template downloaded successfully + + + + 模板下载失败 + Template download failed + + + + 模板文件不存在 + Template file does not exist + + + + KbdImportDlg + + + 导入前置与后台映射表 + Import Fes and Backend Mapping Table + + + + 浏览 + Browse + + + + 导入 + Import + + + + 取消 + Cancel + + + + 警告 + Warning + + + + 导入未完成! + Import not completed! + + + + 选择要导入的文件 + Select the file to import + + + + 预计耗时%1分钟,耗时仅供参考,实际情况可能有偏差! + Estimated time %1 minutes, time is for reference only, actual time may vary! + + + + 消息 + Message + + + + KbdInstPluginDlg + + + 套件 + Suite + + + + 位置 + Location + + + + 专业 + Specialty + + + + 设备组自动创建RTU + Device Group Automatically Creates RTU + + + + 设备组自动创建通道及RTU + Device Group Automatically Creates Channels and RTU + + + + RTU + RTU + + + + 通道 + Channel + + + + 设备分组 + Device Group + + + + 添加记录 + Add Record + + + + + 批量添加 + Batch Add + + + + 同时在所选设备组中批量实例 + Batch Instantiate in Selected Device Groups + + + + 起止编号 + Start and End Numbers + + + + 至 + To + + + + 获取车站信息和专业信息失败 + Failed to Retrieve Station and Specialty Information + + + + 获取通道号不成功! + Failed to Retrieve Channel Number! + + + + + 此次修改失败,已启动回滚! + This modification failed, rollback has been initiated! + + + + 设备组数量: + Number of Device Groups: + + + + 请先选择位置和专业 + Please select location and specialty first + + + + 获取车站标签信息失败 + Failed to Retrieve Station Label Information + + + + 添加设备组 + Add Device Group + + + + 消息 + Message + + + + 未选择要实例化的RTU + No RTU Selected for Instantiation + + + + 未选择要实例化的通道 + No Channel Selected for Instantiation + + + + 未选择要实例化的设备组 + No Device Group Selected for Instantiation + + + + 未选择套件 + No Suite Selected + + + + 批量编号的起始数字大于结束数字 + The starting number of the batch is greater than the ending number + + + + 获取通道号不成功 + Failed to Retrieve Channel Number + + + + 创建RTU失败,已启动回滚! + Failed to Create RTU, rollback has been initiated! + + + + 实例化成功! + Instantiation Successful! + + + + KbdPageWidget + + + + 上一页 + Previous Page + + + + + 下一页 + Next Page + + + + 当前总页数是范围是1-%1,%2是非法值 + The current total number of pages is in the range of 1-%1, %2 is an invalid value + + + + 已到达首页 + You have reached the first page + + + + 已到达尾页 + You have reached the last page + + + + 消息 + Message + + + + KbdPointFromTextDlg + + + 添加设备模板测点 + Add Device Template Measurement Point + + + + 模拟量 + Analog Quantity + + + + 数字量 + Digital Quantity + + + + 累计量 + Cumulative Quantity + + + + 混合量 + Mixed Quantity + + + + 全选 + Select All + + + + 全不选 + Deselect All + + + + 事务提交失败,启动回滚 + Transaction commit failed, initiating rollback + + + + 添加失败 + Addition failed + + + + 消息 + Message + + + + KbdPointTypeDlg + + + 选择测点进行属性刷新 + Select Measurement Points for Property Refresh + + + + 位置 + Location + + + + 专业 + Specialty + + + + 设备组 + Device Group + + + + 点类型 + Point Type + + + + 累积量 + Cumulative Quantity + + + + 模拟量 + Analog Quantity + + + + 数字量 + Digital Quantity + + + + 混合量 + Mixed Quantity + + + + + 数据库链接错误 + Database Connection Error + + + + 请选择要应用刷新的点 + Please select the points to apply the refresh + + + + 事务提交失败,启动回滚 + Transaction commit failed, initiating rollback + + + + 添加失败 + Addition failed + + + + 消息 + Message + + + + KbdPsc3000Dlg + + + 导入PCS3000数据 + Import PCS3000 Data + + + + 取消 + Cancel + + + + 下一步 + Next + + + + 完成 + Finish + + + + + + + + + + + 消息 + Message + + + + 本操作将覆盖此RTU %1下的所有设备数据 + 以及套件对应的后台设备数据 + 是否更新? + This operation will overwrite all device data under this RTU %1 + as well as the corresponding background device data of the suite. + Do you want to update? + + + + 导入成功 + Import Successful + + + + 确定取消导入? + Are you sure you want to cancel the import? + + + + 套件构成 + Suite Composition + + + + 添加套件 + Add Suite + + + + + 请选择套件所在行进行删除 + Please select the row of the suite to delete + + + + 重置列表 + Reset List + + + + 套件 + Suite + + + + 套件中的前置模板 + Fes Templates in the Suite + + + + 分配的前置设备 + Assigned Fes Devices + + + + 设备组名 + Device Group Name + + + + 设备组描述 + Device Group Description + + + + 设备列表 + Device List + + + + 前置设备标签 + Fes Device Label + + + + 前置设备描述 + Fes Device Description + + + + 隐藏已分配的设备 + Hide Assigned Devices + + + + 隐藏已导入的设备 + Hide Imported Devices + + + + 所选设备分配至通用套件 + Selected Devices Assigned to General Suite + + + + 前置设备描述 + Front Device Description + + + + 隐藏已分配的设备 + Hide Assigned Devices + + + + 隐藏已导入的设备 + Hide Imported Devices + + + + 所选设备分配至通用套件 + The selected device is assigned to the general suite + + + + 所选设备分配至指定套件 + The selected device is assigned to the specified suite + + + + 选择责任区 + Select Responsibility Area + + + + 添加记录 + Add Record + + + + 删除记录 + Delete Record + + + + 撤销更改 + Revert Changes + + + + 保存 + Save + + + + + xlsx文件打开不成功! + Failed to open xlsx file! + + + + + xlsx文件中无设备报表! + No device report in xlsx file! + + + + + 表格%1中没有%2列 + No %2 column in table %1 + + + + 重新写入xlsx文件不成功 + Failed to rewrite xlsx file + + + + 请勿重复分配设备:%1 + Please do not reassign device: %1 + + + + 查询通道标签名失败! + Failed to query channel label name! + + + + 查询通道下所有RTU标签名失败! + Failed to query all RTU label names under the channel! + + + + 查询设备组总数失败! + Failed to query the total number of device groups! + + + + + 请拖拽到分配的前置设备列 + Please drag to the assigned Fes device column + + + + 请勿重复分配 + Please do not reassign + + + + 请选择要清除的分配前置设备列 + Please select the assigned Fes device column to clear + + + + 无法链接数据库 + Cannot connect to the database + + + + 套件中不存在标签名为default的通用套件 + No general suite named 'default' exists in the package + + + + 没有构建任何套件 + No suites have been built + + + + 存在空白套件行,请删除 + There are blank suite rows, please delete them + + + + 分配前置设备列存在空白,请分配对应的设备 + There are blanks in the assigned Fes device column, please assign corresponding devices + + + + 设备组标签存在空白,请填写 + Device group label is blank, please fill it in + + + + 设备组描述存在空白,请填写 + Device group description is blank, please fill it in + + + + 分配的前置设备列,有重复分配的前置设备,请重新分配 %1 + In the assigned Fes device column, there are duplicate assigned Fes devices, please reassign %1 + + + + 存在重复的设备组名%1 + Duplicate device group name exists: %1 + + + + 右边的PSC3000设备中,存在重复的前置设备标签%1 + There are duplicate Fes device labels %1 in the PSC3000 devices on the right + + + + 数据库错误,无法查询厂站信息 + Database error, unable to query station information + + + + 存在标签名冲突的前置设备 + %1 + There are Fes devices with conflicting label names: %1 + + + + 存在同一个RTU内设备ID冲突的前置设备 + %1 + There are Fes devices with conflicting device IDs within the same RTU: %1 + + + + 存在前置模板冲突,请修改对应前置模板的标签名 + %1 + There are conflicts with Fes templates, please modify the label name of the corresponding Fes template: %1 + + + + 存在未分配的前置设备,是否继续导入? + There are unassigned Fes devices, do you want to continue importing? + + + + 未选择责任区 + No responsibility area selected + + + + KbdRelationFesDlg + + + 删除 + Delete + + + + 删除所有没有关联前置设备的行 + Delete all rows without associated Fes devices + + + + 提示 + Tip + + + + 关联 + Associate + + + + 取消 + Cancel + + + + 后台设备标签 + Backend Device Label + + + + 后台设备描述 + Backend Device Description + + + + 前置设备标签 + Fes Device Label + + + + 前置设备描述 + Fes Device Description + + + + + + 消息 + Message + + + + 处理未完成,请等待 + Processing not completed, please wait + + + + 部分后台设备没有对应的前置设备,请填写完整 +或者删除没有关联前置设备的行 + Some backend devices do not have corresponding Fes devices; please complete the information or delete rows without associated Fes devices + + + + KbdRtuListWidget + + + 请输入RTU描述关键字 + Please enter the RTU description keyword + + + + 请先选择要添加的车站与专业 + Please select the station and specialty to add first + + + + 请选中要添加的位置 + Please select the position to add + + + + 请先选择要添加的专业 + Please select the specialty to add first + + + + 添加RTU + Add RTU + + + + + 获取通道号不成功 + Failed to get channel number + + + + 添加失败 + Addition failed + + + + 请选中要修改的RTU + Please select the RTU to modify + + + + 修改RTU + Modify RTU + + + + 修改成功 + Modification successful + + + + 消息 + Message + + + + 删除RTU将同时删除该RTU下的设备, +是否删除? + Deleting the RTU will also delete the devices under this RTU. Do you want to proceed? + + + + 删除失败 + Deletion failed + + + + 删除成功 + Deletion successful + + + + 请选中要复制的行 + Please select the row to copy + + + + 复制 + Copy + + + + 复制数量 + Copy quantity + + + + 获取通道号不成功! + Failed to get channel number! + + + + 复制失败 + Copying failed + + + + 复制成功 + Copying successful + + + + KbdSelectDevDlg + + + 导出前置与后台映射表 + Export Fes and Backend Mapping Table + + + + 所有设备 + All Devices + + + + 全选 + Select All + + + + 车站 + Station + + + + 专业 + Specialty + + + + 添加>> + Add >> + + + + 删除<< + Delete << + + + + 已选设备 + Selected Devices + + + + 导出 + Export + + + + 取消 + Cancel + + + + 警告 + Warning + + + + 导出未完成! + Export not completed! + + + + + 所有 + All + + + + 选择保存路径 + Select Save Path + + + + + + 消息 + Message + + + + 读取数据库不成功,导出设备失败! + Failed to read the database, export of devices failed! + + + + 无设备需要导出! + No devices to export! + + + + 预计耗时%1分钟,耗时仅供参考,实际情况可能有偏差! + Estimated time: %1 minutes; this is only a reference, actual time may vary! + + + + KbdTempGroupInstDlg + + + 位置 + Location + + + + 专业 + Profession + + + + 选择设备分组 + Select Device Group + + + + 添加记录 + Add Record + + + + 请先选择位置和专业 + Please select location and profession first + + + + 获取车站标签信息失败 + Failed to retrieve station label information + + + + 添加设备组 + Add Device Group + + + + 此次修改失败,已启动回滚! + This modification failed, rollback initiated! + + + + 请选择要实例化的设备组 + Please select the device group to instantiate + + + + 消息 + Message + + + + KbdUpdatePsc3000Dlg + + + 更新PCS3000数据 + Update PCS3000 Data + + + + 全选 + Select All + + + + 反选 + Invert Selection + + + + 更新 + Update + + + + 注:只支持添加,删除前置测点和更新前置测点属性,无法创建后台设备以及处理双点! + Note: Only supports adding, deleting Fes measuring points, and updating Fes measuring point attributes. Cannot create back-end devices or handle dual points! + + + + PCS3000设备ID + PCS3000 Device ID + + + + PCS3000设备描述 + PCS3000 Device Description + + + + 前置设备描述 + Fes Device Description + + + + 后台设备组描述 + Back-end Device Group Description + + + + + + + + + 获取RTU信息失败! + Failed to retrieve RTU information! + + + + + 数据库查询错误 + Database Query Error + + + + %1文件打开不成功! + Failed to open file %1! + + + + xlsx文件中无设备表! + No device table in xlsx file! + + + + 表格%1中没有%2列 + No %2 column in table %1 + + + + pcs3000设备:%1 对应的前置设备为空 + PCS3000 device: %1 has no corresponding Fes device + + + + pcs3000设备:%1 对应的后台设备组为空 + PCS3000 device: %1 has no corresponding back-end device group + + + + 数字量点更新失败 + Digital Point Update Failed + + + + 模拟量点更新失败 + Analog Point Update Failed + + + + 累积量点更新失败 + Cumulative Point Update Failed + + + + 数字量控制点更新失败 + Digital Control Point Update Failed + + + + 定值点更新失败 + Set Value Point Update Failed + + + + 更新失败,已启动回滚! + Update failed, rollback initiated! + + + + + + + + + 清空参数表%1错误! + Error clearing parameter table %1! + + + + 设备 + Device + + + + 累积量 + Cumulative Amount + + + + 模拟量 + Analog Amount + + + + 数字量 + Digital Amount + + + + 数字量控制 + Digital Control + + + + 保护定值 + Protection Set Value + + + + 导入失败!事务已回滚!原因: + Import failed! Transaction has been rolled back! Reason: + + + + 更新失败!原因:事务开启失败 + Update failed! Reason: Transaction opening failed + + + + + + 间隔信号 + Interval Signal + + + + 消息 + Message + + + + 更新成功 + Update Successful + + + + MyAccumlModel + + + 描述 + Description + + + + 前置分量 + Fes component + + + + 前置实例 + Fes instance + + + + 前置RTU + Fes RTU + + + + 消息 + Message + + + + 查找累积量数据出错 + Error finding accumulation data + + + + MyAnalogModel + + + 描述 + Description + + + + 前置分量 + Fes component + + + + 前置实例 + Fes instance + + + + 前置RTU + Fes RTU + + + + 输出分量 + Output Component + + + + 消息 + Message + + + + 查找模拟量数据出错 + Error finding analog data + + + + MyDigitalModel + + + 描述 + Description + + + + 前置分量1 + Fes component 1 + + + + 前置分量2 + Fes component 2 + + + + 前置分量3 + Fes component 3 + + + + 前置分量4 + Fes component 4 + + + + 前置分量5 + Fes component 5 + + + + 前置实例 + Fes instance + + + + 前置RTU + Fes RTU + + + + 输出分量1 + Output Component 1 + + + + 输出分量2 + Output Component 2 + + + + 输出分量3 + Output Component 3 + + + + 输出分量4 + Output Component 4 + + + + 输出分量5 + Output Component 5 + + + + + + + + + + + + 消息 + Message + + + + 查找数字量数据出错 + Error finding digital quantity data + + + + 查找数字量前置分量2出错 + Error finding digital quantity Fes component 2 + + + + 查找数字量前置分量3出错 + Error finding digital quantity pre-component 3 + + + + 查找数字量前置分量4出错 + Error finding digital quantity Fes component 4 + + + + 查找数字量前置分量5出错 + Error finding digital quantity Fes component 5 + + + + 查找数字量输出分量2出错 + Error finding digital quantity output component 2 + + + + 查找数字量输出分量3出错 + Error finding digital quantity output component 3 + + + + 查找数字量输出分量4出错 + Error finding digital quantity output component 4 + + + + 查找数字量输出分量5出错 + Error finding digital quantity output component 5 + + + + MyMixModel + + + 描述 + Description + + + + 前置分量 + Fes component + + + + 前置实例 + Fes instance + + + + 前置RTU + Fes RTU + + + + 输出分量 + Output Component + + + + 消息 + Message + + + + 查找累积量数据出错 + Error finding accumulated quantity data + + + + ParsingDevFile + + + 打开失败: + Open failed: + + + + + + + + + + + + + + + + + + + + + + 获取%1 信息失败! + Failed to retrieve %1 information! + + + + 设备点重复: + Device point duplicate: + + + + 数据写入失败,已启动回滚! + Data write failed, rollback initiated! + + + + 保存文件失败 + File save failed + + + + 添加失败 + Add failed + + + + SystemConfigWizard + + + 系统建模配置向导 + System Modeling Configuration Wizard + + + + 位置配置 + Location Configuration + + + + + + + + 增加 + Add + + + + + + + + 删除 + Delete + + + + + + 提示: + Tip: + + + + 节点配置 + Node Configuration + + + + 节点网卡 + Node Network Card + + + + 数据库节点配置 + Database Node Configuration + + + + 虚拟节点配置 + Virtual Node Configuration + + + + 1,根据实际工程情况添加位置信息。 + 2,若工程已经搭建完成,删除原有的位置可导致原位置下的工程数据被删除。 + 1. Add location information based on the actual project situation. + 2. Deleting existing locations may result in the loss of project data under those locations if the project has already been established. + + + + ID + ID + + + + 标签名 + Label Name + + + + 描述 + Description + + + + 1,根据实际工程情况添加节点信息。 + 2,选中节点添加对应节点网卡信息。 + 3,数据库服务器的网卡名称必须是电脑实际的网卡名称。 + 4,网卡名称示例,windows: Realtek PCIe GBE Family Controller ,linux:eth1。 + 1. Add node information based on the actual project situation. + 2. Select the node to add corresponding network card information. + 3. The network card name of the database server must match the actual network card name of the computer. + 4. Example of network card names: Windows: Realtek PCIe GBE Family Controller, Linux: eth1. + + + + 节点名 + Node Name + + + + 主机描述 + Host Description + + + + 节点类型 + Node Type + + + + 部署类型 + Deployment Type + + + + 所属位置 + Location + + + + 是否使用 + In Use + + + + 网卡个数 + Number of Network Cards + + + + 网卡名称 + Network Card Name + + + + IP地址 + IP Address + + + + + 子网掩码 + Subnet Mask + + + + + 网关 + Gateway + + + + 4:虚拟节点 + 4: Virtual Node + + + + 1,根据实际情况配置相应数据库节点的连接信息。 + 2,一个数据库服务器节点时,不配置虚拟节点信息 + 3,存在两个及以上数据库服务器节点时,必须配置虚拟节点信息,用于数据库同步。 + 1. Configure the connection information for the corresponding database nodes based on actual circumstances. + 2. Do not configure virtual node information for a single database server node. + 3. If there are two or more database server nodes, virtual node information must be configured for database synchronization. + + + + 数据库标识 + Database Identifier + + + + 节点名称 + Node Name + + + + 数据库类型 + Database Type + + + + 数据库名 + Database Name + + + + 数据库用户名 + Database Username + + + + 数据库密码 + Database Password + + + + 数据库端口 + Database Port + + + + 虚拟节点IP + Virtual Node IP + + + + 1:工作站 + 1: Workstation + + + + + 2:应用服务器 + 2: Application Server + + + + 3:数据库服务器 + 3: Database Server + + + + + + + 0:主服务器 + 0: Primary Server + + + + + + 1:备服务器 + 1: Backup Server + + + + + 1:使用 + 1: Use + + + + 0:不使用 + 0: Do Not Use + + + + + 0:主数据库 + 0: Primary Database + + + + + 1:备数据库 + 1: Backup Database + + + + 0:无效 + 0: Invalid + + + + 1:Oracle + 1: Oracle + + + + 2:MySQL + 2: MySQL + + + + 3:openGauss + 3: openGauss + + + + 4:Kingbase + 4: Kingbase + + + + + 最多支持两个网卡地址! + Supports up to two network card addresses! + + + + + 网卡个数配置错误 + Network card count configuration error + + + + 当前已达到网卡个数上限 + Reached the maximum number of network cards + + + + 未配置位置信息 + Location information not configured + + + + 位置标签名不能为空 + Location label name cannot be empty + + + + 位置描述不能为空 + Location description cannot be empty + + + + 未配置节点信息 + Node information not configured + + + + 节点名不能为空 + Node name cannot be empty + + + + 主机描述描述不能为空 + Host description cannot be empty + + + + 所属位置不能为空 + Location cannot be empty + + + + 存在未配置网卡信息的节点 + There are nodes with unconfigured network card information + + + + 节点%1,非本机节点,不能配置本地回环地址 + Node %1, not a local node, cannot configure local loopback address + + + + 最多一个主服务器节点 + At most one primary server node + + + + 未配置数据库节点信息 + Database node information not configured + + + + 当前存在多个数据库节点,请添加虚拟节点配置信息! + Currently, there are multiple database nodes. Please add virtual node configuration information! + + + + 节点名称不能为空 + Node name cannot be empty + + + + 只能有一个主数据库节点 + There can only be one primary database node + + + + 多个数据库节点只能使用同一种数据库类型 + Multiple database nodes can only use the same type of database + + + + 此次修改失败,已启动回滚! + The modification failed; rollback has been initiated! + + + + 配置成功 + Configuration successful + + + + + 消息 + Message + + + + 是否导出全部配置? + Do you want to export all configurations? + + + + 导出成功 + Export successful + + + + 导出失败 + Export failed + + + + 当前系统正在运行,配置未导出 + The current system is running, and the configuration has not been exported + + + + 文件:%1,导出失败! + File: %1, export failed! + + + + 清理配置表失败! + Failed to clear the configuration table! + + + + + 创建域节点失败! + Failed to create domain node! + + + + 创建位置信息失败! + Failed to create location information! + + + + 创建节点信息失败! + Failed to create node information! + + + + 未配置有效应用服务器节点! + No valid application server node configured! + + + + 创建数据库节点失败! + Failed to create database node! + + + + 创建数据库部署失败! + Failed to create database deployment! + + + + TempPluginWidget + + + + 添加模板 + Add Template + + + + + 实例化模板 + Instantiate Template + + + + + 复制模板 + Copy Template + + + + + 修改模板 + Modify Template + + + + + 删除模板 + Delete Template + + + + + + 导入模板 + Import Template + + + + + 导出模板 + Export Template + + + + + + 刷新 + Refresh + + + + 导入PCS3000模板 + Import PCS3000 Template + + + + 从PCS3000配置中读取模板 + Read Template from PCS3000 Configuration + + + + + 添加套件 + Add Suite + + + + + 实例化套件 + Instantiate Suite + + + + + 修改套件 + Modify Suite + + + + + 复制套件 + Copy Suite + + + + 删除套件 + Delete Suite + + + + 导入套件 + Import Suite + + + + 导出套件 + Export Suite + + + + 删除 + Delete + + + + 缺失配置目录 + Missing Configuration Directory + + + + 套件模式 + Suite Mode + + + + + 前置模板 + Fes Template + + + + + 后台模板 + Back Template + + + + + + + + + + + + + + 检测套件 + Check Suite + + + + + 编辑自动关联配置 + Edit Auto-Association Configuration + + + + 仅自动生成当前后台设备 + Only Auto-Generate Current Backend Device + + + + 全部自动生成 + Auto-Generate All + + + + 保存 + Save + + + + 模拟量 + Analog Quantity + + + + 数字量 + Digital Quantity + + + + 累积量 + Cumulative Quantity + + + + 混合量 + Mixed Quantity + + + + 保存文件不成功 + Failed to Save File + + + + + 导出套件不成功! + Export Suite Failed! + + + + + 导出套件后台设备不成功 + Export Suite Backend Device Failed + + + + + 导出套件前置设备不成功 + Export Suite Fes Device Failed + + + + + 导出套件模板测点ACC不成功 + Export Suite Template Measurement Point ACC Failed + + + + + 导出套件模板测点ANA不成功 + Failed to export the suite template measurement point ANA + + + + + 导出套件模板测点DIG不成功 + Failed to export the suite template measurement point DIG + + + + + 导出套件模板测点MIX不成功 + Failed to export the suite template measurement point MIX + + + + 获取后台模板信息失败 + Failed to retrieve backend template information + + + + 导出后台模板信息失败 + Failed to export backend template information + + + + + 导出ACC模板点不成功 + Failed to export ACC template point + + + + + 导出ANA模板点不成功 + Failed to export ANA template point + + + + + 导出DIG模板点不成功 + Failed to export DIG template point + + + + + 导出MIX模板点不成功 + Failed to export MIX template point + + + + 获取前置模板信息失败 + Failed to retrieve Fes template information + + + + 导出前置模板不成功 + Failed to export Fes template + + + + + 导出前置设备模板点不成功 + Failed to export Fes device template point + + + + + 导出前置模板定值不成功 + Failed to export Fes template constant value + + + + + 导出前置模板数据块不成功 + Failed to export Fes template data block + + + + 文件打开不成功! + Failed to open the file! + + + + + 调用存储过程错误 + Error calling stored procedure + + + + 导入失败!事务已回滚!原因: + Import failed! Transaction has been rolled back! Reason: + + + + 导入失败!原因:事务开启失败 + Import failed! Reason: Failed to start transaction + + + + 缺失套件表xml + Missing suite table XML + + + + excel文件中没有%1表 + No %1 table in the Excel file + + + + + 表格%1中没有%2列 + No %2 column in table %1 + + + + 套件名为空! + Suite name is empty! + + + + + 数据块链接错误 + Data block link error + + + + 存在同名套件%1,无法导入 + There is a suite with the same name %1, unable to import + + + + + + + + + 缺少xml配置:%1 + Missing XML configuration: %1 + + + + + + + + + + + + + + + + + + + + + 数据库链接错误 + Database connection error + + + + 后台模板存在同名冲突 + %1 + There is a name conflict with the backend template + %1 + + + + 前置模板存在同名冲突 + %1 + There is a name conflict with the Fes template + %1 + + + + + 参数长度有问题 + Parameter length issue + + + + + + 选择excel表格%1失败 + Failed to select Excel file %1 + + + + + + excel中不存在%1列 + Column %1 does not exist in Excel + + + + + tree文件夹下缺少autoRelation.json文件 + Missing autoRelation.json file in the tree folder + + + + + + + json文件格式错误 + JSON file format error + + + + 添加成功! + Added successfully! + + + + 请选中要修改的套件 + Please select the suite to modify + + + + 模板有错,请重新打开软件 + The template has errors, please reopen the software + + + + 修改成功! + Modified successfully! + + + + 标签名已存在,请修改 + Label name already exists, please modify + + + + 复制失败! + Copy failed! + + + + 复制成功! + Copy succeeded! + + + + + 消息 + Message + + + + 是否删除套件? + Do you want to delete the suite? + + + + 请选中套件 + Please select the suite + + + + 删除套件失败! + Failed to delete the suite! + + + + 删除套件成功! + Successfully deleted the suite! + + + + 插件不存在! + Plugin does not exist! + + + + + 请先选中要添加的套件 + Please select the suite to add first + + + + 套件中已存在 %1 模板 + Template %1 already exists in the suite + + + + 添加后台模板到套件不成功! + Failed to add backend template to the suite! + + + + 只能选择一个前置模板 + You can only select one Fes template + + + + 套件中只能放入相同的前置模板 + Only the same Fes templates can be placed in the suite + + + + 当前套件超过两个前置模板,请删除 + The current suite exceeds two Fes templates, please delete + + + + 添加失败 + Addition failed + + + + + 操作失败! + Operation failed! + + + + 是否删除套件中的模板? + Do you want to delete the template in the suite? + + + + + 关联失败! + Association failed! + + + + + 关联成功!多分量测点和控制点,请手动填写多余分量或者控制关联信息 + Association successful! For multi-component measuring points and control points, please manually fill in additional components or control association information. + + + + 请选中套件控件中要自动关联的后台模板 + Please select the backend template to automatically associate in the suite control. + + + + 套件 %1 中的后台模板 %2 + 存在未关联的测点请关联 + In suite %1, backend template %2 has unassociated measuring points. Please associate them. + + + + 套件 %1 中的前置模板 %2 + 存在规约参数1的值不为-1的点,请修改为-1 + In suite %1, Fes template %2 has points where protocol parameter 1 is not -1. Please change it to -1. + + + + 检测通过 + Check passed + + + + 套件导入 + Suite Import + + + + + 导入失败! + 失败文件:%1 + 失败原因:%2 + + Import failed! + Failed file: %1 + Reason for failure: %2 + + + + + + 导入成功 + Import successful + + + + 请选中需要导出的套件 + Please select the suite to export + + + + 保存套件 + Save Suite + + + + *.xlsx + *.xlsx + + + + 导出%1失败 + 失败原因:%2 + Export of %1 failed + Reason for failure: %2 + + + + + 导出成功!导出路径: + %1 + Export successful! Export path: + %1 + + + + 请选中要添加的前置模板 + Please select the Fes template to add + + + + TempWidget + + + 显示模式: + Display mode: + + + + 详细模式 + Detailed mode + + + + 表格模式 + Table mode + + + + + 请输入描述 + Please enter a description + + + + 添加点模板 + Add Point Template + + + + 复制点模板 + Copy Point Template + + + + 删除点模板 + Delete Point Template + + + + 模板测点 + Template Measuring Point + + + + 属性面板 + Property Panel + + + + 勾选更改 + Check Changes + + + + 修改应用至对应设备 + Apply changes to corresponding devices + + + + 保存 + Save + + + + 属性同步至实例设备 + Sync properties to instance devices + + + + 从文本库添加 + Add from Text Library + + + + 从前置模板添加 + Add from Fes Template + + + + + 添加应用至对应设备 + Add application to corresponding devices + + + + + 删除应用至对应设备 + Delete application from corresponding devices + + + + 基础属性 + Basic Properties + + + + 限值属性 + Limit Properties + + + + 前置属性 + Fes Properties + + + + 控制属性 + Control Properties + + + + + + 未选中设备模板! + No device template selected! + + + + 添加失败 + Add failed + + + + + 导出模板不成功! + Export template failed! + + + + + 导出ACC模板点不成功 + Export ACC template point failed + + + + + 导出ANA模板点不成功 + Export ANA template point failed + + + + + 导出DIG模板点不成功 + Export DIG template point failed + + + + + 导出MIX模板点不成功 + Export MIX template point failed + + + + 保存文件不成功 + File save failed + + + + 选中表格%1失败 + Selection of table %1 failed + + + + + + + 表格%1中没有%2列 + No %2 column in table %1 + + + + + 设备模板名为空! + Device template name is empty! + + + + 表格写入TAG_NAME不成功 + Writing TAG_NAME to table failed + + + + 文件打开不成功! + File open failed! + + + + 导入失败!事务已回滚!原因: + Import failed! Transaction has been rolled back! Reason: + + + + 导入失败!原因:事务开启失败 + Import failed! Reason: Transaction start failed + + + + excel文件中没有%1表 + No %1 table in excel file + + + + + + + 消息 + Message + + + + 存在同名模板%1,是否修改模板标签名? + Template with the same name %1 exists, do you want to change the template label name? + + + + 缺失模板xml配置 + Missing template XML configuration + + + + 请输入新的模板名称和描述 + Please enter a new template name and description + + + + + 存在同名模板%1,无法导入 + Template with the same name %1 exists, cannot import + + + + 写入TAG_NAME失败 + Writing TAG_NAME failed + + + + 写入设备描述失败 + Writing device description failed + + + + 请输入标签或描述 + Please enter a label or description + + + + + + + 添加成功! + Add successful! + + + + 查询数据库失败 + Database query failed + + + + 查询设备信息失败 + Device information query failed + + + + + + 未选中模板点 + No template point selected + + + + 模板点信息有误,请重新打开软件 + Template point information is incorrect, please reopen the software + + + + 复制失败 + Copy failed + + + + 复制点失败! + Copy point failed! + + + + 是否删除后台模板测点? + Do you want to delete the background template measuring point? + + + + + 删除点失败! + Delete point failed! + + + + + 删除点成功! + Delete point successful! + + + + + 越上限值不允许小于或等于越下限值 + The upper limit cannot be less than or equal to the lower limit + + + + + + + 保存失败: + Save failed: + + + + 越上上限值不允许小于或等于越上限值 + The upper limit value cannot be less than or equal to the upper limit value. + + + + 越下限值不允许小于或等于越下下限值 + The lower limit value cannot be less than or equal to the lower limit value. + + + + 保存失败 + Save failed + + + + 保存成功! + Saved successfully! + + + + 提示 + Tip + + + + 测点属性已经修改,是否保存? + Point attributes have been modified, do you want to save? + + + + 请选中要生成出口的测点模板 + Please select the point template to generate the outlet. + + + + 累计量无闭锁出口 + No lock outlet for cumulative amount. + + + + + 数据库链接错误 + Database connection error. + + + + 此测点非控制点,无法生成闭锁出口 + This point is not a control point, cannot generate lock outlet. + + + + 批量生成闭锁出口 + Batch generate lock outlet. + + + + 数据库出错 + Database error. + + + + 添加闭锁出口失败 + Failed to add lock outlet. + + + + 添加闭锁出口成功! + Added lock outlet successfully! + + + + 修改后台测点模板 + Modify background point template. + + + + + + 修改成功 + Modified successfully. + + + + 模板导入 + Template import. + + + + 导入失败! + 失败文件:%1 + 失败原因:%2 + + Import failed! + Failed file: %1 + Reason for failure: %2 + + + + + 导入成功! + Imported successfully! + + + + 请选中需要导出的设备模板 + Please select the device template to export. + + + + 保存模板 + Save template. + + + + *.xlsx + *.xlsx + + + + 导出%1失败 + 失败原因:%2 + Export %1 failed + Reason for failure: %2 + + + + 导出成功!导出路径: + %1 + Export successful! Export path: + %1 + + + + 添加设备模板 + Add device template. + + + + + 请选中要修改的设备模板 + Please select the device template to modify. + + + + 模板有错,请重新打开软件 + The template is incorrect, please restart the software. + + + + 修改设备模板 + Modify device template. + + + + 修改成功! + Modified successfully! + + + + 是否删除后台模板? + Do you want to delete the background template? + + + + + + + 请选中设备模板 + Please select the device template. + + + + 该模板 %1 存在已实例化的设备 + 是否强制删除此模板? + The template %1 has instantiated devices. + Do you want to force delete this template? + + + + 删除设备模板失败! + Failed to delete device template! + + + + 删除设备模板成功! + Deleted device template successfully! + + + + 请选中模板 + Please select a template. + + + + + 模板信息有误,请重新打开软件 + Template information is incorrect, please restart the software. + + + + 批量实例化后台设备 + Batch instantiate background devices. + + + + 复制设备模板 + Copy device template + + + + 标签名已存在,请修改 + The label name already exists, please modify it. + + + + 复制失败! + Copy failed! + + + + 复制成功! + Copy successful! + + + + 请先保存添加的测点 + Please save the added measurement points first. + + + + 请选中要修改的模板点 + Please select the template points to modify. + + + + 未勾选任何属性 + No attributes selected. + + + + + 选中要修改的设备 + Please select the device to modify. + + + + + 更新成功! + Update successful! + + + + 更新失败! + Update failed! + + + + 添加点失败! + Failed to add point! + + + + 添加成功 + Add successful. + + + + 请先保存修改 + Please save the changes first. + + + + 该列不可编辑 + This column is not editable. + + + + 该列是主键,不可编辑 + This column is a primary key and cannot be edited. + + + + 开始执行批量菜单 + Start executing batch menu. + + + + 结束执行批量菜单 + End executing batch menu. + + + + 修改失败 + Modification failed. + + + + kbdBatchModifyDevGroup + + + 位置: + Location: + + + + 专业: + Specialty: + + + + RTU: + RTU: + + + + 全部 + All + + + + kbdCustomInstPluginDlg + + + 位置: + Location: + + + + 专业: + Specialty: + + + + 增加 + Add + + + + 删除 + Delete + + + + 导入 + Import + + + + 导出 + Export + + + + 下载模板 + Download Template + + + + 全选 + Select All + + + + 反选 + Invert Selection + + + + 更新设备点关联 + Update Device Point Association + + + + 实例化套件 + Instantiate Suite + + + + 套件 + Suite + + + + 设备组标签 + Device Group Label + + + + 设备组描述 + Device Group Description + + + + 前置设备名称 + Fes device Name + + + + 前置设备描述 + Fes device Description + + + + 通道名称 + Channel Name + + + + 通道描述 + Channel Description + + + + RTU名称 + RTU Name + + + + RTU描述 + RTU Description + + + + 选择文件 + Select File + + + + 读取文件失败 + Failed to Read File + + + + 表Sheet1不存在 + Sheet1 Does Not Exist + + + + 保存文件 + Save File + + + + 保存成功 + Save Successful + + + + 保存失败 + Save Failed + + + + 保存模板 + Save Template + + + + + + + 消息 + Message + + + + 模板下载成功 + Template Download Successful + + + + 模板下载失败 + Template Download Failed + + + + 模板文件不存在 + Template File Does Not Exist + + + + 更新成功 + Update Successful + + + + + + + 获取车站信息和专业信息失败 + Failed to Retrieve Station and Specialty Information + + + + 获取通道号不成功! + Failed to Retrieve Channel Number! + + + + + 数据库链接出错 + Database Connection Error + + + + + + 此次修改失败,已启动回滚! + This modification failed, rollback initiated! + + + + 获取通道号不成功 + Failed to Retrieve Channel Number + + + + + 获取车站标签信息失败 + Failed to get station label information + + + + 创建通道失败! + Failed to create channel! + + + + 创建RTU失败! + Failed to create RTU! + + + + 创建设备组失败! + Failed to create device group! + + + + 实例化成功 + Instantiation successful + + + + + 需至少添加一条配置信息 + At least one configuration information must be added + + + + 存在配置项为空 + There are empty configuration items + + + + + 需至少勾选一条配置信息 + At least one configuration information must be checked + + + + 询问 + Inquiry + + + + 后台设备组%1 已经存在,是否复用原有设备组继续创建? + The background device group %1 already exists. Do you want to reuse the existing device group to continue creating? + + + + 错误:前置设备%1 已经存在 + Error: Fes device %1 already exists + + + + 查询通道失败 + Failed to query channel + + + + 通道 %1 不存在 + Channel %1 does not exist + + + + 查询RTU失败 + Failed to query RTU + + + + RTU %1 不存在 + RTU %1 does not exist + + + + 查询设备组失败 + Failed to query device group + + + + 设备组 %1 不存在 + Device group %1 does not exist + + + + 查询前置设备失败 + Failed to query Fes device + + + + 前置设备 %1 不存在 + Fes device %1 does not exist + + + + kbdDevImportDlg + + + 导入前置设备 + Import Fes Device + + + + PCS3000设备 + PCS3000 Device + + + + 第三方设备 + Third-party Device + + + + 路径: + Path: + + + + 选择文件 + Select File + + + + 下载导入模板 + Download Import Template + + + + 更新 + Update + + + + 导入 + Import + + + + 选择PSC3000导出的转发数据 + Select PSC3000 Exported Forwarding Data + + + + 选择第三方设备文件 + Select Third-party Device File + + + + + 保存模板 + Save Template + + + + + + 消息 + Message + + + + 模板下载成功 + Template downloaded successfully + + + + 模板下载失败 + Template download failed + + + + 模板文件不存在 + Template file does not exist + + + diff --git a/resource/en/model_studio/translate/model_sequence_EN.qm b/resource/en/model_studio/translate/model_sequence_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..3b691ea70fa8d0bd698c8127ac3bef0d976a2b82 GIT binary patch literal 4194 zcmcgvYiv_x7=Fv8+iJVUX$+aD9Zn^48c}~O3UU*Sz_@6_Ps`dtp{&pq20!Eym~Kef zlp!$3Wn_aXSqDPgR#J-ok(dxgj6WnKYR)-5`(c!r7`#QF_xskK?H)buOesT*^M98b`rUmPLw?4~atTZ?CxW5%tkL?tDTdGq`E>< zr!Q{C_o{P4AW7sr=KN?|6YQ=zKfAdAc>9aCeHbTlUn~A~<}Bd3N}ie>B%+liKg~Tr zRP?dyx}%k7@(kB6-~2{2DdYP6yXkm+(e+2`R$(TmEcF0OCOIeh27-RZ-0Cm&z+?=e|Q1@-0+rMT7zfux<36G zFICej|Q3@Dm-AbCz>WMRI z>VO5oP4jRjjNh1w#2b zaQ3Ksj_JEnYI{6$>P(G=Mio780SN%05wKCfZZN_@&nhgQN26-pUwXRkR>q;a+5En#o%^J9E%h*71YwcZ`^Cu)<3)XVb z4Z+_Sa3YY@2i%;bjd%_Tk;Bl5?+J{4;=_qG;-oJ>5XQ|FT7Qq!pZ(t3thS%dbnaI7 z^eL$>wdJ7R-S@xK8R<@H`%aCeBND`(4o4(lDgmc9ctPEB+(P?qX$Ng=3rC(RkjV3B zsVEyiq7Vc^5PGA8fW)z|i!RC^pRdE;t<;oPq*L^PLH*)>wYgUYTx~u#(veX64_Y{v zi!9oRxbls40&_GMj0n1=UIl{nqzwW$4dx%kYZxr^iqwKE%G1Ja+8AUmB)>p2<)#&h z)5?PM@E9cNCFgOy$mhggM_h!=*mVGN({p&OjyKzt+j_ZvHH%)VMmyIvA@H_YE7Jr0MuN z-Gi(YV_ZbXkN9vFj2X2&)YYD|`uSdasjC3738}#;-H0C+4Z{O1!G{@`O`}jgEKhK) zr5(Zi?_fPLO(blEJ?=CRH2f6Nj^Hm>;^@j?%1w_P{L=dZcvWz@ko#uTfE9OKp4C`P zHi>KtL0TT-vf8;uWB7)v&{#B#YATb(A=iwN*W+qW++K#wv;+X$cDS^;0J24%-CY=* z_paPG?2dII;la#h!;Mk4Avv65IPIfVf@Tnzz$;8{|ErJ`)wlM_@i4M0r3}T@=AC+C zNEu3I-c8!`UWrA?8a{4J>+!?>FyAO_8ofEFO(K5=5d4hHSOYkZ`Kj)~+Ob zlq7mmw+wx?I{3c&&Qa|`r#-1sS}dgD3s;+$PVIvhZRddfp~}%wE!8TJLbn|@#MHdc9Dg~h%v4#%T5q(WU@in2PAB{O!frcLUTosKNEat zbP?2}5A&CaNLx;QKa!2pP5w)eCCq78PcegDCDZHbQwL8f7f+4sXjO*#^^-egaKw_z z-QAw>@_$I!T$zPB^u3^Eu#u|$1)GJp#fEFINywS&4uv@I3Tfq_cki{AW6o_6$e+I) ZStD9TRK~b(1Vc_#>+LPrK_)mHe*)a)ViW)X literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/translate/model_sequence_EN.ts b/resource/en/model_studio/translate/model_sequence_EN.ts new file mode 100644 index 00000000..351a2951 --- /dev/null +++ b/resource/en/model_studio/translate/model_sequence_EN.ts @@ -0,0 +1,228 @@ + + + + + QObject + + + 顺控动作 + Sequential action + + + + 顺控功能 + Sequence control function + + + + 顺控定义 + Sequence definition + + + + + 添加 + Add + + + + + 修改 + Modify + + + + + 删除 + Delete + + + + 保存 + Save + + + + 所有 + All + + + + 所属位置: + Location: + + + + + 搜索描述 + Search description + + + + 功能名称: + function name: + + + + 请输入描述关键字 + Please enter a descriptive keyword + + + + 功能描述: + Function description: + + + + 此功能所包含的动作列表 + List of actions included in this function + + + + + 添加记录 + Add record + + + + + 修改记录 + Modify record + + + + + 删除记录 + Delete Record + + + + 顺控列表 + Sequence List + + + + 此顺控所包含的功能列表 + List of actions included in this function + + + + SeqOrderCtrl + + + 添加成功 + Added successfully + + + + 以下功能使用了该动作,请先修改对应功能设置! + + The following functions use this action,please modify the corresponding function settings first! + + + + 删除失败! + failed to delete! + + + + + + + + 删除成功! + successfully deleted! + + + + + 以下顺控使用了该功能,请先修改对应顺控设置! + + The following sequencer uses this function, please modify the corresponding sequencer setting first! + + + + 请选中要修改的功能 + Please select the function to be modified + + + + 名称和描述都不允许为空 + Neither the name nor the description is allowed to be empty + + + + 功能名称重复 + Duplicate feature name + + + + 修改成功 + Successfully modified + + + + 获取车站信息失败 + Failed to obtain station information + + + + 保存失败 + Save failed + + + + + + + 添加成功! + Added successfully + + + + + + + 修改成功! + Successfully modified + + + + + + + 请先保存修改 + Please save the changes first + + + + + 请在左侧选中要添加的功能 + Please select the function you want to add on the left + + + + + + 请选中要修改的行 + Please select the row to be modified + + + + 请选中要添加的顺控 + Please select the sequence to add + + + + + + 消息 + Message + + + + 提交事务失败,已回滚 + Failed to commit transaction and rolled back + + + diff --git a/resource/en/model_studio/translate/model_studio_EN.qm b/resource/en/model_studio/translate/model_studio_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..4f0db89c7da5153bb1fbe7c45fd6b7ecfe8c018e GIT binary patch literal 17239 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 literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/translate/model_studio_EN.ts b/resource/en/model_studio/translate/model_studio_EN.ts new file mode 100644 index 00000000..12ea8f4d --- /dev/null +++ b/resource/en/model_studio/translate/model_studio_EN.ts @@ -0,0 +1,997 @@ + + + + + CModelStudiologin + + + 数据库查询域失败 + Select domain failed + + + + 数据库中不存在任何域 + There isn't any domain in database + + + + 数据库查询位置失败 + Select location failed + + + + 数据库中不存在任何位置 + There isn't any location in database + + + + 数据库查询应用失败 + Select apply failed + + + + 数据库中不存在任何应用 + There isn't any apply in database + + + + 数据库查询专业失败 + Select subsystem failed + + + + 数据库中不存在任何专业 + There isn't any subsystem in database + + + + 账号:%1 + account:%1 + + + + 登录失败 + Login failed + + + + 失败原因: + + Failed reason: + + + + + KbdBackPointPatch + + + Dialog + Dialog + + + + 位置: + Location: + + + + 专业: + Subsystem: + + + + 设备组: + Dev group: + + + + 设备: + Device: + + + + 点类型: + Point type: + + + + 前置RTU: + Fes RTU: + + + + 查询 + Search + + + + 描述包含字符: + Charactors contained by description: + + + + 批量修改后台测点 + Batch modify backstage points + + + + 模拟量 + Analog point + + + + 数字量 + Digital point + + + + 累积量 + Accuml point + + + + 混合量 + Mix point + + + + 基础属性 + Base attributes + + + + 前置属性 + Fes attributes + + + + 限值属性 + Limit attributes + + + + 控制属性 + Control attributes + + + + %1 选中行 从0开始自增 + %1 selected line increments from 0 + + + + %1 选中行 从1开始自增 + %1 selected line increments from 1 + + + + %1 选中行 自定义自增 + %1 selected line increments Customly + + + + %1 选中行 取相同值 + %1 selected line set same value + + + + %1 选中行 查找与替换 + %1 selected line find and replace + + + + + + + + + + + + + + + + + 消息 + Message + + + + + %1 +文本格式不对 + %1 +text format is wrong + + + + + + 该列不可编辑 + This column is not editable + + + + + + 该列是主键,不可编辑 + This column is not editable due to as the key + + + + 开始执行自增菜单 + Start executing the self-increment menu + + + + 自增菜单结束 + Self-increment menu end + + + + + + 修改成功! + Modify success! + + + + 开始执行取相同值菜单 + Start executing the same value menu + + + + 取相同值菜单结束 + Execute the same value menu end + + + + 开始执行查找与替换菜单 + Start executing the find and replace menu + + + + 查找与替换菜单结束 + Execute the find and replace menu end + + + + + + + 所有 + All + + + + 取相同值 + set same value + + + + 请输入 + Please enter + + + + KbdFesPointDlg + + + 前置测点检索器 + Fes point searcher + + + + 位置 + Location + + + + 专业 + Subsystem + + + + RTU + RTU + + + + 点类型 + Point type + + + + 标签名 + Label Name + + + + 模拟量 + Analog + + + + 数字量 + Digital + + + + 累积量 + Accuml + + + + 混合量 + Mixed Quantity + + + + 模拟量控制 + Analog control + + + + 数字量控制 + Digital control + + + + 混合量控制 + Mixed Quantity Control + + + + KbdFesPointPatch + + + Dialog + Dialog + + + + 描述包含字符: + Characters contained in description: + + + + 位置: + Location: + + + + 专业: + Subsystem: + + + + RTU: + RTU: + + + + 设备: + Device: + + + + 点类型: + Point type: + + + + 查询 + search + + + + 批量修改前置测点 + Batch modify Fes points + + + + + + 所有 + All + + + + 模拟量 + Analog point + + + + 数字量 + Digital point + + + + 累积量 + Accuml point + + + + 混合量 + Hybrid Quantity + + + + 模拟量控制 + Analog control point + + + + 数字量控制 + Digital control point + + + + 混合量控制 + Hybrid Quantity Control + + + + %1 选中行 从0开始自增 + %1 selected line increments from 0 + + + + %1 选中行 从1开始自增 + %1 selected line increments from 1 + + + + %1 选中行 自定义自增 + %1 selected line increments Customly + + + + %1 选中行 取相同值 + %1 selected line set same value + + + + %1 选中行 查找与替换 + %1 selected line find and replace + + + + + + + + + + + + + + + + + 消息 + Message + + + + + %1 +文本格式不对 + %1 +text format incorrect + + + + + + 该列不可编辑 + This column is not editable + + + + + + 该列是主键,不可编辑 + This column is not editable due to as key + + + + 开始执行自增菜单 + Start executing the self-increment menu + + + + 自增菜单结束 + Executing the self-increment menu end + + + + + + 修改成功! + Modify success! + + + + 开始执行取相同值菜单 + Start executing the same value menu + + + + 取相同值菜单结束 + Executing the same value menu end + + + + 开始执行查找与替换菜单 + Start executing the find and replace menu + + + + 查找与替换菜单结束 + Executing the find and replace menu end + + + + 取相同值 + Set same value + + + + 请输入 + Please enter + + + + LoginDlg + + + + 登录 + Login + + + + 用户 + User + + + + 密码 + Password + + + + IP地址: + IP address: + + + + 端口 + Port + + + + 数据库类型 + Database type + + + + 数据库名称: + Database name: + + + + MySQL + MySQL + + + + Oracle + Oracle + + + + OpenGauss + OpenGauss + + + + KingBase + KingBase + + + + 取消 + Cancel + + + + 数据库查询域失败 + Select domain failed + + + + 数据库中不存在任何域 + There isn't any domain in database + + + + 数据库查询位置失败 + Select location failed + + + + 数据库中不存在任何位置 + There isn't any location in database + + + + 数据库查询应用失败 + Select apply failed + + + + 数据库中不存在任何应用 + There isn't any apply in database + + + + 数据库查询专业失败 + Select subsystem failed + + + + 数据库中不存在任何专业 + There isn't any subsystem in database + + + + ,可能未进行系统建模! + May not do model system config! + + + + 登录失败 + Login failed + + + + 失败原因: + + Failed reason: + + + + + MainWindow + + + 建模工具 + Modeling tool + + + + 系统 + System + + + + 帮助 + Help + + + + 设置 + setting + + + + 版本信息 + Version message + + + + 帮助文档 + Help document + + + + + 属性面板主键可编辑 + Attributes panel keys unable to edit + + + + + 前置测点检索器 + Fes point filter + + + + + 后台测点检索器 + Backstage point filter + + + + + 批量修改后台测点 + Batch modify backstage points + + + + + 批量修改前置测点 + Batch modify Fes points + + + + + 配置检查 + Configuration check + + + + 消息 + Message + + + + 确定退出软件 + Are you sure to exit the software + + + + + 设备建模 + Device Modeling + + + + 退出配置 + Exit Configuration + + + + 读取mainWindow.xml文件错误,请检查xml文件格式是否正确! + Read mainWindow.xml file error,please check if the xml file format is correct! + + + + 检索工具 + Retrieval tool + + + + 批量修改 + Batch modification + + + + 检查工具 + Inspection tools + + + + 高级参数 + Advanced Parameters + + + + 数据库错误 + Database error + + + + 数据库错误: + Database error: + + + + 版本号:%1 + Version number:%1 + + + + QObject + + + 消息 + Message + + + + 启动日志服务失败: + Start log service failed: + + + + kbdConfigCheck + + + + + + + + + + + 标签结构错误 + Label structure error + + + + + + + + + 字符'.'的数量异常 + Abnormal number of characters '.' + + + + + + + + + + + + + 标签中有错误字段: + There is an incorrect field in the label: + + + + 含有禁止使用字符'_' + Contains the prohibited character '_' + + + + + 字符'_'的数量异常 + Abnormal number of characters '_' + + + + 不存在 + does not exist + + + + DI点不存在 + DI point does not exist + + + + DI点不可控 + DI point is not controllable + + + + 未关联前置测点 + Unassociated front-end measurement point + + + + 后台测点 %1 不存在 + Back-end measurement point %1 does not exist + + + + kbdConfigCheckDlg + + + 配置检查 + Configuration Check + + + + + 开始检查 + Start Check + + + + + + + 完成 + Complete + + + + 检查项目 + Check Item + + + + 异常数量 + Number of Anomalies + + + + 异常详情 + Details of Anomalies + + + + 是否修复 + Repair or not + + + + 修复勾选项 + Repair Selected Items + + + + 查看详情 + View Details + + + + 需手动修复 + Manual Repair Required + + + + 未选择检查项目 + No Check Item Selected + + + + 消息 + Message + + + + 修复成功 + Repair Successful + + + + kbdErrorListDlg + + + 全选 + Select all + + + + 反选 + Invert Selection + + + + 清理勾选项 + Clear Selection + + + + 标签名 + Label Name + + + + 描述 + Description + + + + 错误原因 + Reason for Error + + + + 清理 + Clean Up + + + diff --git a/resource/en/model_studio/translate/model_system_config_EN.qm b/resource/en/model_studio/translate/model_system_config_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..c24bb1d19ce70c0c0a84c98323be0a8253e6250b GIT binary patch literal 8384 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 + + + + KbdChainWidget + + + + 消息 + Export failed + + + + 导出配置成功! +导出路径: + Export configuration success! export path: + + + + 导出失败 + Message + + + + KbdNodeWidget + + + 添加失败 + Add failed + + + + + + + + + + 消息 + Message + + + + 部署信息表,数据库部署配置 +中相应的节点的值将被置空, +数据库节点配置中相应节点的配置将删除 +是否删除所选记录? + Deployment information table,the value of the corresponding node is empty in database deployment configuration,the configuration of the corresponding node in the database node configuration will delete do you want to delete the selected record? + + + + 删除失败 + Delete failed + + + + 修改失败 + Modify success + + + 打开文件 + Open File + + + 文件打开失败! + Failed to Open File! + + + 导入成功 + Import Successful + + + + 导出配置成功! +导出路径: + Export configuration success! export path: + + + + 导出失败 + Export failed + + + 导出节点配置失败 + Failed to Export Node Configuration + + + 保存文件不成功 + File Save Unsuccessful + + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + + 回滚事务失败! + Transaction rolled back failed! + + + + KbdRtTableWidget + + + 添加失败 + Add failed + + + + + + + + + + 消息 + Message + + + + 实时库列模式中的表将同时删除 +是否删除? + 实时库列模式中的表将同时删除 +是否删除? + Tables in memory library column mode will be deleted at the same time,do it? + + + + 删除失败 + Delete failed + + + + 修改失败 + Modify failed + + + + 导出配置成功! +导出路径: + Export configuration success! export path: + + + + 导出失败 + Export failed + + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + + 回滚事务失败! + Transaction rolled back failed! + + + + LoginDlg + + + + 登录 + Login + + + + 用户 + User + + + + 密码 + Password + + + + IP地址: + IP address: + + + + 端口 + Port + + + + 数据库类型 + Database type + + + + 数据库名称: + Database name: + + + + MySQL + MySQL + + + + Oracle + Oracle + + + + OpenGauss + OpenGauss + + + + KingBase + KingBase + + + Mysql + Mysql + + + OraclSql + OraclSql + + + + 取消 + Cancel + + + + 用户不能为空 + Username cannot be empty + + + + 密码不能为空 + Password cannot be empty + + + + IP地址不能为空 + IP address cannot be empty + + + + 端口不能为空 + Port cannot be empty + + + + 数据库名称不能为空 + Database name cannot be empty + + + + 登录失败 + 登陆失败 + Login failed + + + + 失败原因: + + Failed reason: + + + + + MainWindow + + + 系统配置 + System configuration + + + + 系统 + System + + + + 帮助 + Help + + + + 退出 + Exit + + + + 版本 + Version + + + + 配置向导 + Configuration Wizard + + + + + 系统建模 + System Modeling + + + + + 消息 + Message + + + + 是否导出全部配置? + Whether to export all configurations? + + + + 系统正在运行,无法导出配置 + Unable to export configuration for system is running + + + + 错误提示 + Error Prompt + + + + 错误详情: + Error Details: + + + 数据库错误 + Database error + + + 请检查数据库链接!错误详情: + Please check database link!error detail: + + + Model System Config + Model System Config + + + + 版本号:%1 + Version number:%1 + + + + QObject + + + + 消息 + Message + + + + 启动日志服务失败: + Start log service failed: + + + + 是否进入系统建模配置向导界面? + Would you like to enter the system modeling configuration wizard interface? + + + + SysConfigWidget + + + 添加记录 + Add record + + + + 删除记录 + Delete record + + + + 撤销更改 + Undo change + + + + 保存 + Save + + + + 导出配置 + Export configuration + + + 重置全部 + Reset All + + + + 重置节点 + Reset node + + + + + + + + + + + + + + + + + + + 消息 + Message + + + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + + + 部署失败 + Deploy failed + + + 导出节点配置失败 + Failed to export node configuration + + + 保存文件不成功 + File save unsuccessful + + + 导入操作会直接修改数据库,只能添加或者修改数据库,需确保数据正确有效,否则会导致配置错误! + Importing will directly modify the database; you can only add or modify the database. Ensure that the data is correct and valid, otherwise it may cause configuration errors! + + + 已知悉风险 + I acknowledge the risks + + + 取消 + Cancel + + + 打开文件 + Open File + + + 文件打开失败! + Failed to Open File! + + + 导入成功 + Import Successful + + + 控件未加载数据 + Control has not loaded data + + + + + 系统正在运行,无法导出配置 + Unable to export configuration for system is running + + + + 导出完成! +导出路径:系统安装目录下data\sys_model_info + Export completed! +Export path: In the system installation directory, under data\sys_model_info + + + + 导出配置成功! +导出路径: + Export configuration success! export path: + + + + 导出失败 + Export failed + + + + 确定重置所有配置数据? + Are you sure to reset all configure data? + + + + 确定重置节点配置? + Are you sure to reset node configure? + + + + 导出失败,多个数据库节点只能使用同一种数据库类型 + Export failed, multiple database nodes can only use the same type of database + + + + 节点%1,非本机节点,不能配置本地回环地址 + Node %1, not a local node, cannot configure the local loopback address + + + + 导出文件不成功! +不成功表格: + Export file unsuccessful! +Unsuccessful tables: + + + 导出完成! +导出路径: + Export complete! Export path: + + + diff --git a/resource/en/model_studio/translate/model_table_EN.qm b/resource/en/model_studio/translate/model_table_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..c6e0ad14571b89cf0091ff0a3f474c90b3229b2d GIT binary patch literal 33836 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 RqsHD-IQRx|B{nAJ{{aI{9?}2+ literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/translate/model_table_EN.ts b/resource/en/model_studio/translate/model_table_EN.ts new file mode 100644 index 00000000..df75d181 --- /dev/null +++ b/resource/en/model_studio/translate/model_table_EN.ts @@ -0,0 +1,1934 @@ + + + + + ColorEdit + + + 颜色选择 + Color Selection + + + + KbdBatchDlg + + + 批量修改 + Batch Modify + + + + 相同值 + Same Value + + + + 按行递增 + Increment by Row + + + + 自定义 + Custom + + + + 确定 + OK + + + + 取消 + Cancel + + + + 设置值 + Set Value + + + + 格式 + Format + + + + 例:dev%1 + Example: dev%1 + + + + 起始值 + Start Value + + + + 输入选项值(每行一个) + Enter Option Values (one per line) + + + + + + 该属性最多只能为%1个字符 + The property can have a maximum of %1 characters + + + + 询问 + Query + + + + 自定义内容和设置的内容行数不一致,请确认是否继续? + The number of rows in the custom content does not match the set content, please confirm if you want to continue? + + + + 消息 + Message + + + + KbdCSVReader + + + + json文件打开不成功 + Failed to open JSON file + + + + + + csv文件打开不成功 + Failed to open CSV file + + + + + xlsx文件打开不成功! + Failed to open XLSX file! + + + + + + csv文件数据错误,有行数据大小小于2 + CSV file data error, some rows have less than 2 data elements + + + + + 临时文件保存失败%1 + Temporary file save failed %1 + + + + + 子设备ID + Sub-device ID + + + + 设备ID + Device ID + + + + 属于的设备ID + Belongs to Device ID + + + + + 数据项列数不够 + Not enough data item columns + + + + + + 无此表单%1 + No such form %1 + + + + + + + 写错误%1:%2 + Write error %1: %2 + + + + 保存CSV文件不成功%1 + Failed to save CSV file %1 + + + + KbdCheckRole + + + + 模型为空! + Model is empty! + + + + 模型为空! +值:%1 + 模型为空!%1, +值:%2 + Model is empty! +Value: %1 + + + + 检查的数据尺寸有问题 + There is a problem with the size of the data checked + + + + 检查的数据尺寸有问题%1, +值:%2 + Problems with the size of the data checked%1, +the Value:%2 + + + + 不能为空%1, +值:%2 + Cannot be null %1, +Value:%2 + + + + + + 不能为空 + Cannot be empty + + + + + + 超出取值范围: + Out of range: + + + + 超出取值范围%1, +值:%2 + Out of value range %1. +Value: %2 + + + + + + 有重复 + repetitive + + + + 有重复%1, +值:%2 + with duplicates %1. +Value:%2 + + + + 模型为空! +旧值:%1, +新值:%2 + Model is empty! +Old value:%1, +New value:%2 + + + + 检查的数据尺寸有问题!表名:%1, +旧值:%2, +新值:%3 + There is a problem with the size of the data being checked! Table name:%1, +Old value:%2, +New value:%3 + + + + 检查的数据尺寸有问题! + There is a problem with the size of the data being checked! + + + + 不能为空%1, +旧值:%2, +新值:%3 + Cannot be empty %1, +Old value:%2, +New value:%3 + + + + 超出取值范围%1, +旧值:%2, +新值:%3 + Out of range %1, +Old value: %2, +New value: %3 + + + + 有重复%1, +旧值:%2, +新值:%3 + with duplicate %1, +Old value: %2, +New value: %3 + + + + 不能为空%1 + Cannot be empty %1 + + + + 超出取值范围%1 + Out of value range %1 + + + + 有重复%1 + Duplicate %1 + + + + KbdExportImportLogic + + + xml文件错误,请检查xml文件格式是否正确! + XML file error, please check if the XML file format is correct! + + + + KbdFindPointWidget + + + 路径 + Path + + + + 输入过滤条件 + Enter filter conditions + + + + root + root + + + + KbdInputDlg + + + + 自定义自增 + Custom Increment + + + + + 字符串格式(占位符%1) + String format (placeholder %1) + + + + + 自增起始数字 + Increment start number + + + + + 示例:dev%1 + Example: dev%1 + + + + 消息 + Message + + + + 字符串格式需要包含占位符%1 + String format must include placeholder %1 + + + + KbdMsgContrl + + + 消息 + Message + + + + KbdPage + + + + 上一页 + Previous Page + + + + + 下一页 + Next Page + + + + 当前总页数是范围是1-%1,%2是非法值 + The current total page range is 1-%1, %2 is an illegal value + + + + 已到达首页 + Reached the first page + + + + 已到达尾页 + Reached the last page + + + + 消息 + Message + + + + KbdPasswordDlg + + + 旧密码: + Old Password: + + + + 请输入新密码: + Please enter a new password: + + + + 请重新确认密码: + 请输入确认密码: + Please enter the confirm password: + + + + 两次输入的密码不一致 + 新密码不允许为空 + The new password cannot be empty + + + 确认密码不允许为空 + The confirm password cannot be empty + + + 密码不允许包含空格 + The password must not contain spaces + + + + 密码不允许为空 + Password is not allowed to be empty + + + + 密码长度小于安全策略规定的长度:%1 + The password length is less than the security policy requires: %1 + + + + 密码中的字符个数小于安全策略规定的%1个 + The number of characters in the password is less than the %1 required by the security policy + + + + 密码中的数字个数小于安全策略规定的%1个 + The number of digits in the password is less than the %1 required by the security policy + + + + + + 消息 + Message + + + + 旧密码错误 + The old password is incorrect + + + + KbdPropertyDlg + + + 当前属性表未关联相应模型! + The current property table is not associated with the corresponding model! + + + + 写入数据库不成功 + Failed to write to the database + + + + 错误 + Error + + + + KbdPropertyPanel + + + 浏览属性 + Browse Properties + + + + KbdReplaceDlg + + + 单元格内容替换 + Cell Content Replacement + + + + 查找字符 + Find Characters + + + + 替换字符 + Replace Characters + + + + 消息 + Message + + + + 查找内容不能为空 + The search content cannot be empty + + + + KbdSelectDevPointDlg + + + 信息 + Information + + + + 获取%1 信息失败! + Failed to retrieve %1 information! + + + + KbdSelectPointDlg + + + 已选中点 + Selected Points + + + + KbdSplitter + + + 专业: + Specialty: + + + + + 添加记录 + Add Record + + + + + 删除记录 + Delete Record + + + + 多选 + Multi-select + + + + 查询 + Query + + + + 修改记录 + Modify Record + + + + 复制记录 + Copy Record + + + + Excel导出 + Export to Excel + + + + Excel导入 + Import from Excel + + + + 请输入通道描述的关键字 + Please enter the keyword for the channel description + + + 所有 + All + + + + 全选 + Select All + + + + 反选 + Invert Selection + + + + + + 消息 + Message + + + + 此次修改失败,已启动回滚! + The modification failed, a rollback has been initiated! + + + + KbdTable + + + 查找替换 + %1 选中行 查找与替换 + Find and Replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 消息 + Message + + + + 行越界 + Row out of bounds + + + + 列越界 + Column out of bounds + + + + :数据错误 + :Data error + + + + + 请先保存修改 + Please save changes first + + + + + 该列不可编辑 + This column is not editable + + + + + 该列是主键,是否仍然修改? + This column is a primary key, do you still want to modify it? + + + + + 该列是主键,不可编辑 + This column is a primary key and cannot be edited + + + + + 开始执行自增菜单 + Start Executing Auto-increment Menu + + + + 批量修改 + Batch Modify + + + + 删除行 + Delete Row + + + + + 开始执行批量修改 + Start Executing Batch Modify + + + + + + + 提交事务失败! + Transaction Submission Failed! + + + + + 修改失败 + Modification Failed + + + + 确定删除数据? + Are you sure you want to delete the data? + + + + + 开始执行删除菜单 + Starting to execute the delete menu + + + + 开启事务失败! + Failed to start transaction! + + + + 删除失败 + Deletion failed + + + + 保存文件 + Save File + + + + 导出失败 + Export Failed + + + + 导出成功 + Export Successful + + + + 导入操作会直接修改数据库,需确保数据正确有效,否则会导致配置错误! + Importing will directly modify the database; ensure the data is correct and valid, otherwise it may cause configuration errors! + + + + 已知悉风险 + I acknowledge the risks + + + + 取消 + Cancel + + + + 打开文件 + Open File + + + + 文件打开失败! + Failed to Open File! + + + + 导入成功 + Import Successful + + + + 控件未加载数据 + Control has not loaded data + + + + 表格内容未提交,是否提交到数据库? + The table content has not been submitted, would you like to submit it to the database? + + + + 警告 + Warning + + + + 错误 + Error + + + + 保存成功! + Saved Successfully! + + + + KbdTableDataMgr + + + 本用户无编辑权限 + This user has no editing permissions + + + + 开启事务失败 + Failed to start transaction + + + + 系统退出,开始清理KbdTableDataMgr + Exiting system, starting to clean up KbdTableDataMgr + + + + KbdTableModel + + + 非重写提交模式 + Non-overwriting commit mode + + + + 删除数据失败! + Failed to delete data! + + + + 修改数据失败! + Failed to modify data! + + + + 插入数据失败! + Failed to insert data! + + + + KbdWaitPrgDlg + + + 正在处理,请稍候.... + Please wait while processing... + + + + KbdWidget + + + + + + 消息 + Message + + + + 此次修改失败,已启动回滚! + The modification failed, a rollback has been initiated! + + + + 回滚事务失败! + Transaction rollback failed! + + + + QObject + + + + 数据库链接打开失败: + Failed to open database connection: + + + + + 当前数据库地址: + Current database address: + + + + + 数据库: + Database: + + + + + 用户: + User: + + + + + 数据库链接已关闭!请重新打开软件 + The database connection has been closed! Please restart the software + + + + + 重新打开链接 + Reopen connection + + + + QtBoolEdit + + + + + True + True + + + + + False + False + + + + QtBoolPropertyManager + + + True + True + + + + False + False + + + + QtCharEdit + + + Clear Char + Clear Character + + + + QtColorEditWidget + + + ... + Choose Color... + + + + QtColorPropertyManager + + + Red + Red + + + + Green + Green + + + + Blue + Blue + + + + Alpha + Alpha + + + + QtCursorDatabase + + + Arrow + Arrow + + + + Up Arrow + Up Arrow + + + + Cross + Cross + + + + Wait + Wait + + + + IBeam + IBeam + + + + Size Vertical + Size Vertical + + + + Size Horizontal + Size Horizontal + + + + Size Backslash + Size Backslash + + + + Size Slash + Size Slash + + + + Size All + Size All + + + + Blank + Blank + + + + Split Vertical + Split Vertical + + + + Split Horizontal + Split Horizontal + + + + Pointing Hand + Pointing Hand + + + + Forbidden + Forbidden + + + + Open Hand + Open Hand + + + + Closed Hand + Closed Hand + + + + What's This + What's This + + + + Busy + Busy + + + + QtFontEditWidget + + + ... + ... + + + + Select Font + Select Font + + + + QtFontPropertyManager + + + Family + Family + + + + Point Size + Point Size + + + + Bold + Bold + + + + Italic + Italic + + + + Underline + Underline + + + + Strikeout + Strikeout + + + + Kerning + Kerning + + + + QtKeySequenceEdit + + + Clear Shortcut + Clear Shortcut + + + + QtLocalePropertyManager + + + %1, %2 + %1, %2 + + + + Language + Language + + + + Country + Country + + + + QtPointFPropertyManager + + + (%1, %2) + (%1, %2) + + + + X + X + + + + Y + Y + + + + QtPointPropertyManager + + + (%1, %2) + (%1, %2) + + + + X + X + + + + Y + Y + + + + QtPropertyBrowserUtils + + + [%1, %2, %3] (%4) + [%1, %2, %3] (%4) + + + + [%1, %2] + [%1, %2] + + + + QtRectFPropertyManager + + + [(%1, %2), %3 x %4] + [(%1, %2), %3 x %4] + + + + X + X + + + + Y + Y + + + + Width + Width + + + + Height + Height + + + + QtRectPropertyManager + + + [(%1, %2), %3 x %4] + [(%1, %2), %3 x %4] + + + + X + X + + + + Y + Y + + + + Width + Width + + + + Height + Height + + + + QtSizeFPropertyManager + + + %1 x %2 + %1 x %2 + + + + Width + Width + + + + Height + Height + + + + QtSizePolicyPropertyManager + + + + <Invalid> + <Invalid> + + + + [%1, %2, %3, %4] + [%1, %2, %3, %4] + + + + Horizontal Policy + Horizontal Policy + + + + Vertical Policy + Vertical Policy + + + + Horizontal Stretch + Horizontal Stretch + + + + Vertical Stretch + Vertical Stretch + + + + QtSizePropertyManager + + + %1 x %2 + %1 x %2 + + + + Width + Width + + + + Height + Height + + + + QtTreePropertyBrowser + + + 属性 + Property + + + + 值 + Value + + + + TableXmlRes + + + 车站编号 + Station Number + + + + 描述 + Description + + + + Worker + + + 调用%1存储过程失败!参数:%2 + Failed to call the %1 stored procedure! Parameters: %2 + + + + + + + + 提交事务失败!启动回滚 + Transaction submission failed! Initiating rollback + + + + + 存储过程实例化设备组失败!%1 + Failed to instantiate the device group in the stored procedure! %1 + + + + 套件数据格式不对! + The suite data format is incorrect! + + + + + 文件格式不对! + The file format is incorrect! + + + + %1文件打开不成功! + Failed to open %1 file! + + + + 未选择导入的RTU! + No RTU selected for import! + + + + 开始导入数据CSV:%1 RTU:%2 + Starting data import from CSV: %1 RTU: %2 + + + + + + + + + + 清空参数表%错误! + Error clearing parameter table %! + + + + 设备 + Device + + + + + 累积量 + Accumulative Quantity + + + + + 模拟量 + Analog Quantity + + + + + 数字量 + Digital Quantity + + + + + 数字量控制 + Digital Quantity Control + + + + + 保护定值 + Protection Setting + + + + + 导入失败:数据库导入失败! + Import Failed: Database Import Failed! + + + + 未检测到任何设备模板 + No device templates detected + + + + 调用存储过程失败! + Stored Procedure Call Failed! + + + + + + 导入失败!事务已回滚!原因: + Import Failed! Transaction has been rolled back! Reason: + + + + + + 导入失败!原因:事务开启失败 + Import Failed! Reason: Failed to start transaction + + + + 导入结束CSV:%1 + Import Completed CSV: %1 + + + + 执行SQL语句失败 + SQL Statement Execution Failed + + + + 创建设备出错 + Error creating device + + + + 实例化失败! + Instantiation failed! + + + + 批量处理错误! + Batch processing error! + + + + 提交事务失败,已回滚 + Transaction submission failed, has been rolled back + + + + 实例化成功 + Instantiation successful + + + + 关联前置设备成功! + Successfully associated front-end device! + + + + + + + + 缺少配置文件%1 + Missing configuration file %1 + + + + 文件写入不成功,导出失败! + File write failed, export failed! + + + + 导出成功!文件保存在:%1 + Export successful! File saved in: %1 + + + + + 文件打开不成功! + Failed to open file! + + + + 缺少必要的配置文件! + Missing required configuration file! + + + + + + + + 数据库操作:清空表格失败! + Database operation: Failed to clear table! + + + + 导入成功! + Import successful! + + + + + 关联失败! +后台设备与前置设备数量不一致 + 关联失败! +后台设备与前置设备数量不一致 + Association failed! +The number of backend devices does not match the front-end devices + + + + + 关联失败!,失败设备%1 + Association failed! Failed device %1 + + + + + 关联失败!启动回滚,失败设备%1 + Association failed! Initiating rollback, failed device %1 + + + + 关联成功! + Association successful! + + + + 关联失败!失败设备组:%1 + Association failed! Failed device group: %1 + + + + 关联失败!原因:提交事务失败!启动回滚 + Association failed! Reason: Transaction submission failed! Initiating rollback + + + + 关联完毕! + Association complete! + + + + 批量实例化设备组数据错误 + Batch instantiation of device group data error + + + + 数据库链接出错 + Database connection error + + + + 不存在前置设备%1 + Front-end device %1 does not exist + + + + %1 中的表的列数和描述数量不一致! + The number of columns in the %1 table does not match the number of descriptions! + + + + 获取%1 信息失败! + Failed to retrieve %1 information! + + + + 导入失败:没有%1表! + Import failed: No %1 table! + + + + 关联失败!数据库链接错误! + Association failed! Database connection error! + + + + 关联失败!不存在相同名称的前置设备%1,请手动关联! + Association failed! There is no front-end device with the same name %1, please associate manually! + + + + 关联失败!存在多个相同名称的前置设备%1,请手动关联 + Association failed! There are multiple front-end devices with the same name %1, please associate manually + + + + 错误:没有%1表! + Error: No %1 table! + + + + 错误:没有此列%1 + Error: No such column %1 + + + + 生成前置模板模型失败! + Failed to generate front-end template model! + + + + 删除前置模板%1失败 + Failed to delete front-end template %1 + + + + 模拟量控制 + Analog Control + + + + excel文件中没有%1表 + The excel file does not contain a %1 sheet + + + + + 表格%1中没有%2列 + The %1 sheet does not contain a %2 column + + + + 设备模板名为空! + The device template name is empty! + + + + 存在同名模板%1,无法导入 + A template with the same name %1 exists, cannot import + + + + 写入TAG_NAME失败 + Failed to write TAG_NAME + + + + 写入设备描述失败 + Failed to write device description + + + + 前置设备模板 + Front-end device template + + + + 累积量模板点 + Accumulative quantity template point + + + + 模拟量模板点 + Analog quantity template point + + + + 数字量模板点 + Digital quantity template point + + + + 混合量模板点 + Mixed quantity template point + + + + 模拟量控制点 + Analog control point + + + + 数字量控制点 + Digital Control Point + + + + 混合量控制点 + Mixed Quantity Control Point + + + + 数据块 + Data Block + + + + + + + 间隔信号 + Interval Signal + + + + kbdDevInstWidget + + + 专业 + Professional + + + + 多选 + Multi-select + + + + 查询 + Query + + + + + 全选 + Select All + + + + + 反选 + Invert Selection + + + + 显示位置 + Show Location + + + + 显示设备组 + Show Device Group + + + + 显示设备 + Show Device + + + + kbdDevPointWidget + + + 确定 + OK + + + + 点类型 + Point Type + + + + 点值 + Point Value + + + + 点状态 + Point Status + + + + 标签 + Label + + + + 模拟量 + Analog Quantity + + + + 数字量 + Digital Quantity + + + + 累积量 + Accumulative Quantity + + + + 混合量 + Mixed Quantity + + + + kbdSearchWidget + + + 搜索 + Search + + + + 清除 + Clear + + + + 位置、设备组或设备描述关键字 + Keywords for location, device group, or device description + + + + kbdXlsxRead + + + 打开失败: + Failed to open: + + + + kbdtableproperty + + + + 修改失败 + Modification Failed + + + + 修改成功 + Modification Successful + + + diff --git a/resource/en/model_studio/translate/model_user_EN.qm b/resource/en/model_studio/translate/model_user_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..2f7e26a47ed0290e502cc52abd22ee770773a943 GIT binary patch literal 17435 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 VY6Vihny%ZNP)n%A2r)V;>c6-FP?!J! literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/translate/model_user_EN.ts b/resource/en/model_studio/translate/model_user_EN.ts new file mode 100644 index 00000000..a5c56ea7 --- /dev/null +++ b/resource/en/model_studio/translate/model_user_EN.ts @@ -0,0 +1,987 @@ + + + + + CAcsErrorDlg + + + 下装失败列表 + Download failed list + + + + 设备标签 + Device label + + + + 用户名 + Username + + + + 用户卡 + User card + + + + 人脸 + User face + + + + 失败指纹ID + Failed fingerprint ID + + + + KbdAcsDevCfg + + + 添加 + Add + + + + 删除 + Delete + + + + 修改 + Modify + + + + 下装到设备 + Download to the device + + + + 请选择对应设备 + Please select the corresponding equipment + + + + 添加<< + Add<< + + + + 删除>> + Delete>> + + + + 保存 + Save + + + + 设备关联节点配置 + Device associated node configuration + + + + + + + 事务已回滚 + Transaction rolled back + + + + 保存成功! + Saved successfully! + + + + 保存失败 + Save failed + + + + 添加成功! + Added successfully! + + + + 删除成功! + Deleted successfully! + + + + 修改成功! + Modified Successfully! + + + + + 消息 + Message + + + + %1已经修改,是否保存? + %1 has been modified, do you want to save it? + + + + KbdRoleView + + + 添加 + Add + + + + 删除 + Delete + + + + 修改 + Modify + + + + 请选择对应角色 + Please select the corresponding role + + + + + 添加<< + Add<< + + + + + 删除>> + Delete>> + + + + + 保存 + Save + + + + 取消所有责任区 + Cancel all areas of responsibility + + + + 全选责任区 + Select all areas of responsibility + + + + 角色普通功能定义 + Definition of role general function + + + + 角色特殊功能定义 + Definition of role special function + + + + 角色画面浏览权限定义 + Role screen browsing authority definition + + + + 角色报表浏览权限定义 + Role report browsing permission definition + + + + 角色数据库表编辑权限定义 + Role database table editing permission definition + + + + + + + + + + + 事务已回滚 + Transaction rolled back + + + + + + + + 保存成功! + Saved successfully! + + + + + + + + 保存失败 + Save failed + + + + 添加成功! + Added successfully! + + + + 数据库链接错误 + Database link error + + + + 以下用户组引用了编号为 %1的角色,请先修改用户组的所属角色! + + The following user group references the role numbered %1, please modify the role of the user group first! + + + + + 删除成功! + Deleted successfully! + + + + 修改成功! + Modified successfully! + + + + + 消息 + Message + + + + %1已经修改,是否保存? + %1 has been modified, do you want to save it? + + + + KbdUserFuncWidget + + 添加记录 + Add record + + + 修改记录 + Modify record + + + 删除记录 + Delete Record + + + + 通用功能定义 + General function definition + + + + 特殊功能定义 + Special function definition + + + + + + 事务已回滚 + Transaction rolled back + + + + 添加成功! + Added successfully! + + + + 请选中要修改的行 + Please select the row to be modified + + + + 修改成功! + Modified Successfully! + + + + 基础数据,禁止删除 + Basic data, no deletion + + + + 删除成功! + Deleted successfully! + + + + + + 消息 + Message + + + + 提交事务失败,已回滚 + Failed to commit transaction and rolled back + + + + KbdUserGroupView + + + 添加 + Add + + + + 删除 + Delete + + + + 修改 + Modify + + + + 请选择对应用户组 + Please select the corresponding user group + + + + 添加<< + Add<< + + + + 删除>> + Delete>> + + + + + 保存 + Save + + + 取消所有位置 + 取消所有车站 + Cancel all locations + + + 全选所有位置 + 全选所有车站 + Select all locations + + + + 所属位置 + Owned Location + + + + 所属角色 + Owned role + + + 角色特殊功能所属位置 + role special function location + + + 画面浏览权限 + Screen browsing permissions + + + 报表浏览权限 + Report browsing permissions + + + + 取消全选 + Deselect All + + + + 全选 + Select All + + + + 特殊功能 + Special Features + + + + 画面权限 + Screen Permissions + + + + 报表浏览 + Report Browsing + + + + 数据库表编辑权限 + Database table editing permissions + + + + + + + + + 事务已回滚 + Transaction rolled back + + + + + + + + + 保存成功! + Saved successfully! + + + + + + + + + 保存失败 + Save failed + + + + + + 事务已回滚! + Transaction rolled back! + + + + 添加成功! + Added successfully! + + + + 数据库链接错误 + Database link error + + + + 以下用户引用了编号为 %1的用户组,请先修改用户的所属用户组! + + The following users refer to the user group numbered %1, please modify the user group to which the user belongs first! + + + + + 删除成功! + Deleted successfully! + + + + 修改成功! + Modified successfully! + + + + + 消息 + Message + + + + %1已经修改,是否保存? + %1 has been modified, do you want to save it? + + + + KbdUserView + + + 添加 + Add + + + + 删除 + Delete + + + + 修改 + Modify + + + 生物识别信息配置 + Biometric information configuration + + + + 添加<< + Add<< + + + + 删除>> + Delete>> + + + + 保存 + Save + + + 所属用户组定义 + User group definition + + + 组长所属用户组定义 + Definition of user group to which the leader belongs + + + 所属部门定义 + Department definition + + + + 所属用户组 + Affiliated User Group + + + + 组长所属组 + Group Owned by Group Leader + + + + 所属部门 + Affiliated Department + + + + 生物识别 + Biometric Identification + + + + + + 电子签章 + Electronic Signature + + + + + + + + + + + + + 事务已回滚 + Transaction rolled back + + + + + + 保存成功! + Saved successfully! + + + + + + + + + + + 保存失败 + Save failed + + + + 采集人脸 + Face collection + + + + 采集指纹 + Fingerprint collection + + + + 人脸信息 + Face information + + + + 指纹信息 + Fingerprint collection + + + + 导入签章 + Import Signature + + + + 删除签章 + Delete Signature + + + + (请选择小于5M且背景透明的PNG格式图片) + (Please select a PNG image with a transparent background and less than 5MB in size) + + + + 上传人脸照片 + Upload face photos + + + + 设备采集人脸 + Device collects faces + + + + + 修改人脸描述 + Modify face description + + + + 修改指纹 + Modify fingerprint + + + + 删除指纹 + Modify fingerprint + + + + 请添加人脸信息 + Please add face information + + + + 新增用户信息 + Add User Information + + + + + + 提交回滚失败! + Failed to submit rollback! + + + + 添加成功! + Added successfully! + + + + 删除成功! + Deleted successfully! + + + + 请选择对应的用户! + Please select the corresponding user! + + + + 修改用户信息 + Modify User Information + + + + 修改成功! + Modified successfully! + + + + + 消息 + Message + + + + %1已经修改,是否保存? + %1 has been modified, do you want to save it? + + + + + + + + + + + 请选择用户 + Please select user + + + + 选择人脸图片 + Choose face picture + + + + 描述 + description + + + + 修改失败 + fail to edit + + + + + 删除失败 + failed to delete + + + + 选择电子签章图片 + Select Electronic Signature Image + + + + KbdUserXmlWidget + + + 添加记录 + Add record + + + + 修改记录 + Modify record + + + + 删除记录 + Delete Record + + + + + 安全策略有且只允许有一条 + Only one security policy is allowed + + + + 选择画面文件 + Select Interface File + + + + + + + 事务已回滚 + Transaction rolled back + + + + + 添加成功! + Added successfully! + + + + 请选中要修改的行 + Please select the row to be modified + + + + 修改成功! + Modified Successfully! + + + + + + + + 数据库链接错误 + Database link error + + + + 以下用户属于该部门 %1,请先修改用户所属部门! + + The following users belong to this department %1, please modify the user's department first! + + + + + 以下角色引用了画面编号为 %1的画面,请先修改角色的画面浏览权限! + + The following roles refer to the screen with screen number %1, please modify the role's screen browsing permissions first! + + + + + 以下用户组引用了画面编号为 %1的画面,请先修改用户组的画面浏览权限! + + The following user group refers to the screen with the screen number %1, please modify the screen browsing authority of the user group first! + + + + + 以下角色引用了报表编号为 %1的报表,请先修改角色的报表浏览权限! + + The following roles refer to the report with the report number %1, please modify the report viewing permission of the role first! + + + + + 以下用户组引用了报表编号为 %1的报表,请先修改用户组的报表浏览权限! + + The following user groups refer to the report with the report number %1, please modify the report browsing permissions of the user group first! + + + + + 删除成功! + Deleted successfully! + + + + + + 消息 + Message + + + + 提交事务失败,已回滚 + Failed to commit transaction and rolled back + + + + kbdAcsCollectDlg + + + 开始采集 + Start collecting + + + + 设备 + Device + + + + 描述 + Description + + + + 获取设备配置信息失败 + Failed to obtain device configuration information + + + + 连接成功 + connection succeeded + + + + 连接失败 + Connection failed + + + + 采集中,请在设备上按提示操作 + During collection, please follow the prompts on the device + + + + + + 采集失败 + Collected failed + + + + + 采集成功 + Collected Successfully + + + + 消息 + Message + + + + kbdLoadAcsInfoToDevDlg + + + 选择下装设备 + Select download equipment + + + + 标签 + label + + + + 描述 + Description + + + + 启动下装失败: + Failed to start downloading: + + + + 登录失败: + Login failed: + + + + 下装成功 + download Successfully + + + + 消息 + Message + + + diff --git a/resource/en/model_studio/translate/model_waiting_dlg_EN.qm b/resource/en/model_studio/translate/model_waiting_dlg_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..de8540a69fddca88d01665d10ae98d733f8ffac4 GIT binary patch literal 518 zcmcE7ks@*G{hX<16=n7(EZlq7iGhJZf$iz0M+^*%No@ZN@__sTj+1STK$?Nu=MYH# zb|z5rC^L{{#SqL;%8yZGsx70>!7JlVD6`OMu<_fCDXf8n#n_3!sIvV+vPWG3e1r!#`=vtaN6 zn+!1=d2nQMf@)pcf5KrK?NCD`@RG^gwK5|^Z4NVY) z?hFHl0AOgQLj9t^P!4sJ0?-;rXr_WgAcvt6-KQ_sZ-3D+;pzV7=U^MLTG0UvR3=77 E03@WAvj6}9 literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/translate/model_waiting_dlg_EN.ts b/resource/en/model_studio/translate/model_waiting_dlg_EN.ts new file mode 100644 index 00000000..e6833435 --- /dev/null +++ b/resource/en/model_studio/translate/model_waiting_dlg_EN.ts @@ -0,0 +1,30 @@ + + + + + Dialog + + + + 正在登录数据库... + 正在登陆数据库... + Logging into the database... + + + + 请耐心等待。。。 + Please wait patiently... + + + + 正在提交登录信息! + 正在提交登陆信息! + Submitting login information! + + + + 正在等待数据库回复。。。 + Waiting for the database response... + + + diff --git a/resource/en/model_studio/translate/plan_curve_EN.qm b/resource/en/model_studio/translate/plan_curve_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..f46a5638fae9a8ba759634313728821911c5010e GIT binary patch literal 7796 zcmb_heNa@_6+gSk^0gnhASyDtWK?2XMOn>)Y_U+qc z-`f{c7`gA=chB#hbME=N$L|i;&ilh>y@x+6E*jr_>e|Qah|E1iv;IPqc82KFF+6`v z^zU=Tf7ocLBD%AJ$n?w5$>Z=Hji~Y}-nd`H<;m_8{KhFlQ{EM>O|a7}paO44Sh( zJPG^6VfUs`M@9wo{p%j(ll5;=}o z)^=@&JoT2}t-<<&WtRWGznCazEF*3FdEm5Wl&!X7zAoeUAvgH_X~xv<3DCWe`RI-X zpc~8F9-a-n8<`U>=*wZseq`t@^jep_rt22wy*W!Z;CqHA=SFui^zqxAPwmeT*{ZCT zr|Q6;&AR96UabGf`gxNC{Y+TDs9XbiR@ml0+lBEJ+Y?)F;=IV#nLdE^n{0iXKZhPZ zu}w6YFh5}X(}x8MHHH?i-J?f33}f%EyhgM677(=kGCIlCOD zyW1dVzQa866WGITN7fCTf7*S=ljZk_7PLERzk~Cb^|<3@X*b3_jwwIv#&)p*AKy#E z&a>zl4v9m+Tbgv}Tn5J6iV9!TmUX^em7YdVy*ubJv9(runtbG?T5?k>*bp>Xa!;S! z+ZP&c)24LNi{t^F7k>j<^!v5x?Nm+8I+&@YIfkRbc5g=#wtGAD*!~hfiVl*BrXzD4vAL?!=+cZ9cVn}ss#a$`6rIT} zyoEdpf0oerap_WzKH0n|8MIx8!*8HQ9C|IqbY>GUQvYCNDAk!RR-rMYufZ=169Hg1 z1G$k}XCliThoo2f^wbXVvgrkI*9erDfN4_On7(uc^epyo1Z9v*0v z&7CKcLY@*lv>mclAz(0F`>BPUm!haF>9q^;(Rby`zt-1PCX$$&np7%wD3sEn1L5;m z^yweg<^|kU@Yqtvf}X-z41coyK=|5aeSEJ9pM_VItiZ2{;p0U7-0m9qoC|vfutJ37 zW;}bSlvB(M$^p>9k>k8@siFnJW#shRp=;ye?hB>z(UbB!hlP`-aH8M?GtaU;V~B|m zgg`=6#$+^aM6*Q@BKk4!qMe*(yQ1jg1Q8~C+al+F5k7VV^@e&k85fhg+Her{P11(87cCp$ihAtDy;SJ_G8)Df#%gK2#wu0o+{8 z+P-yl=s|reN@>iuSUHlE7aT`&--_ZJ@h!hf*01JUQS;O@&Yh?ze8>gNG+U?Th-JAV z>FSW+k(=diVVP3<1%xbp`U0E^spDBM4yzrO|P#6vq(L`SYjqbZ0U5=1ymcGc0( zYjb1{m=N0ZnTp|S`jf(N6#uLEkxSv98zbb@K;xmT0?G(TjI)ir=JO&Zu`H}Eil;e?Ts|dr{8B#ltMEvQ z0Gy;CQPgE5XqJkIF!K<&+IU__qQE)I9>#UJ($G%H!gS(p#>^mUT-s*fU{V;ifvqs3 zt#G&KZIcD_sD6UN!0=6!QDUCWmcsB@P9zqmKfbE zS_eMhW=P5gHY=p3;QFk2;X|j*#kmhcqGpN}GY%FeJNqX0bxHe1q^>jix?=9cvn0@} zs8Z2GrU+QNttH+nO1xuR1)-6AR-oEDSuUA|G7`@0v>u9K?Zt$mS!p5at07mRpHVPJ z5mFb-P6Z@Mu{;fvs#vZ@o5=^uWt~^igB4jS+H0-l&M0yab3`xBp4l+FP4C3JXm+YG z%2jQ$lE|r7SGmw|4GkZ}<7Z=UE-7~*b>J?5b_(lZj-LpRUP_UmHYq#`4x_4P{NSzu zPU8E+ET^)@o#+LNt}wd@uri7Pqp%=TdY^Q&>2?WVp4EBv+8oHOEx2h z>cXvob^cUUAlOc3vT@Kx4A-eZ&n$hdf=?s$>Sm?jVI_=Eajazde-=8+)J%PiDrXZH zJXUO}4MJUFCHB7RU^MLh=A!R$Ih(l|wc@=DCKgl~`vMeSq0xh7a&Jc&sxx6ShAOZP z3A`op!%Uo|4Q9BFcxLTfmK&S+e}%9%)??r%X3lfLiP#u + + + + CCombBoxDelegate + + + 星期日 + Sunday + + + + 星期一 + Monday + + + + 星期二 + Tuesday + + + + 星期三 + Wednesday + + + + 星期四 + Thursday + + + + 星期五 + Friday + + + + 星期六 + Saturday + + + + 否 + No + + + + 是 + Yes + + + + CPlanCurvesConfigure + + + CPlanCurvesConfigure + + + + + 类型配置 + Type Config + + + + 年时段配置 + Year Interval Config + + + + 周时段配置 + Week Interval Config + + + + 日时段模板配置 + Day Interval Temp Config + + + + 计划曲线配置 + PlanCurve Config + + + + 新建类型 + New Type + + + + + + + + + + 保存 + Save + + + + + + + 计划类型 + Plan Type + + + + + + + + + + 删除 + Delete + + + + 新建模板类型 + New Temp Type + + + + 日时段模板类型 + Day Interval Temp Type + + + + 新建年时段配置 + New Year Interval + + + + 新建周时段配置 + New Week Interval + + + + 新建日时段配置 + New Day Interval + + + + + 日模板类型 + Day Temp Type + + + + 新建计划曲线 + New PlanCurve + + + + 关联标签 + Related Tag + + + + 计划曲线名称 + Name + + + + 类型ID + Type ID + + + + 所属位置 + Location + + + + 所属专业 + Subsystem + + + + 时段曲线配置 + Interval Curve Config + + + + 导入模板 + Import Temp + + + + 新建 + New + + + + 预览 + Preview + + + + + 否 + No + + + + 是 + Yes + + + + 星期日 + Sunday + + + + 星期一 + Monday + + + + 星期二 + Tuesday + + + + 星期三 + Wednesday + + + + 星期四 + Thursday + + + + 星期五 + Friday + + + + 星期六 + Saturday + + + + + + + ID + + + + + + 类型名称 + Name + + + + 年时段名称 + Name + + + + 是否例外 + isException + + + + 开始月 + Start Month + + + + 开始日 + Start Day + + + + 结束月 + End Month + + + + 结束日 + End Day + + + + 周时段名称 + Name + + + + 星期 + Week + + + + 年时段 + Year Interval + + + + 周时段 + Week Interval + + + + valueId + + + + + + + 日时段名称 + Name + + + + + 开始时间 + Start Time + + + + + 结束时间 + End Time + + + + + 值 + Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 提示 + Prompt + + + + + + + + + 保存成功! + Save Successfully! + + + + + + + + + 保存失败! + Save failed! + + + + 行: %1 结束时间不能小于开始时间! + Row:%1 End time cannot less than start time! + + + + 行: %1 与行:%2 时间段不连续! + Row: %1 is not discontinuous with Row: %2! + + + + 周时段配置需覆盖一整周 + Week interval configuration needs to cover the entire week + + + + %1 : 开始月不能大于结束月! + %1 : Begin month cannot be bigger than the end month! + + + + %1 : 开始日不能大于结束日! + %1 : Begin day cannot be bigger than the end day! + + + + + 年配置需要覆盖全年! + Year interval configuration need to cover the whole year! + + + + 请从1月1日开始配置! + Please start configuration from January 1st! + + + + 请配置到12月31日! + Please configure until December 31! + + + + 模拟量出口 + Analog output + + + + 是否删除曲线'%1'? + Delete curve '%1' ? + + + + 删除成功! + Delete successfully! + + + + 删除失败! + Delete failed! + + + + + + 计划类型为空,请检查类型配置! + The plan type is empty,please check type config! + + + + 周时段配置被使用,无法保存! + Week interval configuration is in use, cannot be saved! + + + + 日模板类型为空,请检查类型配置! + The day temp type is empty,please check type config! + + + + 未找到年描述 + No year description found + + + + 未找到周描述 + No week description found + + + + 导入失败 + Import failed + + + + 导入成功 + Import successfully + + + diff --git a/resource/en/model_studio/translate/statics_analysis_EN.qm b/resource/en/model_studio/translate/statics_analysis_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..0fe96dbc3964bb8f1fe1392a4b79b19a2d302d20 GIT binary patch literal 10915 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 literal 0 HcmV?d00001 diff --git a/resource/en/model_studio/translate/statics_analysis_EN.ts b/resource/en/model_studio/translate/statics_analysis_EN.ts new file mode 100644 index 00000000..9da80f50 --- /dev/null +++ b/resource/en/model_studio/translate/statics_analysis_EN.ts @@ -0,0 +1,676 @@ + + + + + KbdPointDlg + + + 位置 + Location + + + + 专业 + Specialty + + + + 设备组 + Device Group + + + + 点类型 + Point Type + + + + 模拟量 + Analog Quantity + + + + 数字量 + Digital Quantity + + + + 累积量 + Cumulative Quantity + + + + 混合量 + Mixed Quantity + + + + StatLinkInstDlg + + + + + + + + + + 消息 + Message + + + + 是否开始关联统计实例[ %1 ] +这将清空现有的参数组的子参数以及参数的测点绑定 + Do you want to start associating the statistical instance [ %1 ]? +This will clear the existing sub-parameters of the parameter group and the binding of measurement points. + + + + + + 关联失败 + Association Failed + + + + + + 关联成功 + Association Successful + + + + + + + 当前设备模板 + Current Device Template + + + + + + 当前统计关联 + Current Statistical Association + + + + + 开始关联统计实例[ %1 ] +这将清空与[ %2 ]有关的参数组下的子参数和关联 +是否继续 + Start associating the statistical instance [ %1 ]? +This will clear the sub-parameters and associations under the parameter group related to [ %2 ]. +Do you want to continue? + + + + + 开始关联统计实例[ %1 ] +这将清空[ %2 ]有关的关联和 +是否继续 + Start associating the statistical instance [ %1 ]? +This will clear the associations related to [ %2 ]. +Do you want to continue? + + + + 关联列表 + Association List + + + + 点绑定信息 + Point Binding Information + + + + 开始关联 + Start Association + + + + 取消 + Cancel + + + + 数据库链接错误 + Database Connection Error + + + + + 删除 + Delete + + + + 添加设备到左侧列表 + Add Device to Left List + + + + + 关联 + Associate + + + + 输入 + Input + + + + 输出 + Output + + + + 此次修改失败,已启动回滚! + This modification failed, rollback has been initiated! + + + + StaticsWidget + + + + + + + 添加记录 + Add Record + + + + + + + + 修改记录 + Edit Record + + + + + + + + 删除记录 + Delete Record + + + + + 输入 + Input + + + + + 输出 + Output + + + + + 参数编辑 + Parameter Edit + + + + + + 保存 + Save + + + + 输入生成 + Generate Input + + + + 输出生成 + Generate Output + + + + 生成输入/输出并保存 + Generate Input/Output and Save + + + + 函数体 + Function Body + + + + 位置 + Location + + + + 专业 + Specialization + + + + 禁用所有统计实例 + Disable All Statistics Instances + + + + 输入参数关联 + Input Parameter Association + + + + 输出参数关联 + Output Parameter Association + + + + + 添加 + Add + + + + + + + 删除 + Delete + + + + + + + 上移 + Move Up + + + + + + + 下移 + Move Down + + + + + + + 置顶 + Move to Top + + + + + + + 置底 + Move to Bottom + + + + + + + 添加子参数 + Add Sub-parameter + + + + + 生成 + Generate + + + + 开始关联 + Start Association + + + + 复制关联 + Copy Association + + + + + + + + 添加失败 + Add Failed + + + + + + + + + + 读取数据库失败 + Failed to Read Database + + + + + + + + 删除失败 + Delete Failed + + + + + 请先选择要添加的函数模板 + Please Select a Function Template to Add First + + + + + 数据库链接不成功 + Database Connection Failed + + + + + + 请选中要修改的条目 + Please select the item to modify + + + + 请先选择要删除的函数模板 + Please select the function template to delete first + + + + 复制关联-请输入新的关联名 + Copy Association - Please enter a new association name + + + + 标签名已存在,请修改 + Label name already exists, please modify + + + + 复制失败! + Copy failed! + + + + + 保存失败: + Save failed: + + + + + + 保存失败 + Save failed + + + + + + 保存成功 + Save successful + + + + + 获取系统信息失败 + Failed to obtain system information + + + + + + 修改失败 + Modification failed + + + + 禁用失败 + Disable failed + + + + 禁用成功 + Disable successful + + + + + 请先选择前置设备 + Please select the front device first + + + + + 添加成功 + Add successful + + + + + 修改成功 + Modification successful + + + + + + + 删除失败! + Delete failed! + + + + + 删除成功! + Delete successful! + + + + + 无法读取数据库 + Unable to read the database + + + + + + + + + + 数据库链接错误 + Database connection error + + + + 无法查询该数据类型 + Unable to query this data type + + + + + 无法查询位置和专业 + Unable to query location and specialization + + + + + + + + + + + + + 请选中函数实例 + Please select a function instance + + + + + 删除成功 + Delete successful + + + + + + + + + + + 请选中对应函数 + Please select the corresponding function + + + + + + + + + + + + + + + + + + + 请选中要移动的条目 + Please select the items to move + + + + + + + + + + + + + + + + + + + 数据库查询失败! + Database query failed! + + + + + + + 上移失败 + Move up failed + + + + + + + 下移失败 + Move down failed + + + + + + + + 置顶失败 + Move to top failed + + + + + + 置底失败 + Move to bottom failed + + + + 统计实例绑定数据异常 + Statistical instance binding data exception + + + + 暂无可用统计关联,请创建 + No available statistical association, please create one + + + + 请选择要绑定的计算实例 + Please select the computing instance to bind + + + + 数据格式不对 + Data format is incorrect + + + + 消息 + Message + + + + %1 与 %2 进行绑定? + Bind %1 with %2? + + + + 绑定失败 + Binding failed + + + + 绑定成功 + Binding successful + + + + + 无法识别拖拽数据的格式 + Unable to recognize the format of the dragged data + + + + 请拖拽到正确的输入参数上 + Please drag to the correct input parameter + + + + 请拖拽到正确的输出参数上 + Please drag to the correct output parameter + + + diff --git a/resource/en/model_studio/translate/tableName.json b/resource/en/model_studio/translate/tableName.json new file mode 100644 index 00000000..9410df9a --- /dev/null +++ b/resource/en/model_studio/translate/tableName.json @@ -0,0 +1,42 @@ +{ +"ALARM_ACTION_DEFINE": "报警动作", +"ALARM_KEYWORD_DEFINE": "报警关键字", +"ALARM_TYPE_DEFINE": "报警类型", +"ALARM_STATUS_DEFINE": "报警状态", +"ALARM_LEVEL_DEFINE":"报警优先级定义", +"ALARM_MANNER_DEFINE": "报警方式定义", +"ALARM_LEVEL_SOUND_DEF":"责任区语音定义", +"DEV_TYPE_DEF":"设备类型表", +"DEV_GROUP":"设备分组", +"OPT_HANDOVER_GRP":"权限移交组", +"OPT_TOKEN_DEFINE":"标志牌", +"OPT_SHIELD_DEFINE":"屏蔽表定义", +"OPT_CTRL_ACT_DEFINE":"控制动作组", +"DICT_STATE_TEXT_INFO":"数字量文本", +"DICT_VOL_LEVEL":"电压等级", +"DICT_UNIT_INFO":"单位定义", +"ATS_FES_LOCATION_INFO":"ATS车站配置表", +"ATS_FES_PLATFORM_INFO":"前置站台配置表", +"BAS_CRAFT_DEF":"工艺定义", +"BAS_MODE_TYPE":"模式类型", +"BAS_MODE_DEF":"模式定义", +"BAS_TIMETABLE_CTRL_PARAM":"时间表控制参数配置", +"BAS_TIMETABLE_DEF":"时间表定义", +"BAS_TIMETABLE_INFO":"时间表信息表", +"BAS_TIMETABLE_SCHEDULE":"时间表计划", +"PA_AREA_INFO":"PA广播区列表", +"PA_LOCATION_AREA_DEF":"车站广播区定义", +"PA_LOCATION_SEQ_DEF":"PA系统车站序号定义", +"PA_AUDIO_INFO":"预录语音信息", +"PA_BROADCAST_GROUP":"广播组", +"PA_CTRL_PARAM":"PA控制参数配置", +"PA_OPERATOR_DEF":"PA操作员定义", +"PA_OPERATOR_MAP":"操作员与PA操作员映射", +"PA_TIMED_AUDIO":"定时广播", +"PIS_FES_LOCATION_INFO":"前置PIS乘客信息配置表", +"PIS_AREA_INFO":"PIS区域信息", +"PIS_LOCATION_AREA_DEF":"PIS车站发布区定义表", +"PIS_DISPLAY_INFO":"PIS发布记录表", +"PIS_MESSAGE_INFO":"PIS信息表", +"PIS_CTRL_PARAM":"PIS控制参数配置" +} \ No newline at end of file diff --git a/resource/en/operate_server/translate/operate_server_en.mo b/resource/en/operate_server/translate/operate_server_en.mo new file mode 100644 index 0000000000000000000000000000000000000000..81515b05ba139c219b22adb49a8f4c7c804a7c6c GIT binary patch literal 11768 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 M?5)错误,请检查控制动作组配置!" +msgstr "" +"Control action group[Number of Remote Control Component](<1 or >5)error," +"please check the configuration of control action group!" + +#: OptControl.cpp:309 +msgid "控制动作组中[遥控点索引](<1 or >5)错误,请检查控制动作组配置!" +msgstr "" +"Control action group[Index of Remote Control Point](<1 or >5)error,please " +"check the configuration of control action group!" + +#: OptControl.cpp:316 +msgid "控制动作组中[遥控点索引]>[遥控分量数]错误,请检查控制动作组配置!" +msgstr "" +"Control action group[Index of Remote Control Point]>[Number of Remote " +"Control Component]error,please check the configuration of control action " +"group!" + +#: OptControl.cpp:337 +msgid "JSON KeyIdTag 格式错误 !" +msgstr "JSON Tag format error!" + +#: OptControl.cpp:350 +msgid "获得测点基本参数信息错误 !" +msgstr "Error in obtaining basic parameter information of measuring point!" + +#: OptControl.cpp:385 +msgid "获取设备当前值与状态错误!" +msgstr "Error in obtaining current value and status of deviec!" + +#: OptControl.cpp:454 +msgid "获取数字量控制信息表失败,请重试 !" +msgstr "Failed to get digital control infomation table,please try again!" + +#: OptControl.cpp:474 +msgid "没有配置控制动作组,请检查配置 !" +msgstr "No control action group is configured,please check the configuration!" + +#: OptControl.cpp:502 +msgid "获取混合量控制信息表失败,请重试 !" +msgstr "Failed to get mix control infomation table,please try again!" + +#: OptControl.cpp:551 +msgid "获取模拟量控制信息表失败,请重试 !" +msgstr "Failed to get analog control infomation table,please try again!" + +#: OptControl.cpp:668 OptControl.cpp:690 +msgid "遥控请求失败:" +msgstr "Remote control request failed:" + +#: OptControl.cpp:774 +msgid "遥控请求失败!!!" +msgstr "Remote control request failed!!!" + +#: OptControl.cpp:779 +msgid "遥控请求成功!" +msgstr "Remote control request success!" + +#: OptControl.cpp:833 +msgid "控制类型为直接控制不需要遥控选择!" +msgstr "Control type is direct control, no remote control selection required!" + +#: OptControl.cpp:845 +msgid "设备操作正忙,请稍后重试 !" +msgstr "Equipment operation is busy,please try again later!" + +#: OptControl.cpp:857 +msgid "只有数字量和混合量支持遥控选择 !" +msgstr "Only digital and mixed support remote control selection!" + +#: OptControl.cpp:870 +msgid "关联前置遥控号为空,请检查配置!" +msgstr "" +"The associated prepositive remote control number is empty,please check the " +"configuration!" + +#: OptControl.cpp:882 +msgid "设备当前值不允许控制到目标值!" +msgstr "" +"The current value of the device is not allowed to control to the target " +"value!" + +#: OptControl.cpp:902 +msgid "当前值与目标值一致,遥控选择失败!" +msgstr "" +"The current value is consistent with the target value,remote control " +"selection failed!" + +#: OptControl.cpp:1139 OptControl.cpp:1152 +msgid "遥控选择失败:" +msgstr "Remote control selection failed:" + +#: OptControl.cpp:1184 +msgid "遥控选择失败:选择命令发送失败!" +msgstr "Remote control selection failed: send selection command failed!" + +#: OptControl.cpp:1195 +msgid "遥控选择失败:控制信息表中插入记录失败!" +msgstr "" +"Remote control selection failed: insert record to control infomation table " +"failed!" + +#: OptControl.cpp:1377 OptControl.cpp:1531 OptControl.cpp:2520 +msgid "遥控执行失败 \n" +msgstr "Remote control execution failed \n" + +#: OptControl.cpp:1688 +msgid "遥控选择失败 !\n" +msgstr "Remote control selection failed!\n" + +#: OptControl.cpp:1695 +msgid "遥控选择成功 !" +msgstr "Remote control selection success!" + +#: OptControl.cpp:1770 +msgid "遥控关闭失败:" +msgstr "Remote control close failed:" + +#: OptControl.cpp:1837 OptControl.cpp:1847 +msgid "命令执行失败:" +msgstr "Command execution failed:" + +#: OptControl.cpp:1860 +msgid "命令执行失败:命令发送失败!" +msgstr "Command execution failed: send command failed!" + +#: OptControl.cpp:1879 +msgid "命令执行失败:控制信息表中插入记录失败!" +msgstr "" +"Command execution failed: insert record to control infomation table failed!" + +#: OptControl.cpp:2015 +msgid "命令执行失败" +msgstr "Command execution failed" + +#: OptControl.cpp:2021 +msgid "命令执行成功" +msgstr "Command execution success" + +#: OptControl.cpp:2199 OptControl.cpp:2212 +msgid "控制执行失败:" +msgstr "Remote control execution failed:" + +#: OptControl.cpp:2245 +msgid "遥控执行失败:控制命令发送失败!" +msgstr "Remote control execution failed: send control command failed!" + +#: OptControl.cpp:2258 +msgid "遥控执行失败:控制信息表中插入记录错误!" +msgstr "" +"Remote control execution failed: insert record to control infomation table " +"failed!" + +#: OptControl.cpp:2785 OptControl.cpp:2798 +msgid "控制取消失败:" +msgstr "Remote control revoke failed:" + +#: OptControl.cpp:2839 +msgid "遥控取消指令发送失败!" +msgstr "Send remote control revoke instruction failed!" + +#: OptControl.cpp:3099 OptControl.cpp:3429 +msgid "遥控选择超时!" +msgstr "Remote control selection timeout!" + +#: OptControl.cpp:3107 OptControl.cpp:3433 +msgid "遥控执行超时!" +msgstr "Remote control execution timeout!" + +#: OptControl.cpp:3113 +msgid "遥控取消超时!" +msgstr "Remote control revoke timeout!" + +#: OptControl.cpp:3119 +msgid "命令执行超时!" +msgstr "Command execution timeout!" + +#: OptControl.cpp:3261 +msgid "遥控请求失败!" +msgstr "Remote control request failed!" + +#: OptControl.cpp:3313 OptControl.cpp:3339 +msgid "遥控选择失败!" +msgstr "Remote control selection failed! " + +#: OptControl.cpp:3366 OptControl.cpp:3394 +msgid "遥控执行失败!" +msgstr "Remote control execution failed!" + +#: OptControl.cpp:3408 +msgid "遥控执行成功!" +msgstr "Remote control execution success!" + +#: OptControl.cpp:3707 OptControl.cpp:3731 +msgid "控制点设置" +msgstr "Control point setting" + +#: OptControl.cpp:3710 OptControl.cpp:3734 +msgid "[人工置数]" +msgstr "[Manual Setting]" + +#: OptControl.cpp:3714 OptControl.cpp:3738 +msgid "[禁止刷新]" +msgstr "[Prohibit to refresh]" + +#: OptControl.cpp:3718 OptControl.cpp:3742 +msgid "[禁止控制]" +msgstr "[Prohibit to control]" + +#: OptControl.cpp:3720 OptControl.cpp:3744 OptShieldSet.cpp:117 OptToken.cpp:56 +msgid ",禁止控制!" +msgstr ",prohibit to control!" + +#: OptHandover.cpp:322 +msgid "获取测点权限移交组参数失败!" +msgstr "" +"Failed to get permission transfer group parameters of measurement point!" + +#: OptHandover.cpp:338 +msgid "获取设备控制权参数失败!" +msgstr "Failed to get the device control permission parameters!" + +#: OptHandover.cpp:343 +msgid "设备控制权不在本系统!" +msgstr "The device control permisson not in this system!" + +#: OptHandover.cpp:451 +msgid " 请求控制权限移交 等待接收" +msgstr "Request control permisson transfer. Waiting to receive" + +#: OptHandover.cpp:456 +msgid " 请求控制权限移交 超时" +msgstr "Request control permisson transfer. Timeout" + +#: OptHandover.cpp:464 +msgid " 接收控制权限 成功" +msgstr "Receive control permisson. Success" + +#: OptHandover.cpp:470 +msgid " 强制收回控制权限 成功" +msgstr "Enforce the recall of control permission. Success" + +#: OptHandover.cpp:476 +msgid " 控制权限移交 拒绝接收" +msgstr "Control permission transfer. Refuse to accept" + +#: OptHandover.cpp:570 +msgid "移交中" +msgstr "In the transfer" + +#: OptHandover.cpp:575 +msgid "移交超时" +msgstr "Transfer timeout" + +#: OptHandover.cpp:584 +msgid "移交成功" +msgstr "Transfer success" + +#: OptHandover.cpp:591 +msgid "拒绝接收" +msgstr "Refuse to accept" + +#: OptShieldSet.cpp:100 +msgid "设备设置" +msgstr "Device settings" + +#: OptShieldSet.cpp:434 +msgid "全站" +msgstr "Total station" + +#: OptShieldSet.cpp:437 +msgid "按责任区" +msgstr "According to the area" + +#: OptShieldSet.cpp:440 +msgid "按电压等级" +msgstr "According to the voltage grade" + +#: OptShieldSet.cpp:443 +msgid "按设备组" +msgstr "According to the device group" + +#: OptShieldSet.cpp:446 +msgid "单设备" +msgstr "Single device" + +#: OptShieldSet.cpp:449 +msgid "UNKOWN" +msgstr "UNKOWN" + +#: OptShieldSet.cpp:507 +msgid "屏蔽ID" +msgstr "Shield ID" + +#: OptShieldSet.cpp:514 +msgid "设置操作 " +msgstr "Set operation" + +#: OptShieldSet.cpp:514 +msgid "取消操作 " +msgstr "Cancel operation" + +#: OptShieldSet.cpp:520 OptToken.cpp:563 +msgid "注释:" +msgstr "Annotation:" + +#: OptShieldSet.cpp:523 +msgid "操作成功" +msgstr "Operation success" + +#: OptShieldSet.cpp:523 +msgid "操作失败" +msgstr "Operation failed" + +#: OptTagSet.cpp:231 +msgid "点标签操作成功" +msgstr "Point Tags operation success" + +#: OptTagSet.cpp:626 +msgid "限值设置成功" +msgstr "Set limit value successful" + +#: OptTagSet.cpp:631 +msgid "限值设置失败" +msgstr "Set limit value failed" + +#: OptToken.cpp:21 +msgid "挂牌检查错误" +msgstr "Error in listing inspection" + +#: OptToken.cpp:36 +msgid "设备挂" +msgstr "Device listed" + +#: OptToken.cpp:420 OptToken.cpp:421 +msgid "标志牌同步" +msgstr "Denoter synchronization" + +#: OptToken.cpp:453 +msgid "挂牌成功" +msgstr "Listing success" + +#: OptToken.cpp:457 +msgid "摘牌成功" +msgstr "Delisting success" + +#: OptToken.cpp:461 +msgid "改牌成功" +msgstr "Change the placard success" + +#: OptToken.cpp:465 +msgid "移牌成功" +msgstr "Move the placard success" + +#: OptToken.cpp:497 +msgid " 挂" +msgstr " Hang " + +#: OptToken.cpp:502 +msgid " 摘" +msgstr " Pick " + +#: OptToken.cpp:507 +msgid " 移动" +msgstr "Move" + +#: OptToken.cpp:512 +msgid " 修改" +msgstr "Modify" + +#: OptToken.cpp:551 +msgid "挂牌ID" +msgstr "Listing ID" + +#: OptToken.cpp:595 +msgid "成功" +msgstr "success" + +#~ msgid " 用户组:" +#~ msgstr "User group:" + +#~ msgid " 操作用户:" +#~ msgstr "Operation user:" + +#~ msgid " 操作主机名:" +#~ msgstr "Operation hostname:" + +#~ msgid "遥控操作失败:获得测点控制信息错误 !" +#~ msgstr "" +#~ "Remote control operation failed: error in obtaining control information!" diff --git a/resource/en/pub_widget/translate/pub_widget_en.qm b/resource/en/pub_widget/translate/pub_widget_en.qm new file mode 100644 index 0000000000000000000000000000000000000000..df56db9e364780b3208682c23582e2e8b9d68ba6 GIT binary patch literal 1165 zcmaixPiWI{6vtoxm@cIx4n%gC!=Z_qzRIeDkK zZ>LTmuKd$=&c0She4P9B^Ecw3_B8m4`&&H@ZiHtC9i8WU`s2{IeDB8@ROk4?*&2%=`PMG=p78Cl7XAijEgjlN(NnUYw=cL(_Aduxtuw_ z)p%X>D0-BVDC2+%zL~Z`S!*?CmY$gpmV7V?-F>j71a<*Gy%2x^ literal 0 HcmV?d00001 diff --git a/resource/en/pub_widget/translate/pub_widget_en.ts b/resource/en/pub_widget/translate/pub_widget_en.ts new file mode 100644 index 00000000..fd35e76c --- /dev/null +++ b/resource/en/pub_widget/translate/pub_widget_en.ts @@ -0,0 +1,112 @@ + + + + + CustomCalendarWidget + + + first + first + + + + last + last + + + + CustomDialogTitle + + + 关闭 + Close + + + + MainTitle + + + 最小化 + Minimize + + + + + 最大化 + Maximize + + + + 关闭 + Close + + + + 正常 + Normal + + + + 提示 + Tip + + + + 是否退出? + Do you want to exit? + + + + N_MessageBox + + + 警告 + Warning + + + + 错误 + Error + + + + 提示 + Tip + + + + 问题 + Problem + + + + 全部是 + All Yes + + + + 全部否 + All No + + + + 确定 + OK + + + + 取消 + Cancel + + + + 是 + Yes + + + + 否 + No + + + diff --git a/resource/en/report/translate/report.qm b/resource/en/report/translate/report.qm new file mode 100644 index 0000000000000000000000000000000000000000..c47581ceba304485937b8a9bd122a6c7abdc8cc9 GIT binary patch literal 319 zcmcE7ks@*G{hX<16=n7(EZlq7iGhJZfrDX92avYrd?>ULNblu*xxfNQm-2h+`vGZ& zOa=x8l%a?rj{_vd2Es4)PkB0f9y^dJ;vAG(kY7|1T#}faothG! znUbDb!U)mo%22^jz>p8rS_0R~^K|{5r|r9*buE3da0SQ!UZ?>`I;FstLUl4IFgO8C v$Y&^LC}v1Sm;*84+1CCS%R7iP#|7w>VxZsBk-WkKG3WW7X)pFo#9|Hr + + + + CReportStackedWidget + + + 返回 + Return + + + + CReportWidget + + + 报表浏览 + Report Browse + + + + 报表编辑 + Report Design + + + + 导出报表 + Export + + + diff --git a/resource/en/sequence_server/translate/sequence_server_en.mo b/resource/en/sequence_server/translate/sequence_server_en.mo new file mode 100644 index 0000000000000000000000000000000000000000..89bfef93079aea713e09216306a66f5791d3f636 GIT binary patch literal 5627 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/ + alternate-background-color: #001d46; + background: #032448; + border: 1px solid #0070a2; +} + + diff --git a/resource/en/style/dark/AlarmStatisWidget.qss b/resource/en/style/dark/AlarmStatisWidget.qss new file mode 100644 index 00000000..9deccdae --- /dev/null +++ b/resource/en/style/dark/AlarmStatisWidget.qss @@ -0,0 +1,98 @@ +QFrame#frame{ + border:0px solid #0a5b93; +} + +QComboBox#m_contrasComb{ + min-width:60px; +} + +QDateEdit#m_contrastTime{ + min-width:100px; +} + +QTableView QTableCornerButton::section { + background-color:transparent; +} + +QListView::item, +QTreeWidget::item{ + height:30px; +} +QListView::item:hover, +QListView::item:selected, +QTreeWidget::item:hover, +QTreeWidget::item:selected{ + background-color:#134a72; + color:#02efef; +} + +QTabWidget QWidget{ + background:#0b2a51; +} +QTabWidget::pane { + border: 1px solid #0669af; + padding: 0px; +} +QTabBar:tab { + width : 113px; + height: 35px; + color: #01a6ec; + background:#0669af; + font-size:16px; + font-weight:Bold; + border:none; +} +QTabBar:tab:selected { + color: #02efef; + background-color: #134a72; + border-bottom:none; +} +CToolTip{ + background:#0669af; +} +QLabel#tipLabel{ + background:#0669af; + color:#01a6ec; + padding:6px; +} +CSWitchButton { + qproperty-backgroundColor: #01a6ec; + qproperty-checkedColor: #01a6ec; + qproperty-handleColor: #12568B;; + qproperty-textColor: white; + qproperty-borderColor:#0a5b93; +} +ContrastWidget, +CDrillDownChart{ + qproperty-labelColor: #333333; + qproperty-gridLineColor: #1A384C; + qproperty-labelsColor: #01a6ec; + qproperty-titleColor: #01a6ec; + qproperty-legendColor: #01a6ec; + qproperty-backgroundColor: #022644; +} +CCurveChartView{ + qproperty-plotTickColor: #017fb7; + qproperty-plotLinePen: #023F63; + qproperty-plotGridColor: #1A384C; + qproperty-plotLegendColor: #01a6ec; + qproperty-plotBackgroundColor:#022644; +} + +QToolButton{ + border: 0px solid #0669af; + border-radius: 0px; + background-color: #0b2a51; + min-height:26px; + width:80px; + color:#01a6ec; +} + +QDateEdit::drop-down{ + width:11px; + height:7px; + border-image: url(../../resource/zh/public/dark/icon/box-down-select.png); + margin-right: 10px; + subcontrol-origin: margin; + subcontrol-position: center right; +} diff --git a/resource/en/style/dark/BriefReport.qss b/resource/en/style/dark/BriefReport.qss new file mode 100644 index 00000000..7133ea6e --- /dev/null +++ b/resource/en/style/dark/BriefReport.qss @@ -0,0 +1,212 @@ +QFrame#frame{ + border:none; + background-color: #0b2a51; +} +QFrame#frame_event{ + background-color: #0c3569; +} + +QLineEdit#iconLineEdit{ +color:#027bb3; +background:#072d48; +border:1px solid #0669af; +height:22px; +} + +QPushButton#ok{ +width:80px; +height:26px; +} + +QPushButton#iconButton{ +background:#001529; +image:url(../../resource/zh/public/dark/icon/calendar.png); +} + +QPushButton#iconButton:hover{ +background:#027bec; +} + +QFrame#MainFrame{ + border:none; + background-color: rgba(3,22,36,1); +} +QFrame#Frame{ + border:none; + background-color: rgba(3,22,36,1); +} +QTabWidget::pane{ + border:none; +} +QTabWidget QStackedWidget{ + background:transparent; +} + +QPushButton#DayButton, +QPushButton#WeekButton, +QPushButton#MonthButton, +QPushButton#QuarterButton, +QPushButton#YearButton{ + width:30px; + border-radius:0px; + color: #027bb3; + background:#0d3756; +} +QPushButton#DayButton:pressed, +QPushButton#WeekButton:pressed, +QPushButton#MonthButton:pressed, +QPushButton#QuarterButton:pressed, +QPushButton#YearButton:pressed{ +color:#02efef; +background:#0069eb; +} +QPushButton#DayButton:hover, +QPushButton#WeekButton:hover, +QPushButton#MonthButton:hover, +QPushButton#QuarterButton:hover, +QPushButton#YearButton:hover{ +color:#02efef; +background-color: #0069eb; +} + +QPushButton#DayButton:checked, +QPushButton#WeekButton:checked, +QPushButton#MonthButton:checked, +QPushButton#QuarterButton:checked, +QPushButton#YearButton:checked{ + color:#02efef; + background-color: #0069eb; +} + +QPushButton#ExportButton{ + border-radius:0px; + color: #027bb3; + background:#0d3756; +} +QPushButton#ExportButton:pressed{ + color:#02efef; + background:#0069eb; +} +QPushButton#ExportButton:hover{ + color:#02efef; + background-color: #0069eb; +} + +QPushButton#QueryButton{ + border-radius:0px; + color: #027bb3; + background:#0d3756; +} +QPushButton#QueryButton:pressed{ + color:#02efef; + background:#0069eb; +} +QPushButton#QueryButton:hover{ + color:#02efef; + background-color: #0069eb; +} + +QPushButton#PushButton1{ + border-radius:0px; + min-width:200px; + color: #027bb3; + background:#0d3756; +} +QPushButton#PushButton1:pressed{ + color: #02efef; +background:#0069eb; +} +QPushButton#PushButton1:hover{ + color: #02efef; +background-color: #0069eb; +} +QPushButton#PushButton2{ + border-radius:0px; + min-width:200px; + color: #027bb3; + background:#0d3756; +} +QPushButton#PushButton2:pressed{ + color: #02efef; + background:#0069eb; +} +QPushButton#PushButton2:hover{ + color: #02efef; + background-color: #0069eb; +} + +QPushButton#PushButton3{ + border-radius:0px; + min-width:200px; + color: #027bb3; + background:#0d3756; +} +QPushButton#PushButton3:pressed{ + color: #02efef; +background:#0069eb; +} +QPushButton#PushButton3:hover{ + color: #02efef; +background-color: #0069eb; +} +QPushButton#PushButton4{ + border-radius:0px; + min-width:200px; + color: #027bb3; + background:#0d3756; +} +QPushButton#PushButton4:pressed{ + color: #02efef; + background:#0069eb; +} +QPushButton#PushButton4:hover{ + color: #02efef; + background-color: #0069eb; +} + +QPushButton#PushButton1:checked, +QPushButton#PushButton2:checked, +QPushButton#PushButton3:checked, +QPushButton#PushButton4:checked{ + color:#02efef; + background-color: #0069eb; +} + +QTableView#TableWidget1{ + border:1px solid #024376; + background:transparent; + color: rgba(1,139,219,1); +} +QTableView#TableWidget2{ + border:1px solid #024376; + background:transparent; + color: rgba(1,139,219,1); +} +QTableView#TableWidget3{ + border:1px solid #024376; + background:transparent; + color: rgba(1,139,219,1); +} +QTableView#TableWidget4{ + border:1px solid #024376; + background:transparent; + color: rgba(1,139,219,1); +} + +QHeaderView::section{ + border:1px; + height:30px; + color: rgba(1,139,219,1); + background-color:rgba(13,55,86,1); +} +QHeaderView{ + background-color:rgba(13,55,86,1); +} +QToolButton{ + border: 0px solid #0669af; + border-radius: 0px; + background-color: #0b2a51; + min-height:26px; + width:80px; + color:#01a6ec; +} \ No newline at end of file diff --git a/resource/en/style/dark/DeviceNavWidget.qss b/resource/en/style/dark/DeviceNavWidget.qss new file mode 100644 index 00000000..fb01c325 --- /dev/null +++ b/resource/en/style/dark/DeviceNavWidget.qss @@ -0,0 +1,25 @@ +CDeviceNavWidget{ + /*min-width: 2000px;*/ + /*min-height: 48px;*/ + /*max-height: 48px;*/ + border: 1px solid #0a2a6b; + background: qlineargradient(x1:0, y1:0,x2:1,y2:0, + stop: 0 #125cb5, + stop: 0.26 #0e428d, + stop: 1 #0a2864); + opacity: 0.4; +} + +QPushButton{ + font-size: 16px; + font-family: Microsoft YaHei; + border: none; + color: #a7bee3; +} +QPushButton:hover{ + font-size: 16px; + font-family: Microsoft YaHei; + font-weight: bold; + border: none; + color: #e6c72e; +} diff --git a/resource/en/style/dark/SecondButtonGroupWidget.qss b/resource/en/style/dark/SecondButtonGroupWidget.qss new file mode 100644 index 00000000..c14135a6 --- /dev/null +++ b/resource/en/style/dark/SecondButtonGroupWidget.qss @@ -0,0 +1,19 @@ +QPushButton { + border: 2px solid black; + background-color: #00000000; + font-size: 18px; + font-weight: bold; + font-family: "Microsoft YaHei"; + color: #00D3FF; + width: 222px; + height: 46px; + border-image:url(../../data/back_pixmap/unselect.png); +} +QPushButton:hover { + background-color: #00000000; + border-image:url(../../data/back_pixmap/selected.png); +} +QPushButton:checked { + background-color: #00000000; + border-image:url(../../data/back_pixmap/selected.png); +} \ No newline at end of file diff --git a/resource/en/style/dark/StationNavWidget.qss b/resource/en/style/dark/StationNavWidget.qss new file mode 100644 index 00000000..50f99267 --- /dev/null +++ b/resource/en/style/dark/StationNavWidget.qss @@ -0,0 +1,19 @@ +CStationNavWidget{ + background-color:#0a2355; + font: 14pt "Microsoft YaHei"; + /*min-width: 1000px;*/ + /*max-width:1000px;*/ + /*min-height: 100px;*/ + /*max-height: 100px;*/ +} + +QPushButton{ + border: none; + color: #FFFFFF; + font-size: 14px; +} +QPushButton:hover{ + border: none; + color: #38e8fd; + font-size: 14px; +} diff --git a/resource/en/style/dark/SysParamWidget.qss b/resource/en/style/dark/SysParamWidget.qss new file mode 100644 index 00000000..d3845192 --- /dev/null +++ b/resource/en/style/dark/SysParamWidget.qss @@ -0,0 +1,15 @@ +QWidget#widget_bk { + background:rgba(94, 116, 138,0.20); +} +QWidget#widget_time1 { + background:rgba(94, 116, 138, 0.20); +} +QWidget#widget_ip1 { + background:rgba(94, 116, 138, 0.20) +} + +QLabel#label,QLabel#label_4,QLabel#lab_ipSetTitle +{ + font-weight: bold; + color:rgba(0, 211, 255, 1) +} diff --git a/resource/en/style/dark/WebBrowserWidget.qss b/resource/en/style/dark/WebBrowserWidget.qss new file mode 100644 index 00000000..4795d269 --- /dev/null +++ b/resource/en/style/dark/WebBrowserWidget.qss @@ -0,0 +1,4 @@ +QTabWidget::pane{ + padding:0px; + border:0px; +} \ No newline at end of file diff --git a/resource/en/style/dark/alarm.qss b/resource/en/style/dark/alarm.qss new file mode 100644 index 00000000..0dc5f84a --- /dev/null +++ b/resource/en/style/dark/alarm.qss @@ -0,0 +1,134 @@ +QAbstractItemView::item:selected:focus { + background: #FFC14E; + color: #FFFFFF; +} + +QAbstractItemView::item:selected:!focus { + background: #FFC14E; + color: #FFFFFF; +} + +QAbstractItemView::item:selected:active { + background: #FFC14E; + color: #FFFFFF; +} +/* + +margin: +QFrame#frame{ + border:none; + background-color: #0b2a51; +} +QFrame#frame_alarm{ + background-color: #0b2a51; +} +QTreeWidget#area::item { + height:23px; +} +QTreeWidget#area{ + border:1px solid #0669af; + background-color:#0b2a51; +} +QLineEdit#searchTextEdit { +border:none; +color:#01a6ec; +background:#0b2a51; +} + +QLineEdit#iconLineEdit{ +color:#01a6ec; +background:#0b2a51; +border:1px solid #0669af; +} +QLineEdit#lineEdit,QLineEdit#lineEdit_2 { +color:#01a6ec; +background:#0b2a51; +border:1px solid #0669af; +} + +QPushButton#searchButton{ +background:#0b2a51; +image:url(../../resource/zh/public/dark/icon/search.png); +} +QPushButton#iconButton{ +background:#0b2a51; +image:url(../../resource/zh/public/dark/icon/calendar.png); +} +QPushButton#searchButton:hover{ +color:#02efef; +background:#134a72; +} +QPushButton#iconButton:hover{ +color:#02efef; +background:#134a72; +} +QLabel#filterRow,QLabel#label, +QLabel#label_2,QLabel#label_3,QLabel#label_4,QLabel#label_5,QLabel#label_6,QLabel#showRow{ +color:#01a6ec; +} + +QPushButton#ok{ +height:26px; +width:80px; +} + +QDialog#alarm_dialog{ + background-color:#0b2a51; +} +QLineEdit#keyWord{ + color:#01a6ec; + border:1px solid #0669af; + background-color:#0b2a51; +} +QCheckBox#checkBox{ + color:#01a6ec; + background:#0b2a51; +} + +QCheckBox#checkLevel,QCheckBox#checkLocation, +QCheckBox#checkStatus,QCheckBox#checkRegion{ + color:#01a6ec; +} +QRadioButton#confirm,QRadioButton#unConfirm{ + color:#01a6ec; +} + +QDateTimeEdit#startTime,QDateTimeEdit#endTime{ + color:#01a6ec; + border:1px solid #0669af; + background-color:#0b2a51; +} +QDialog#CAlarmInhibitDialog{ + background-color:#0b2a51; +} +QDialog#CAlarmSetDlg{ + background-color:#0b2a51; +} + +QTreeView#aiAlarmTreeView { + show-decoration-selected:1; + border:0px solid #0669af; + color:#01a6ec; + background-color:#0b2a51; + alternate-background-color: #09314d; +} + +QTableView#alarmView { + color:#01a6ec; + border:0px solid #0669af; + gridline-color:#09304c; + alternate-background-color: #09314d; + selection-background-color:#d1e3f8; + background-color:#0b2a51; +} + +/* +QToolButton{ + border: 0px solid #0669af; + border-radius: 0px; + background-color: #0b2a51; + min-height:26px; + width:80px; + color:#01a6ec; +} +*/ \ No newline at end of file diff --git a/resource/en/style/dark/alarmForm.qss b/resource/en/style/dark/alarmForm.qss new file mode 100644 index 00000000..4e79697a --- /dev/null +++ b/resource/en/style/dark/alarmForm.qss @@ -0,0 +1,44 @@ +QComboBox +{ + min-width:180px; +} + +QComboBox QLineEdit +{ + padding: 0px; + border: 0px; +} + +QLineEdit#iconLineEdit { + min-width: 200px; + max-width: 280px; + min-height: 10px; + padding: -9px; + padding-left: 5px; +} + +#filter,#inhibit,#print,#inhiAlarm,#remove,#confirm +{ + background:transparent; + margin:5px; + min-width: 60px; + margin-top:0px; +} +#inhibit +{ + background:transparent; + margin:5px; + min-width: 80px; + margin-top:0px; +} +QLineEdit#iconLineEdit QPushButton +{ + background:transparent; + margin:-20px; + margin-right:-15px; + image:url(../../resource/zh/public/dark/icon/calendar.png); +} + +QFrame#frame{ + border: 0px; +} diff --git a/resource/en/style/dark/alarmShield.qss b/resource/en/style/dark/alarmShield.qss new file mode 100644 index 00000000..d5fa056b --- /dev/null +++ b/resource/en/style/dark/alarmShield.qss @@ -0,0 +1,19 @@ +QFrame#frame{ + border:0px solid #0669af; +} + +QFrame#frame_2, +QFrame#frame_3{ + border:1px solid #0669af; +} + +QComboBox#interval{ + min-width:60; +} +QComboBox QLineEdit{ + border:none; +} +CAlarmShield{ + qproperty-buttonBackground:#072d48; + qproperty-buttonColor:#027bb3; +} \ No newline at end of file diff --git a/resource/en/style/dark/alarm_statistics.qss b/resource/en/style/dark/alarm_statistics.qss new file mode 100644 index 00000000..7de93c4c --- /dev/null +++ b/resource/en/style/dark/alarm_statistics.qss @@ -0,0 +1,155 @@ +QCheckBox::indicator:unchecked +{ + width:14px; + height:14px; + /*border-radius: 7px;*/ + background-color: rgb(191,191,191); +} + +QCheckBox::indicator:checked +{ + width:14px; + height:14px; + /*border-radius: 7px;*/ + background-color: rgb(0,255,0); +} + +QWidget +{ + background-color:rgb(3,22,36); +} + +QLabel,QCheckBox +{ + color:rgb(0,180,255); +} + +QFrame#frame_bar,QFrame#frame_alarm,QFrame#frame_location,QListWidget,QComboBox, +QDateEdit,QPushButton,QLineEdit,QTableWidget,QTableView,QTreeWidget,QGroupBox, +QToolBox::tab,QToolBox,QTextEdit +{ + border-style:solid; + border-width:1px; + border-color:rgb(10,91,147); + color:rgb(0,180,255); + font-size: 12px; +} + +QRadioButton +{ + color:rgb(0,180,255); +} + +QFrame#frame_location QFrame +{ + border-style:solid; + border-width:1px; + border-color:rgb(10,91,147); + color:rgb(0,180,255); + padding-left:10px; +} + +QPushButton:hover +{ + background-color: rgb(41,115,163); +} + +QLabel#value,QLabel#value2 +{ + background-color:rgb(41,115,163); + color:rgb(33,248,250); + border-style:outset; + border-width:1px; + border-color:rgb(33,184,250); + border-radius:5px; + padding:5px; +} + +QListView +{ + color:rgb(0,180,255); +} + +QComboBox::drop-down,QDateEdit::drop-down +{ + width: 20px; + border-width: 1px; + border-style: solid; + border-color: rgb(10,91,147); +} + +QComboBox QAbstractItemView +{ + border-width: 1px; + border-style: solid; + border-color: rgb(10,91,147); +} + +QCalendarWidget QWidget +{ + border-width: 1px; + border-style: solid; + border-color: rgb(10,91,147); + color: rgb(0,180,255); +} + +QCalendarWidget QWidget#qt_calendar_navigationbar +{ + border-bottom-width: 0px; +} + +QCalendarWidget QTableView +{ + border-top-width: 0px; +} + +QToolButton#qt_calendar_monthbutton,#qt_calendar_yearbutton +{ + border-width: 0px; + border-top-width: 1px; +} + +QHeaderView::section +{ + background: rgb(3,22,36); + border-style:solid; + border-width:1px; + border-color:rgb(10,91,147); + color:rgb(0,180,255); + height: 24px; +} + +QTableView#alarm +{ + border-width: 0px; +} + +QToolBoxButton +{ + min-height: 32px; +} + +CAlarmStatistics, +CAlarmCompare{ + qproperty-chartLabelColor: rgb(0,180,255); + qproperty-chartLineColor: rgb(0,180,255); +} + + + + + + + + + + + + + + + + + + + diff --git a/resource/en/style/dark/alarmmng.qss b/resource/en/style/dark/alarmmng.qss new file mode 100644 index 00000000..9e5f6e36 --- /dev/null +++ b/resource/en/style/dark/alarmmng.qss @@ -0,0 +1,46 @@ +QFrame#frame{ + border:none; + background-color: #0b2a51; +} +QFrame#frame_2,QFrame#frame_3{ + border:0px solid #0669af; +} +QFrame#frame_head{ + background-color: #0b2a51; + border:0px solid #0669af; + border-top:0px solid #0669af; + border-left:0px solid #0669af; + border-right:0px solid #0669af; + border-bottom: 1px solid #0669af; +} +QFrame#frame_stackWidget{ + background:#0b2a51; + border:0px solid #0669af; +} +QStackedWidget#stackedWidget{ + border: 1px solid #0669af; + border-top: 0px solid #0669af; +} +QPushButton#aibt,QPushButton#dibt,QPushButton#pibt{ + background-color:#0b2a51; + height: 31px; + color:#01a6ec; + border-radius: 0px; + border:1px solid #0669af; + border-right:0px solid #0669af; +} +QPushButton#dibt,QPushButton#pibt,QPushButton#mibt{ + background-color:#0b2a51; + height: 31px; + color:#01a6ec; + border-radius: 0px; + border:1px solid #0669af; +} + +QPushButton#aibt::disabled,QPushButton#dibt::disabled,QPushButton#pibt::disabled,QPushButton#mibt::disabled { + border-bottom:1px solid #0669af; +} +QPushButton#aibt::checked,QPushButton#dibt::checked,QPushButton#pibt::checked,QPushButton#mibt::checked { + color:#02efef; + border-bottom:0px solid #0669af; +} \ No newline at end of file diff --git a/resource/en/style/dark/asset.qss b/resource/en/style/dark/asset.qss new file mode 100644 index 00000000..6c66c129 --- /dev/null +++ b/resource/en/style/dark/asset.qss @@ -0,0 +1,14 @@ + + +QLabel#title { + color:#01a6ec; + font-size:24px; + margin-bottom:5px; + font-family:Microsoft YaHei; +} + +QTextEdit#tBackup{ + color:#01a6ec; + border:1px solid #0669af; + background:#0b2a51; +} diff --git a/resource/en/style/dark/breadcrumbNav.qss b/resource/en/style/dark/breadcrumbNav.qss new file mode 100644 index 00000000..f8abe92b --- /dev/null +++ b/resource/en/style/dark/breadcrumbNav.qss @@ -0,0 +1,60 @@ +QWidget +{ + font: 10pt "Microsoft YaHei"; + color:#B9B9B9; + background:#032448; + outline:none; +} +QWidget:disabled +{ + color:#5783ae; + border-color: #325371; +} +QToolButton +{ + background:transparent; + border:none; + color:#B9B9B9; +} +QToolButton:hover +{ + color: #FFFFFF; +} +QToolButton::menu-indicator +{ + background:transparent; + subcontrol-position:right center; +} +QPushButton +{ + image:url(../../resource/zh/public/dark/icon/arrowRight.png); + background:transparent; + border:none; + max-width:20px; +} +QMenu +{ + background:#1E3D5A; + border: 1px solid #0070a2; + color:#B9B9B9; +} +QMenu::item{ + height:30px; + color:#B9B9B9; + background:#1E3D5A; + border: 1px solid transparent; + padding: 0px 20px 0px 20px; +} +QMenu::item:hover,QMenu::item:selected{ + color: #FFFFFF; + background:#4F8ACE; +} +QMenu::item:disabled,QMenu::item:disabled:selected,QMenu::item:disabled:pressed +{ + color: #5783ae; + background: #032448; +} +QMenu::item:pressed { + color: #FFFFFF; + background:#4F8ACE; +} \ No newline at end of file diff --git a/resource/en/style/dark/cButtonGroupWidget.qss b/resource/en/style/dark/cButtonGroupWidget.qss new file mode 100644 index 00000000..f065d651 --- /dev/null +++ b/resource/en/style/dark/cButtonGroupWidget.qss @@ -0,0 +1,15 @@ +QPushButton { + border: 2px solid black; + background-color: #00000000; + font-size: 24px; + font-weight: bold; + font-family: "Microsoft YaHei"; + color: #00D3FF; + width: 222px; + height: 46px; + border-image:url(../../data/back_pixmap/unselect.png); +} +QPushButton:hover { + background-color: #00000000; + border-image:url(../../data/back_pixmap/selected.png); +} diff --git a/resource/en/style/dark/constCurves.qss b/resource/en/style/dark/constCurves.qss new file mode 100644 index 00000000..5db84bfb --- /dev/null +++ b/resource/en/style/dark/constCurves.qss @@ -0,0 +1,7 @@ +CCurveChartView{ + qproperty-plotBackgroundColor : #072d48; + qproperty-plotTickColor : #017fb7; + qproperty-plotLinePen: #023F63; + qproperty-plotGridColor: #1A384C; + qproperty-plotLegendColor: #01a6ec; +} diff --git a/resource/en/style/dark/curveColor.cfg b/resource/en/style/dark/curveColor.cfg new file mode 100644 index 00000000..863b614a --- /dev/null +++ b/resource/en/style/dark/curveColor.cfg @@ -0,0 +1,16 @@ +#EF3829 +#EFD752 +#6BA2D6 +#DEAECE +#EFA700 +#18A28C +#8C3C39 +#63498C +#6B4531 +#8757EF +#BD6DA5 +#C6D729 +#195B84 +#51FF1C +#85CE5E +#3CACF7 \ No newline at end of file diff --git a/resource/en/style/dark/debug_tool.qss b/resource/en/style/dark/debug_tool.qss new file mode 100644 index 00000000..f6e53ad1 --- /dev/null +++ b/resource/en/style/dark/debug_tool.qss @@ -0,0 +1,130 @@ +QWidget#CDebugTool,QWidget#tab{ + background:white; +} + + +QTabBar::tab { + border: 1px solid #E8E8E8; + min-width:80px; + height:25px; + background: #F2F5FA; + color:black; + font-family:Microsoft YaHei; + font-size:14px; +} +QTabBar::tab:selected, QTabBar::tab:hover { + background: white; + color:#3482F4; + border-bottom-color: white; +} + +QGroupBox{ + font-size:14px; + + font-family:Microsoft YaHei; +} +QListView::item{ + height:23px; +} + +QComboBox{ + border:1px solid #CACACA; + font-family:Microsoft YaHei; + +} +QComboBox QAbstractItemView::item{ + height: 23px; +} +QComboBox::drop-down { + width: 20px; + border-width: 0px; +} +QComboBox::down-arrow { + background:white; + image: url(../../resource/en/debug_tool/image/down.png); + border:0px solid; + +} +QPushButton#searchButton{ + border:1px solid #CACACA; + background:#F5F5F5; + image:url(../../resource/en/debug_tool/image/search.png); +} + +QPushButton#searchButton:hover{ + border:1px solid #99d1ff; + background:#cde8ff; +} +QPushButton#pushBtn_delPoint{ + width:100px; + height:23px; + border:1px solid rgba(251,80,80,1); + border-radius:4px; + font-family:Microsoft YaHei; + font-size:14px; +} + +QPushButton{ + width:100px; + height:23px; + border:1px solid #3482F4; + border-radius:4px; + font-family:Microsoft YaHei; + font-size:14px; + color:#3482F4; +} +QPushButton:hover{ + border:1px solid #99d1ff; + background:#cde8ff; +} + +QLineEdit#lineEdit,QLineEdit#lineEdit_content{ + font-family:Microsoft YaHei; + border:1px solid #CACACA; +} +QLabel#location,QLabel#sub,QLabel#devGroup,QLabel#device,QLabel#point,QLabel#label,QLabel#label_2,QLabel#label_3, +QLabel#label_4,QLabel#label_5,QLabel#label_6,QLabel#label_7,QLabel#label_8{ + font-family:Microsoft YaHei; + +} +QLabel#label_netStatus,QLabel#netStatus{ + font-family:Microsoft YaHei; + + font-size:14px; +} +QCheckBox#checkBox_all,QCheckBox#checkBox_analog,QCheckBox#checkBox_digital, +QCheckBox#checkBox_accuml,QCheckBox#checkBox_mix,QCheckBox#checkBox_const,QCheckBox#checkBox_allColmn{ + font-family:Microsoft YaHei; + + font-size:14px; +} + +QCheckBox::indicator:checked { + image: url(../../resource/en/debug_tool/image/check.png); +} +QCheckBox::indicator:!checked { + image: url(../../resource/en/debug_tool/image/uncheck.png); +} +QHeaderView::section { + font-family:Microsoft YaHei; + text-align:center; + height:23px; + +} +QSplitter{ + background:white; +} +QRadioButton::indicator::unchecked { + image: url(../../resource/en/debug_tool/image/uncheck1.png); +} +QRadioButton::indicator::checked { + image: url(../../resource/en/debug_tool/image/check1.png); +} + +QSplitter::handle { + background:transparent; +} + +QSplitter::handle:horizontal { + width: 5px; +} \ No newline at end of file diff --git a/resource/en/style/dark/deviceRealData.qss b/resource/en/style/dark/deviceRealData.qss new file mode 100644 index 00000000..a3e94d5c --- /dev/null +++ b/resource/en/style/dark/deviceRealData.qss @@ -0,0 +1,9 @@ +QFrame#frame_2{ + background-color: transparent; + border:0px solid #5DA5FB; +} +QFrame#frame_3, +QFrame#frame_4, +QFrame#frame_5{ + border:none; +} \ No newline at end of file diff --git a/resource/en/style/dark/duty_setting.qss b/resource/en/style/dark/duty_setting.qss new file mode 100644 index 00000000..c19601cd --- /dev/null +++ b/resource/en/style/dark/duty_setting.qss @@ -0,0 +1,69 @@ + +QListView,QComboBox,QPushButton,QTableWidget,QLineEdit,QLabel,QListWidget:item +{ + border-style:solid; + border:1px solid #0669af; + color:#01a6ec; +} + +QLabel +{ + padding: 5px; +} + +QLabel#label_0 +{ + min-width: 80px; +} + +QLabel#label_0,QLabel#label_1,QLabel#label_2,QLabel#label_3,QLabel#label_4,QLabel#label_5,QLabel#label_6,QLabel#label_7 +{ + background-color: #0b2a51; +} + + +QPushButton +{ + width: 80px; + height: 28px; +} + +QPushButton#pushButton_del +{ + width: 120px; + height: 28px; +} + +QListWidget +{ + padding: 0px; +} + +QListWidget::item +{ + min-height: 28px; + padding-left: 0px; +} + +QListWidget::item:hover, +QListView::item:selected +{ + background-color: #134a72; + color:#01a6ec; +} + +QListWidget#dropWidget::item:selected +{ + background-color: #134a72; + color:#01a6ec; +} +QListWidget#dropWidget:hover, +QListWidget#dropWidget:focus{ + background-color: #134a72; + color:#01a6ec; +} + +QComboBox +{ + height: 28px; +} \ No newline at end of file diff --git a/resource/en/style/dark/event.qss b/resource/en/style/dark/event.qss new file mode 100644 index 00000000..d45f5565 --- /dev/null +++ b/resource/en/style/dark/event.qss @@ -0,0 +1,157 @@ +QAbstractItemView::item:selected:focus { + background: #FFC14E; + color: #FFFFFF; +} + +QAbstractItemView::item:selected:!focus { + background: #FFC14E; + color: #FFFFFF; +} + +QAbstractItemView::item:selected:active { + background: #FFC14E; + color: #FFFFFF; +} +/* =============================================== */ +/* searchButton搜索框 */ +/* =============================================== */ +QPushButton#hisSearchButton{ + background:transparent; + min-height:22px; + max-width:22px; + border:none; + margin-left:0px; + padding: 0 5 0 5px; + image:url(../../resource/zh/public/dark/icon/search.png); +} + +QLineEdit#hisSearchButton { + border:none; + background:transparent; +} +QPushButton#realSearchButton{ + background:transparent; + min-height:22px; + max-width:22px; + border:none; + margin-left:0px; + padding: 0 5 0 5px; + image:url(../../resource/zh/public/dark/icon/search.png); +} + +QLineEdit#realSearchButton { + border:none; + background:transparent; +} + + + +QComboBox +{ + min-width:120px; +} + +QComboBox QLineEdit +{ + padding: 0px; + border: 0px; +} + +QLineEdit#iconLineEdit { + min-width: 280px; + max-width: 280px; + padding: -9px; + padding-left: 5px; +} + +QLineEdit#iconLineEdit QPushButton +{ + background:transparent; + margin:-20px; + margin-right:-20px; + image:url(../../resource/zh/public/dark/icon/calendar.png); +} + +QFrame#frame{ + border: 0px; +} + +/* QFrame#frame{ + border:1px solid #0669af; +} +QFrame#eventHeadFrame{ + border-bottom: 1px solid #0669af; +} +QFrame#eventCentralFrame{ + background:#0b2a51; + border:1px solid #0669af; + border-top:0px solid #0669af; +} */ + +/* +QFrame#frame{ + border:1px solid #0669af; +} +QFrame#eventHeadFrame{ + border-bottom: 1px solid #0669af; +} +QFrame#eventCentralFrame{ + background:#0b2a51; + border:1px solid #0669af; + border-top:0px solid #0669af; +} + +QCheckBox#checkLevel::hover, +QCheckBox#checkLocation::hover, +QCheckBox#checkType::hover, +QCheckBox#checkRegion::hover{ + background:transparent; +} + +QPushButton#iconButton{ + border:none; + border-radius:0px; + image:url(../../resource/zh/public/dark/icon/calendar.png); +} +QPushButton#realEventButton{ + width: 100px; + height: 28px; + background-color:#0b2a51; + color:#01a6ec; + border-radius: 0px; + border:1px solid #0669af; + border-right:0px solid #0669af; +} +QPushButton#hisEventButton{ + width: 100px; + height: 28px; + background-color:#0b2a51; + color:#01a6ec; + border-radius: 0px; + border:1px solid #0669af; +} + +QPushButton#hisEventButton::disabled,QPushButton#realEventButton::disabled { + border-bottom:1px solid #0669af; +} +QPushButton#hisEventButton::checked,QPushButton#realEventButton::checked { + color:#02efef; + border-bottom:0px solid #0669af; +} +QPushButton#realSearchButton, +QPushButton#hisSearchButton{ + background:#0b2a51; + image:url(../../resource/zh/public/dark/icon/search.png); +} +QPushButton#realSearchButton:hover, +QPushButton#hisSearchButton:hover { + background-color: #134a72; +} +QLineEdit#realSearchEdit, +QLineEdit#hisSearchEdit { +border:none; +color:#01a6ec; +background:#0b2a51; +} + +*/ \ No newline at end of file diff --git a/resource/en/style/dark/explorerWnd.qss b/resource/en/style/dark/explorerWnd.qss new file mode 100644 index 00000000..579f5ebc --- /dev/null +++ b/resource/en/style/dark/explorerWnd.qss @@ -0,0 +1,22 @@ +/* 整个滚动条区域样式 */ +QScrollBar:vertical { + border: 0px solid grey; + width: 15px; +} + +/* 滑块区域样式 */ +QScrollBar::handle:vertical { + background: grey; +} + + +/* 整个滚动条区域样式 */ +QScrollBar:horizontal { + border: 0px solid grey; + height: 15px; +} + +/* 滑块区域样式 */ +QScrollBar::handle:horizontal { + background: grey; +} \ No newline at end of file diff --git a/resource/en/style/dark/faultRecord.qss b/resource/en/style/dark/faultRecord.qss new file mode 100644 index 00000000..bd40eca5 --- /dev/null +++ b/resource/en/style/dark/faultRecord.qss @@ -0,0 +1,8 @@ +QToolButton{ + border: 0px solid #0669af; + border-radius: 0px; + background-color: #0b2a51; + min-height:26px; + width:80px; + color:#01a6ec; +} \ No newline at end of file diff --git a/resource/en/style/dark/fbd_designer.qss b/resource/en/style/dark/fbd_designer.qss new file mode 100644 index 00000000..46709b7c --- /dev/null +++ b/resource/en/style/dark/fbd_designer.qss @@ -0,0 +1,160 @@ +/* === QToolBox ========================================================== */ + + +QDockWidget::title{ + background-color: #4b6d97; + padding: 6px; +} +QDockWidget#dockWidgetBlock,QDockWidget#dockWidgetCheck,QDockWidget#dockWidgetDiagram,QDockWidget#dockWidgetTemplate +{ + min-width: 320px; +} +QDockWidget#dockWidgetProperty +{ + min-width: 450px; +} + +QWidget#fbdEditorWindow +{ + background-color:transparent; +} + +QWidget#centralWidget +{ + background-color:transparent; +} + +QWidget#groupWidget +{ + background-color:transparent; +} + + +QLabel#CellWidget_item:hover,QLabel#TemplateWidget_item:hover{ + background-color: #5da5fb; +} +QPushButton#pTableFilter,QPushButton#pTagNameFilter,QPushButton#pDeviceFilter +{ + background:transparent; + min-height:22px; + max-width:22px; + border:none; + margin-left:0px; + padding: 0 5 0 5px; + image:url(../../resource/zh/public/dark/icon/search.png); +} + +QFrame#frame_6,QFrame#frame_4,QFrame#frame_5,QFrame#frame_2,QFrame#frame_1,QFrame#frame_3,QFrame#frame_7,QFrame#frame_8,QFrame#frame_8,QFrame#frame_10 +{ + border: 1px solid #6088BA; +} + +CFBDRetriever +{ + min-height: 600px; +} + +CFBDRetriever +{ + min-height: 600px; +} + + +QToolButton +{ + border: 0px; + padding: 5px; +} + +CGraphicsView +{ + qproperty-backgroundColor: rgba(81, 100, 120,95); +} + +CFBDMainWindow +{ + qproperty-itemSelectBorderColor: #FFFFFF; + qproperty-itemNormalBorderColor: transparent; + qproperty-itemDefaultBackgroundColor: transparent; + qproperty-itemErrorBackgroundColor: red; + qproperty-itemTextBackgroundColor: #FFFFFF; + qproperty-errorStateTextColor: red; + qproperty-normalStateTextColor: #FFFFFF; +} + +/* QPushButton{ background:#F0F0F0; \ + border:1px solid transparent; \ + border-left-color: darkgray;\ + padding-left: -1px; padding-top: -1px; \ + image:url(:/resource/search.png);} \ + QPushButton:hover{background:#E0E0E0;} \ + QPushButton:pressed{background:#E0E0E0;padding:0px; } */ + +/* +QToolBox::tab{ + background-color: transparent; + border-radius: 0px; + color: #FFFFFF; +} + +QToolBox::tab:selected,QToolBox::tab:hover{ + background-color: #0078D7; + color: #FFFFFF; +} +QToolBoxButton{ + min-width: 199px; + min-height: 32px; +} + + +*/ + + +/* === QWidget ========================================================== */ +/* +QWidget#scrollAreaWidgetContents{ + background-color: #FFFFFF; +} + +QWidget#widgetTemplateBack{ + border: 1px solid #A4A9AD; +} + +QWidget#widgetTemplate{ + border: 1px solid #A4A9AD; + background-color: #FFFFFF; +} +*/ +#E6ECF2 + +/* === QTabBar ========================================================== */ +/* +QTabBar::tab{ + background-color: #FFFFFF; + padding: 6px 12px 6px 12px; + border-style: solid; + border-width: 0px 1px 1px 1px; + border-color: #A4A9AD; +} + +QTabBar::tab:hover{ +} + +QTabBar::tab:selected{ + background-color: #0078D7; + color: #FFFFFF; +} + +QTabBar::tab#CenterTabWidget{ + border-width: 1px 1px 0px 1px; + background-color: #CED3D9; + color: #000000; +} + +QTabBar::tab#CenterTabWidget:selected{ + background-color: #FFFFFF; + color: #0078D7; +} + +*/ + diff --git a/resource/en/style/dark/hmiRoll.qss b/resource/en/style/dark/hmiRoll.qss new file mode 100644 index 00000000..2a06e131 --- /dev/null +++ b/resource/en/style/dark/hmiRoll.qss @@ -0,0 +1,3 @@ +QLabel#autoTime{ + background-color: transparent; +} \ No newline at end of file diff --git a/resource/en/style/dark/ipcPlus.qss b/resource/en/style/dark/ipcPlus.qss new file mode 100644 index 00000000..c5369541 --- /dev/null +++ b/resource/en/style/dark/ipcPlus.qss @@ -0,0 +1,97 @@ +QPushButton#play,QPushButton#pause, +QPushButton#cap,QPushButton#voiceOpen,QPushButton#voiceClose{ + border:1px; +} + +QPushButton#play{ + image:url(../../resource/zh/gui/icon/robot/play.png); +} + +QPushButton#pause{ + image:url(../../resource/zh/gui/icon/robot/pause.png); +} + +QPushButton#cap{ + image:url(../../resource/zh/gui/icon/robot/cut.png); +} + +QPushButton#voiceOpen{ + image:url(../../resource/zh/gui/icon/robot/voiceOpen.png); +} +QPushButton#voiceClose{ + image:url(../../resource/zh/gui/icon/robot/voiceClose.png); +} + +QPushButton#left{ + border-image:url(../../resource/zh/gui/icon/ipc/left.png); +} +QPushButton#left:hover{ + border-image:url(../../resource/zh/gui/icon/ipc/left-hovered.png); +} +QPushButton#left:pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/left-clicked.png); +} + +QPushButton#down{ + border-image:url(../../resource/zh/gui/icon/ipc/down.png); +} +QPushButton#down:hover{ + border-image:url(../../resource/zh/gui/icon/ipc/down-hovered.png); +} +QPushButton#down:pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/down-clicked.png); +} + +QPushButton#up{ + border-image:url(../../resource/zh/gui/icon/ipc/up.png); +} +QPushButton#up:hover{ + border-image:url(../../resource/zh/gui/icon/ipc/up-hovered.png); +} +QPushButton#up:pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/up-clicked.png); +} + +QPushButton#right{ + border-image:url(../../resource/zh/gui/icon/ipc/right.png); +} +QPushButton#right:hover{ + border-image:url(../../resource/zh/gui/icon/ipc/right-hovered.png); +} +QPushButton#right:pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/right-clicked.png); +} + +QPushButton#cap:pressed,QPushButton#play:pressed,QPushButton#pause:pressed,QPushButton#voiceOpen:pressed,QPushButton#voiceClose:pressed{ + color:#02efef; + background:#134a72; + border:0px; +} + +QPushButton#draw,QPushButton#tretch,QPushButton#near,QPushButton#far,QPushButton#big,QPushButton#small,QPushButton#allot{ + color:#01a6ec; + background:#0b2a51; + border:1px solid #0669af; +} + +QPushButton#draw:hover,QPushButton#tretch:hover,QPushButton#near:hover,QPushButton#far:hover,QPushButton#big:hover,QPushButton#small:hover,QPushButton#allot:hover{ +color:#02efef; +background:#134a72; +} + +QPushButton#draw:pressed,QPushButton#tretch:pressed,QPushButton#near:pressed,QPushButton#far:pressed,QPushButton#big:pressed,QPushButton#small:pressed,QPushButton#allot:pressed{ +color:#02efef; +background:#134a72; +} + +QWidget#widget,QWidget#widget_2,QWidget#widget_3{ + border:1px solid #0669af; +} +QWidget#IpcPlusWidget,QWidget#control_1,QWidget#control_2{ + border:1px solid #0669af; + color:#01a6ec; +} +QWidget#IpcPlusWidget{ + background-color: #0b2a51); + color:#01a6ec; +} \ No newline at end of file diff --git a/resource/en/style/dark/ipcViewer.qss b/resource/en/style/dark/ipcViewer.qss new file mode 100644 index 00000000..5b6230fa --- /dev/null +++ b/resource/en/style/dark/ipcViewer.qss @@ -0,0 +1,125 @@ +QTabWidget#tabWidget +{ + border:0px solid #0669af; +} + +QPushButton#btn_vol, +QPushButton#btn_cam, +QPushButton#btn_fullScreen, +QPushButton#btn_play, +QPushButton#btn_play_r, +QPushButton#btn_cam_r, +QPushButton#btn_vol_r, +QPushButton#up, +QPushButton#left, +QPushButton#right, +QPushButton#down{ + border:none; + border-radius:0px; + background:transparent; +} +QPushButton#btn_play, +QPushButton#btn_play_r{ + border-image:url(../../resource/zh/gui/icon/ipc/play.png); +} +QPushButton#btn_play::hover, +QPushButton#btn_play_r::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/play-hovered.png); +} +QPushButton#btn_play::checked, +QPushButton#btn_play_r::checked{ + border-image:url(../../resource/zh/gui/icon/ipc/pause.png); +} +QPushButton#btn_cam, +QPushButton#btn_cam_r{ + border-image:url(../../resource/zh/gui/icon/ipc/camera.svg); +} +QPushButton#btn_cam::hover, +QPushButton#btn_cam_r::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/camera-hovered.svg); +} +QPushButton#btn_vol, +QPushButton#btn_vol_r{ + border-image:url(../../resource/zh/gui/icon/ipc/vol.svg); +} +QPushButton#btn_vol::hover, +QPushButton#btn_vol_r::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/vol-hovered.svg); +} +QPushButton#btn_vol::checked, +QPushButton#btn_vol_r::checked{ + border-image:url(../../resource/zh/gui/icon/ipc/vol-mute.svg); +} +QPushButton#up{ + border-image:url(../../resource/zh/gui/icon/ipc/up.png); +} +QPushButton#up::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/up-hovered.png); +} +QPushButton#up::pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/up-clicked.png); +} +QPushButton#left{ + border-image:url(../../resource/zh/gui/icon/ipc/left.png); +} +QPushButton#left::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/left-hovered.png); +} +QPushButton#left::pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/left-clicked.png); +} +QPushButton#right{ + border-image:url(../../resource/zh/gui/icon/ipc/right.png); +} +QPushButton#right::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/right-hovered.png); +} +QPushButton#right::pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/right-clicked.png); +} +QPushButton#down{ + border-image:url(../../resource/zh/gui/icon/ipc/down.png); +} +QPushButton#down::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/down-hovered.png); +} +QPushButton#down::pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/down-clicked.png); +} + +QPushButton#btn_zoomin, +QPushButton#btn_zoomout, +QPushButton#btn_far, +QPushButton#btn_close, +QPushButton#btn_big, +QPushButton#btn_small +{ + background:#0b2a51; + color:#01a6ec; + border:1px solid #0669af; + width:50px; + height:20px; +} + + +QPushButton#btn_zoomin:hover, +QPushButton#btn_zoomout:hover, +QPushButton#btn_far:hover, +QPushButton#btn_close:hover, +QPushButton#btn_big:hover, +QPushButton#btn_small:hover, +QPushButton#btn_record_query:hover, +QPushButton#btn_gotopreset:hover +{ + background-color: #134a72; + color:#02efef; +} + + +QPushButton#btn_record_query +{ + background:#0b2a51; + color:#01a6ec; + border:1px solid #0669af; + height:20px; +} diff --git a/resource/en/style/dark/linkCtrl.qss b/resource/en/style/dark/linkCtrl.qss new file mode 100644 index 00000000..4d547c3b --- /dev/null +++ b/resource/en/style/dark/linkCtrl.qss @@ -0,0 +1,40 @@ +QFrame#frame, +QFrame#frame_2, +QFrame#frame_3, +QFrame#frame_4{ + border:1px solid #0669af; + background-color: #0b2a51; +} +QFrame#frame_5{ + border:1px solid #0669af; +} +QFrame#line,QFrame#line_2{ + border:solid 1px #0669af; +} +QPushButton#allLinkCtrlButton{ + margin-left:10px; +} + +QLineEdit#searchLineEdit { +color:#01a6ec; +background:#0b2a51; +border:1px solid #0669af; +height:26px; +} + +CLinkCtrlTreeView#actionTreeView +{ + border:none; + color:#027bb3; + gridline-color:#024376; + alternate-background-color: transparent; + background-color:transparent; +} + +QListWidget#linkCtrlList,QListWidget#linkReportList{ + margin-top:10px; +} + +QTreeView#actionTreeView{ + margin-left:5px; +} \ No newline at end of file diff --git a/resource/en/style/dark/media.qss b/resource/en/style/dark/media.qss new file mode 100644 index 00000000..9379ae17 --- /dev/null +++ b/resource/en/style/dark/media.qss @@ -0,0 +1,34 @@ +QPushButton{ + height:20px; + width:40px; + color:#027bb3; + border-radius:2px; + border:1px solid #0669af; +} + +QPushButton#play,QPushButton#pause, +QToolButton#m_cap,QPushButton#m_voiceOpen,QPushButton#m_voiceClose{ + border:0px; +} + +QPushButton#play{ + image:url(../../resource/zh/public/light/icon/play.png); +} + +QPushButton#pause{ + image:url(../../resource/zh/public/light/icon/pause.png); +} + +QToolButton#m_cap{ + image:url(../../resource/zh/public/light/icon/cut.png); +} + +QPushButton#m_voiceOpen{ + image:url(../../resource/zh/public/light/icon/voiceOpen.png); +} +QPushButton#m_voiceClose{ + image:url(../../resource/zh/public/light/icon/voiceClose.png); +} + + + diff --git a/resource/en/style/dark/modelStudio.qss b/resource/en/style/dark/modelStudio.qss new file mode 100644 index 00000000..f7d2bf6f --- /dev/null +++ b/resource/en/style/dark/modelStudio.qss @@ -0,0 +1,303 @@ +QMainWindow{ + background: #E6ECF2; + border-style: outset; + border-radius: 5px; +} + +QToolBar#mainToolBar{ + background: #e9edf1; + spacing: 3px; /* spacing between items in the tool bar */ + } + + QStatusBar { + background: #d7dbdf; + } + + QMenuBar{ + background-color: #FFFFFF; + } + + QMenu { + background-color: white; /* 设置整个菜单区域的背景色*/ + border: 1px solid #E6ECF2;/*整个菜单区域的边框粗细、样式、颜色*/ + } + + QMenu::item { + background-color: transparent; + padding:4px 20px;/*设置菜单项文字上下和左右的内边距,效果就是菜单中的条目左右上下有了间隔*/ + } + + QMenu::item:selected { /* when user selects item using mouse or keyboard */ + background-color: #2dabf9;/*这一句是设置菜单项鼠标经过选中的样式*/ + } + + QSplitterHandle{ + background-color:#E6ECF2; + } + +QTabBar::tab {/*切换按钮设置*/ + background: #E6ECF2; + border: 1px solid #acb1b4; + padding: 4px; +} + +QTabBar::tab:hover { + color:#2080F7;/*选中高亮*/ +} + +QTabBar::tab:selected { + background: white; +} + +QTabWidget{ + background: #eff3f5; +} + +QHeaderView +{ + background:#E6ECF2; +} + +QHeaderView#tableHorizHeader::section +{ + border:0px; + min-height:25px; + border-bottom:1px solid #DCDCDC; + border-right:1px solid #DCDCDC; + background:#B6C6D6; +} + +QHeaderView#tableVertiHeader::section +{ + background:white; + min-width:25px; + border:0px; + border-right:1px solid #DCDCDC; +} + +QTreeView{ + alternate-background-color: #E6ECF2; + selection-background-color: #2dabf9; +} + +QTableView{ + alternate-background-color: #E6ECF2; + selection-background-color: #2dabf9; +} + +QTableView QTableCornerButton::section{ + border:0px; + background:white; + border-right:1px solid #DCDCDC; +} + +QTableView > QHeaderView::section +{ + border:0px; + min-height:25px; + border-bottom:1px solid #DCDCDC; + border-right:1px solid #DCDCDC; + background:#B6C6D6; +} + +QTreeView > QHeaderView::section +{ + background:#B6C6D6; + border:0px; + min-height:25px; +} + +QTreeView > QHeaderView::section:first +{ + background:#B6C6D6; + border:0px; + border-right:1px solid white; + min-height:25px; +} + +QTreeView > QHeaderView::section:middle +{ + background:#B6C6D6; + border:0px; + border-right:1px solid white; + min-height:25px; +} + +QTreeView > QHeaderView::section:last +{ + background:#B6C6D6; + border:0px; + border-left:1px solid white; + min-height:25px; +} + +QDialog{ + background-color:#E6ECF2; +} + +QPushButton{ + border: 1px solid #b1bac7; + border-radius: 4px; + background-color: #f5f8fa; + min-width:50px; + min-height:20px; +} +QPushButton:hover{ + border-color:#2dabf9; + background-color: #e5f2fd; +} +QPushButton:pressed{ + border:2px solid #2dabf9; + background-color: #f4f8fb; +} + +QComboBox{ + border:1px solid #b1bac7; + background:white; + min-width:60px; + font-family:Microsoft YaHei; +} + +QComboBox::drop-down { + border-width: 0px; + width:20; +} +QComboBox::down-arrow { + background:white; + image:url(:/icons/icons/down.png); + border:0px solid; +} + +QLineEdit{ + border: 1px solid #b1bac7; + background-color: white; + max-height:25px; +} + +QStatusBar::item{ + border: 0px; + background: none; +} + +/* 垂直滚动条 */ +QScrollBar:vertical { + border: 0px solid; + background: #E6ECF2; + width: 9px; + margin: 9px 0 9px 0; +} +QScrollBar::handle:vertical { + background: #ADBDCD; + min-height: 20px; +} +QScrollBar::handle:vertical:hover +{ + background:#759EC8; /* 鼠标放到滚动条上的时候,颜色变深 */ +} +QScrollBar::add-line:vertical { + border: 0px solid; + background: #E6ECF2; + border-image:url(:/icons/icons/arrowBottom.png); + height: 9px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical { + border: 0px solid; + background: #E6ECF2; + border-image:url(:/icons/icons/arrowTop.png); + height: 9px; + subcontrol-position: top; + subcontrol-origin: margin; +} +QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical { + border: 0px solid grey; + width: 0px; + height: 0px; +} + +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { + background: none; +} +/* 水平滚动条 */ +QScrollBar:horizontal { + border: 0px solid grey; + background: #E6ECF2; + height: 9px; + margin: 0px 9px 0 9px; +} +QScrollBar::handle:horizontal { + background: #ADBDCD; + min-width: 20px; +} +QScrollBar::handle:horizontal:hover +{ + background:#759EC8; /* 鼠标放到滚动条上的时候,颜色变深 */ +} + +QScrollBar::add-line:horizontal { + border: 0px solid; + background: #E6ECF2; + width: 9px; + border-image:url(:/icons/icons/arrowRight.png); + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal { + border: 0px solid; + background: #E6ECF2; + width: 9px; + border-image:url(:/icons/icons/arrowLeft.png); + subcontrol-position: left; + subcontrol-origin: margin; +} +QScrollBar::left-arrow:horizontal, QScrollBar::right-arrow:horizontal { + border: 0px solid; + width: 0px; + height: 0px; +} + +QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { + background: none; +} + +QPushButton#TablePropertyBtnHide{ + border: 0px solid ; + background-color: #ADBDCD; + border-image:url(:/icons/icons/hideRight.png); + min-width:4px; + max-width:6px; + min-height:60px; +} + +QPushButton#TablePropertyBtnHide:checked{ + border: 0px solid ; + background-color: #ADBDCD; + border-image:url(:/icons/icons/hideLeft.png); + min-width:4px; + max-width:6px; + min-height:60px; +} + +QPushButton#TablePropertyBtnHide:hover{ + background-color: #759EC8; +} + +QLineEdit#kbdSearchWidget{ + border: 1px solid #b1bac7; + border-radius: 6px; + background-color: white; + max-height:20px; +} + +QListView::item{ + min-height:23px; +} + +QSpinBox { + min-height: 25px; +} + + \ No newline at end of file diff --git a/resource/en/style/dark/orderManage.qss b/resource/en/style/dark/orderManage.qss new file mode 100644 index 00000000..35dc9328 --- /dev/null +++ b/resource/en/style/dark/orderManage.qss @@ -0,0 +1,178 @@ +QWidget { + background:#022644; + color:#01a6ec; +} +QWidget#m_toolWidget{ + max-width:40px; +} +QWidget::separator{ + background-color:#01a0e7; + height:1px; + margin-bottom: 5px; +} +QToolButton{ + color: #00b3fd; + background-color: #0d3756; + border:1px solid #075993; + width: 30px; + height: 30px; + margin-bottom: 2px; +} +QPushButton { + color: #00b3fd; + background-color: transparent; + border:1px solid #075993; + width:40px; + height:20px; +} +QPushButton#m_editBtn, +QPushButton#m_delBtn{ + width: 80px; + height:30px; +} +QPushButton:hover,QToolButton:hover { + border: none; + background-color: #134a72; + color: #02efef; +} +QPushButton:pressed,QToolButton:pressed { + padding: 2px 0px 0px 2px; +} +QPushButton:disabled,QToolButton:disabled { + color: gray; + border-color:gray; + background: transparent; +} +QLineEdit,QTextEdit,QDateTimeEdit,QComboBox{ + height:25px; + font-size:13px; + background:#0d3756; + border: 1px solid #406587; + color:#406587; +} +QLineEdit#m_editName{ + font-size:20px; +} +QLineEdit:enabled,QTextEdit:enabled,QDateTimeEdit:enabled,QComboBox:enabled{ + color:rgb(0, 228, 249); + border: 1px solid; + border-color:rgb(7, 89, 147); +} +QTextEdit{ + min-height:50px; +} +QComboBox:drop-down{ + border:none; + padding-right:10px; +} +QComboBox:down-arrow,QDateTimeEdit:down-arrow{ + border-image:url(../../data/back_pixmap/arrowDown.png); +} +QDateTimeEdit:up-arrow{ + border-image:url(../../data/back_pixmap/arrowUp.png); +} +QComboBox QAbstractItemView{ + color:rgb(3, 116, 169); + selection-color:rgb(1, 166, 235); + background-color:rgb(13, 55, 86); + selection-background-color:rgb(16, 67, 102); + outLine: 0px; +} +QTreeWidget { + font: 14px; + border: 1px solid #0a5b93; + color:#01a6ec; + background:#072d48; +} + +QTreeWidget::item { + height:28px; +} + +QTreeWidget::item:hover, QTreeView::branch:hover { + background: rgba(255, 255, 255, 40); +} + +QTreeWidget::item:selected, QTreeView::branch:selected { + background: #134a72; + color:#02efef; +} + +QTreeWidget::branch { + background: transparent; +} + +QTreeWidget::indicator{ + image:url(../../resource/zh/public/dark/icon/unchecked.png); + width: 13px; + height: 13px; +} + +QTreeWidget::indicator:checked, QTableView::indicator:checked { + image:url(../../resource/zh/public/dark/icon/checked.png); +} + +QTreeWidget::branch:closed:has-children{ + border-image: none; + image:url(../../resource/zh/public/dark/icon/arrowRight.png); +} + +QTreeWidget::branch:open:has-children{ + border-image: none; + image:url(../../resource/zh/public/dark/icon/arrowBottom.png); +} +QHeaderView{ + background-color: #022b4b; + border:none; +} +QHeaderView::section { + height: 25px; + color: #01a6ec; + padding:0px 0px 0px 5px; + background: #072d48; + border:1px solid #0a5b93; +} +QTableView{ + border: 1px solid #0a5b93; + color: #027bb3; + gridline-color: #024376; + alternate-background-color: transparent; + background-color: transparent; +} +QTableView::item:selected{ + background-color: #134a72; + color: #02efef; +} +QScrollBar:vertical { + background:rgb(16, 67, 102); + width: 8px; + margin: 0px; +} + +QScrollBar:horizontal { + height: 8px; + background:rgb(16, 67, 102); +} + +QScrollBar::handle:vertical, +QScrollBar::handle:horizontal { + background:rgb(23, 94, 143); +} + +QScrollBar::handle:vertical:hover, +QScrollBar::handle:horizontal:hover { + background: #175e7e; +} + +QScrollBar::sub-line:vertical, QScrollBar::add-line:vertical, +QScrollBar::sub-line:horizontal, QScrollBar::add-line:horizontal { + width: 0; + height: 0; +} + +QScrollBar::sub-page:vertical, +QScrollBar::add-page:vertical, +QScrollBar::sub-page:horizontal, +QScrollBar::add-page:horizontal{ + background:rgb(16, 67, 102); +} diff --git a/resource/en/style/dark/planCurvesConfigure.qss b/resource/en/style/dark/planCurvesConfigure.qss new file mode 100644 index 00000000..a3059907 --- /dev/null +++ b/resource/en/style/dark/planCurvesConfigure.qss @@ -0,0 +1,14 @@ +CurveChartView{ + qproperty-plotBackgroundColor : transparent; + qproperty-plotTickColor : #A2D4E6; + qproperty-plotCurveColor : rgba(0,180,255,1); + qproperty-plotLinePen: rgba(0,191,255,0.3); + qproperty-plotTickTitleColor: #A2D4E6; + qproperty-plotAxisXText: "h"; +} +QPushButton { + width:110px; +} +QDialog QPushButton{ + width:50px; +} \ No newline at end of file diff --git a/resource/en/style/dark/public.qss b/resource/en/style/dark/public.qss new file mode 100644 index 00000000..32496e89 --- /dev/null +++ b/resource/en/style/dark/public.qss @@ -0,0 +1,1708 @@ +/*深色*/ + +QWidget +{ + font: 17px "Microsoft YaHei"; + color: #FFFFFF; + background:transparent; + outline:none; +} + +QWidget:disabled +{ + color:#ABABAB; + border-color: #ABABAB; +} + +QFrame{ + color: #FFFFFF; + background-color: transparent;/*不能设置为transparent*/ +} + +QDialog { + background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgba(42, 66, 99, 1), stop:1 rgba(68, 105, 155, 1)); + border-radius: 0px; + box-shadow: none !important; +} + +QMainWindow +{ + background-color: #1D2E57; +} + +QMainWindow::separator{ + border: 0px solid #6088BA; + border-style: outset; + width: 5px; + height: 5px; +} +QMainWindow::separator:hover{ + background: #5DA5FB; +} +QSplitter::handle{ + border: 0px solid #6088BA; + width: 5px; + height: 5px; +} +QSplitter::handle:hover{ +/*splitter->handle(1)->setAttribute(Qt::WA_Hover, true);才生效*/ + border-color: #5DA5FB; + background-color: #5DA5FB; +} +QSplitter::handle:pressed{ + border-color: #5DA5FB; + background-color: #033d67; +} +QSizeGrip{ + background-color: none; +} + +/* =============================================== */ +/* Label */ +/* =============================================== */ +QLabel { + background: transparent; + border: 0px solid transparent; + padding: 1px; +} + + +/* A QLabel is a QFrame ... */ +/* A QToolTip is a QLabel ... */ +QToolTip { + border: 2px solid #6088BA; + border-radius: 3px; + opacity:210; +} + + + + /* =============================================== */ +/* QComboBox */ +/* =============================================== */ +QComboBox{ + background: transparent; + selection-background-color:#5DA5FB; + selection-color:#FFFFFF; + border: 2px solid #6088BA; + border-radius: 0px; + padding: -2 10 -2 10px; + height:40px; +} + +QComboBox:hover +{ + border-color: #5DA5FB; +} + +QComboBox:focus { + border-color: #5DA5FB; +} + +QComboBox QAbstractItemView +{ + min-width: 200px; + background:#4E709A; + selection-background-color: #5DA5FB; + selection-color:#FFFFFF; + /*alternate-background-color: #0E1D41;*/ + border: 2px solid #6088BA; + padding: 10px 0px 10px 0px; +} + +QComboBox QAbstractItemView::item:selected:active { + background: transparent; + color: #FFFFFF; +} + +QComboBox::drop-down { + border-image:url(../../resource/zh/public/dark/icon/box-down-normal.png); + margin-right: 10px; + height:9px; + width:14px; + subcontrol-origin: margin; + subcontrol-position: center right; +} + +QComboBox::drop-down:hover{ + border-image:url(../../resource/zh/public/dark/icon/box-down-select.png); +} + +QComboBox::drop-down:open:!hover { + border-image:url(../../resource/zh/public/dark/icon/box-down-normal.png); +} + +QComboBox::drop-down:open:hover { + border-image:url(../../resource/zh/public/dark/icon/box-down-select.png); +} + +QComboBox::drop-down:disabled { + border-image:url(../../resource/zh/public/dark/icon/box-down-disable.png); +} + +/* =============================================== */ +/* QMenu */ +/* =============================================== */ +QMenu +{ + min-width: 200px; + background:#4E709A; + padding: 10px 0px 10px 0px; +} + +QAction { + min-width: 240px; + height:40px; + color:#FFFFFF; + background:#4E709A; + padding: 0px 20px 0px 20px; +} + +QAction:hover { + font-weight: bold; + color:#FFFFFF; + background-color: #5DA5FB; +} + +QMenu::item{ + min-width: 200px; + height:40px; + color:#FFFFFF; + background:transparent; + border: 2px solid transparent; + padding: 0px 20px 0px 20px; +} +QMenu::item:hover{ + font-weight: bold; + color:#FFFFFF; + background:#5DA5FB; +} + +QMenu::item:disabled,QMenu::item:disabled:selected,QMenu::item:disabled:pressed{ + + color: #ABABAB; + background: transparent; +} + +QMenu::item#editBatch{ + min-width: 150px; +} + +QMenu::item:selected{ + color:#FFFFFF; + background:#5DA5FB; +} + +QMenu::item:pressed { + font-weight: bold; + color:#FFFFFF; + background:#5DA5FB; +} + +QMenu#contextMenu{ + min-width:240px; +} + + +/* =============================================== */ +/* TextBox */ +/* =============================================== */ +QLineEdit { + background: transparent;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color: #5DA5FB; + selection-color:#FFFFFF; + border: 2px solid #6088BA; + border-radius: 0px; + padding: 3px 10px 4px 10px; + max-height:40px; +} + +QLineEdit:hover{ + border-color: #5DA5FB; +} + +QLineEdit:focus{ + border-color: #5DA5FB; +} +/*QLineEdit[readOnly="true"] { color: gray }*/ +QLineEdit[echoMode="2"]{ + lineedit-password-character: 9679;/*字符的ascii码35 88等 */ +} + +QLineEdit:read-only { + color: #FFFFFF; +} + +QLineEdit:disabled{ + color:#ABABAB; +} + +QLineEdit[placeholderText] +{ + color: #ACB3BF; + font-size: 20px; +} + +QTextEdit{ + selection-background-color:#5DA5FB; + selection-color:#FFFFFF; + border: 2px solid #6088BA; + +} +QTextEdit:hover{ + border-color: #5DA5FB; +} +QTextEdit:focus{ + border-color: #5DA5FB; +} +/* =============================================== */ +/* Button */ +/* =============================================== */ +QPushButton { + border: 2px solid #6088BA; + background-color:transparent; + radius:0px; + padding: -2px 10px -2px 10px; + min-height: 40px; +} + +QPushButton:hover{ + background-color: #5DA5FB; + border-color: #5DA5FB; +} + +QPushButton:pressed +{ + font-weight: bold; + background-color: #5DA5FB; +} + +QPushButton:focus,QPushButton:default { + + border-color: #5DA5FB; /* make the default button prominent */ +} + +QPushButton:checked{ + + background-color: #5DA5FB; +} + +QToolBar{ + border: 1px solid #6088BA; + spacing: 0px; +} + +QToolBar::separator:horizontal { + background:#6088BA; + width: 1px; +} + +QToolBar::separator:vertical { + background:#6088BA; + height: 1px; +} + +QToolButton,QToolButton:unchecked { /* ToolBar里的按钮和带下拉菜单的按钮 */ + border: 2px solid #6088BA; + background-color:transparent; + radius:0px; + padding: 3px 2px 3px 3px; +} +QToolButton:checked{ + font-weight: bold; + background-color: #5DA5FB; +} +QToolButton:hover{ + background-color: #5DA5FB; + border-color: #5DA5FB; +} + +QToolButton:pressed,QToolButton:checked:hover{ + font-weight: bold; + background-color: #5DA5FB; +} +QToolButton:checked:pressed{ + font-weight: bold; + background-color: #5DA5FB; +} + + +/* only for MenuButtonPopup */ +QToolButton[popupMode="1"]{ + padding-left: 1px; + padding-right: 15px; /* make way for the popup button */ + border: 2px solid #6088BA; + min-height: 15px; + /*background: qlineargradient(x1:0, y1:0 ,x2:0, y2:1 + stop: 0 #39495C, stop: 0.05 #0d3756, stop: 0.5 #0d3756 + stop: 0.95 #39495C stop: 1#39495C)*/ +} +QToolButton[popupMode="1"]:hover{ + border-width: 1px; + background-color: #5DA5FB; + border-color: #5DA5FB; +} + +QToolButton::menu-button { + border: 2px solid #6088BA; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + width: 16px; +} + +QToolButton::menu-button:hover { + border: 2px solid #5DA5FB; +} + +QToolButton::menu-button:pressed { + border: 2px solid #6088BA; +} + +QToolButton QMenu +{ + selection-background-color: #5DA5FB; + selection-color:#001220; + background: transparent; + border: 2px solid #6088BA; + padding: 10px 0px 10px 0px; +} + +QToolButton QMenu::item +{ + height:30px; + background: transparent; + border: 2px solid transparent; + padding: 0px 20px 0px 20px; +} + +/* =============================================== */ +/* QRadioButton */ +/* =============================================== */ +QRadioButton { + height: 28px; +} + +QRadioButton:hover{ + color:#5DA5FB; +} + + +QRadioButton::indicator{ + width: 14px; + height: 14px; +} + +QRadioButton::indicator::unchecked{ + border-image:url(../../resource/zh/public/dark/icon/rkb-normal.png); +} + +QRadioButton::indicator:unchecked:hover { + border-image:url(../../resource/zh/public/dark/icon/rkb-hover.png); +} + +QRadioButton::indicator:unchecked:pressed { + border-image:url(../../resource/zh/public/dark/icon/rkb-hover.png); +} + +QRadioButton::indicator:unchecked:disabled { + border-image:url(../../resource/zh/public/dark/icon/rkb-disable.png); +} + +QRadioButton::indicator::checked{ + border-image:url(../../resource/zh/public/dark/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:hover { + border-image:url(../../resource/zh/public/dark/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:pressed { + border-image:url(../../resource/zh/public/dark/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:disabled { + border-image:url(../../resource/zh/public/dark/icon/rkb-select-disable.png); +} + +/* =============================================== */ +/* QCheckBox */ +/* =============================================== */ +QCheckBox{ + color:#FFFFFF; +} + +QCheckBox::hover { + color:#5DA5FB; +} + +QCheckBox::indicator{ + width: 14px; + height: 14px; +} + + +QCheckBox::indicator::unchecked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-normal.png); +} + +QCheckBox::indicator:unchecked:hover { + border-image:url(../../resource/zh/public/dark/icon/ckb-uncheck-hover.png); +} + +QCheckBox::indicator:unchecked:pressed { + border-image:url(../../resource/zh/public/dark/icon/ckb-uncheck-hover.png); +} + +QCheckBox::indicator:unchecked:disabled { + border-image:url(../../resource/zh/public/dark/icon/ckb-disable.png); +} + +QCheckBox::indicator::checked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:hover { + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:pressed { + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:disabled { + border-image:url(../../resource/zh/public/dark/icon/ckb-select-disable.png); +} + +QCheckBox::indicator:indeterminate { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck.png); +} + +QCheckBox::indicator:indeterminate:hover { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck-hover.png); +} + +QCheckBox::indicator:indeterminate:pressed { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck-hover.png); +} + +QCheckBox::indicator:indeterminate:disabled { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck-disable.png); +} + +/* =============================================== */ +/* Slider ProgressBar */ +/* =============================================== */ +QProgressBar { + border: 2px solid #6088BA; + border-radius: 4px; + text-align: center; +} + +QProgressBar::chunk { + background-color: #b3d7f9; + width: 4px; + margin: 1px; +} + +QSlider{ + border: 2px solid transparent; +} + +QSlider::disabled{ + border: 2px solid transparent; +} + +QSlider::groove{ + border: 1px solid #6088BA; + /*background: transparent;*/ +} +QSlider::handle {/*设置中间的那个滑动的键*/ + border: 1px solid #6088BA; + background: #5DA5FB; +} +QSlider::groove:horizontal { + height: 3px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */ + left:5px; right: 5px; +} +QSlider::groove:vertical{ + width: 3px; + top: 5px; bottom: 5px; +} +QSlider::handle:horizontal{ + width: 6px; + margin: -7px; /* height */ +} +QSlider::handle:vertical{ + height: 6px; + margin: -7px; /* height */ +} +QSlider::add-page{/*还没有滑上去的地方*/ + border: 2px solid #6088BA; + background:#4B6D97; +} +QSlider::sub-page{/*已经划过的从地方*/ + background: #5DA5FB; +} + +/* =============================================== */ +/* ScrollBar */ +/* =============================================== */ +QScrollBar{ + background-color: transparent; + border: 1px solid #6088BA; + border-radius: 0px; + padding: 1px; + margin:0px; + height: 15px; + width: 15px; +} + +QScrollBar::handle{ + border-color:#6088BA; + radius: 0px; + background: #6088BA; + min-width: 10px; + min-height: 10px; +} +QScrollBar::handle:hover { + background: #5DA5FB; +} +QScrollBar::add-line, QScrollBar::sub-line, +QScrollBar::add-page, QScrollBar::sub-page { + width: 0px; + background: transparent; +} +QScrollArea{ + border: none; +} +/*QScrollArea QAbstractSlider{ + border-radius: 0px; +}*/ + + + +/* =============================================== */ +/* GroupBox */ +/* + left: 6px; + top:-30px; + background-color: transparent; +/* =============================================== */ +QGroupBox { + background-color: transparent; + border: 1px solid #6088BA; + padding:0px 0px 0px 0px; + margin-top: 30px; +} + +QGroupBox:disabled{ + border: 2px solid #ABABAB; +} + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + left:20px; + background-color: transparent; +} +QGroupBox::indicator::unchecked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-normal.png); +} +QGroupBox::indicator::checked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} +QGroupBox::indicator:indeterminate { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck.png); +} + + +/* =============================================== */ +/* ToolBox */ +/* =============================================== */ +QToolBox{ + border: 2px solid #6088BA; +} +QToolBox::tab { + background: transparent; + border: 1px solid #6088BA; +} +QToolBox::tab:hover { + background-color: #4B6D97; + border-color: #5DA5FB; +} +QToolBox::tab:pressed { + font-weight: bold; + color:#FFFFFF; + background-color: #4B6D97; + border: 2px solid #5DA5FB; +} +QToolBox::tab:selected { + font-weight: bold; + color:#FFFFFF; + background-color: #4B6D97; + border: 2px solid #5DA5FB; +} + +/* =============================================== */ +/* QTabBar */ +/* =============================================== */ +QTabWidget{ + /*margin-top:10px;*/ + +} +QTabWidget::pane{ + border: 2px solid #6088BA; +} +QTabWidget::tab-bar { + left: 0px; +} +QTabBar::tab { + color:#FFFFFF; + background: transparent; + border: 0px solid #6088BA; + padding: 0px 10px 0px 10px; + min-height:38px; +} +QTabBar::tab:hover { + background: #5DA5FB; + border-color: transparent; +} +QTabBar::tab:selected { + background: #5DA5FB; + color:#FFFFFF; +} +QTabBar::tab:pressed { + font-weight: bold; + background: #5DA5FB; + border-color: #5DA5FB; + color:#FFFFFF; +} +QTabBar::tab:disabled { + color:#ABABAB; +} + +QTabBar::tab:focus { + border-color: #5DA5FB; +} +QTabBar::tab:top{ + border-top:0px; + border-left:0px; + border-right:0px; + border-bottom:0px solid transparent; +} + +QTabBar::tab:top:selected{ + border-top:0px; + border-left:0px; + border-right:0px; + border-bottom:2px solid #5DA5FB; +} + +QTabBar::tab:bottom{ + width:80px; + height:30px; + border-top:2px solid transparent; + border-left:0px; + border-right:0px; + border-bottom:0px; + +} + +QTabBar::tab:bottom:selected{ + border-top:2px solid #5DA5FB; + border-left:0px; + border-right:0px; + border-bottom:0px; +} + +QTabBar::tab:right{ + height:80px; + border-top:0px; + border-bottom:0px; + border-right:0px; + border-left:2px solid transparent; + +} + +QTabBar::tab:right:selected{ + height:80px; + border-top:0px; + border-bottom:0px; + border-right:0px; + border-left:2px solid #5DA5FB; + +} +QTabBar::tab:left{ + height:80px; + border-top:0px; + border-bottom:0px; + border-left:0px; + border-right:2px solid transparent; + +} + +QTabBar::tab:left:selected{ + height:80px; + border-top:0px; + border-bottom:0px; + border-left:0px; + border-right:2px solid #5DA5FB; +} + + +QTabWidget::pane +{ + border:1px solid #6088BA; + padding:6px; +} + + +/* =============================================== */ +/* QHeaderView for list table */ +/* =============================================== */ +QHeaderView { + background-color: #4B6D97; + border: none; + margin: -2px; + padding: 0px; + height:40px; +} +QHeaderView::section, QTableCornerButton::section {/*设置表头属性*//*左上角*/ + background-color: #4B6D97; + padding: 0px 10px 0px 10px; + min-height: 40px; + border-top: 0px solid #6088BA; + border-left: 0px solid #6088BA; + border-right: 2px solid #6088BA; + border-bottom: 2px solid #6088BA; + border-radius: 0px; +} +QHeaderView::section:hover, QTableCornerButton::section:hover{ + /*background-color: #033d67;*/ +} +QHeaderView::section:pressed{ + background-color: #5DA5FB; + color:#FFFFFF; +} +QHeaderView::section:checked { + background-color: #4B6D97; + color:#FFFFFF; +} + +QHeaderView::down-arrow +{ + subcontrol-position:center right; + padding-right:10px; + image:url(../../resource/zh/public/dark/icon/box-down-normal.png); +} + +QHeaderView::up-arrow +{ + subcontrol-position:center right; + padding-right:10px; + image:url(../../resource/zh/public/dark/icon/box-up-normal.png); +} + +/* =============================================== */ +/* QAbstractItemView */ +/* =============================================== */ +QAbstractItemView +{ + show-decoration-selected:1; + selection-background-color:#5DA5FB; /*鼠标选中时背景色*/ + selection-color:#FFFFFF; /*鼠标选中时前景色:文字颜色*/ + /*设置交替颜色,需要在函数属性中设置:tableWidget->setAlternatingRowColors(true)*/ + alternate-background-color: transparent; + background: transparent; + color:#FFFFFF; + border: 2px solid #6088BA; +} + +QAbstractItemView::item +{ + background: transparent; + radius:0px; + min-height:30px; + border: 0px; + padding: 0px; +} + +QAbstractItemView::item:hover{ + background:#5DA5FB; +} + +QAbstractItemView::item:pressed{ + color: #FFFFFF; + background:#5DA5FB; +} + +QAbstractItemView::item:selected:focus { + background: #5DA5FB; + color: #FFFFFF; +} + +QAbstractItemView::item:selected:!focus { + background: #5DA5FB; + color: #FFFFFF; +} + +QAbstractItemView::item:selected:active { + background: #5DA5FB; + color: #FFFFFF; +} + +QAbstractItemView QCheckBox::hover{ + + background: #5DA5FB; +} + +QAbstractItemView QCheckBox::pressed{ + color: #FFFFFF; + background:#5DA5FB; +} + +QAbstractItemView QCheckBox::focus{ + color:#FFFFFF; + background: #5DA5FB; +} + +QAbstractItemView QCheckBox::selected:focus { + background: #5DA5FB; + color: #FFFFFF; +} + +QAbstractItemView QCheckBox::selected:!focus { + background: #5DA5FB; + color: #FFFFFF; +} + +QAbstractItemView QCheckBox::selected:active { + background: #5DA5FB; + color: #FFFFFF; +} + +QAbstractItemView::indicator::unchecked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-normal.png); +} + + +QAbstractItemView::indicator::checked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} + +QAbstractItemView::indicator:indeterminate { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck.png); +} + +QAbstractItemView::branch{ + background-color: transparent; +} + +QAbstractItemView::branch:alternate +{ + alternate-background-color: #5DA5FB; +} + + +QAbstractItemView::branch:hover{ + background: #5DA5FB; +} + +QAbstractItemView::branch:pressed{ + color: #FFFFFF; + background:#5DA5FB; +} + +QAbstractItemView::branch:focus{ + color:#FFFFFF; + background: #5DA5FB; +} + +QAbstractItemView::branch:selected:focus { + background: #5DA5FB; + color: #FFFFFF; +} + +QAbstractItemView::branch:selected:!focus{ + background: #5DA5FB; + color: #FFFFFF; +} + +QAbstractItemView::branch:selected:active { + background: #5DA5FB; + color: #FFFFFF; +} + + +/* =============================================== */ +/* QListView QListWidget */ +/* =============================================== */ +QListWidget, QListView +{ + gridline-color: #6088BA; /*表格中的网格线条颜色*/ + border:2px solid #6088BA; /*边框线的宽度、颜色*/ + /*border:none;*/ /*去除边界线*/ + /*border-radius:5px;*/ + /*padding:10px 10px;*/ /*表格与边框的间距*/ +} + +QListView::item, QListWidget::item{ + background: transparent; + outline-style: none; + border: none; + padding: 0px 10px 0px 10px; +} + +/* =============================================== */ +/* QTableWidget */ +/* =============================================== */ +QTableWidget, QTableView +{ + gridline-color: #39495C; /*表格中的网格线条颜色*/ + border:2px solid #6088BA; /*边框线的宽度、颜色*/ + /*border:none;*/ /*去除边界线*/ + /*border-radius:5px;*/ + /*padding:10px 10px;*/ /*表格与边框的间距*/ +} +QTableView::item, QTabWidget::item{ + background: transparent; + outline-style: none; + border: none; +} + +QTableView QLineEdit, +QTableWidget QLineEdit, +QTreeWidget QLineEdit, +QTreeView QLineEdit +{ + background: #4B6D97; + border-radius: 0px; + padding: 0px; +} + +QTableWidget QComboBox , +QTableView QComboBox, +QTreeWidget QComboBox, +QTreeView QComboBox +{ + background: #4B6D97; + border: 0px; + border-radius: 0px; + margin: 0px; + height:30px; +} + +QTableWidget QPushButton , +QTableView QPushButton, +QTreeWidget QPushButton, +QTreeView QPushButton +{ + min-height: 30px; +} + + + +/* =============================================== */ +/* QTreeWidget QTreeView */ +/* =============================================== */ +QTreeWidget, QTreeView +{ + background:transparent; +} +QTreeWidget::item, QTreeView::item{ + background: transparent; + outline-style: none; + border: none; +} + + +QTreeWidget::branch,QTreeView::branch { + background: transparent; +} + +QTreeWidget::branch:hover,QTreeView::branch:hover{ + background: #5da5fb; +} + +QTreeWidget::branch:pressed,QTreeView::branch:pressed{ + color: #FFFFFF; + background:#5DA5FB; +} + +QTreeWidget::branch:focus,QTreeView::branch:focus{ + color:#FFFFFF; + border-color: #5DA5FB; +} + +QTreeWidget::branch:selected:focus,QTreeView::branch:selected:focus { + background: #5DA5FB; + color: #FFFFFF; +} + +QTreeWidget::branch:selected:!focus,QTreeView::branch:selected:!focus{ + background: #5DA5FB; + color: #FFFFFF; +} + +QTreeWidget::branch:selected:active,QTreeView::branch:selected:active { + background: #5DA5FB; + color: #FFFFFF; +} + +QTreeView::branch { + width:9px; + height:9px; + background-repeat: no-repeat; + background-position: center; +} + +QTreeView::branch:closed:has-children { + image:url(../../resource/zh/public/dark/icon/arrowRight.png); +} + +QTreeView::branch:closed:has-children:hover { + image:url(../../resource/zh/public/dark/icon/arrowRight.png); +} + +QTreeView::branch:open:has-children { + image:url(../../resource/zh/public/dark/icon/arrowBottom.png); +} + +QTreeView::branch:open:has-children:hover { + image:url(../../resource/zh/public/dark/icon/arrowBottom.png); +} + +/* =============================================== */ +/* QAbstractSpinBox spinbox QDateTimeEdit */ +/* =============================================== */ +QAbstractSpinBox { + background: transparent;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color:#5DA5FB; + selection-color:#FFFFFF; + border: 2px solid #6088BA; + border-radius: 0px; + padding: 0 0 0 0px; + height:40px; +} + +QAbstractSpinBox:hover { + border-color: #5DA5FB; +} + +QAbstractSpinBox:focus { + border-color: #5DA5FB; + +} + +/*SpinBox向上按钮样式*/ +QAbstractSpinBox::up-button { +margin: 5px 5px 5px 5px; + height:9px; + width:14px; + image:url(../../resource/zh/public/dark/icon/box-up-normal.png); + } + +QAbstractSpinBox::up-button:hover { + image:url(../../resource/zh/public/dark/icon/box-up-select.png); + } + +QAbstractSpinBox::up-button:pressed { + image:url(../../resource/zh/public/dark/icon/box-up-select.png); + + } + +QAbstractSpinBox::up-button:disabled{ + image:url(../../resource/zh/public/dark/icon/box-up-disable.png); + + } + +/*SpinBox向下按钮样式*/ +QAbstractSpinBox::down-button { + margin: 5px 5px 5px 5px; + height:9px; + width:14px; + image:url(../../resource/zh/public/dark/icon/box-down-normal.png); + } + +QAbstractSpinBox::down-button:hover{ + image:url(../../resource/zh/public/dark/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:pressed{ + image:url(../../resource/zh/public/dark/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:disabled{ + image:url(../../resource/zh/public/dark/icon/box-down-disable.png); + +} + +QDateTimeEdit::drop-down { + subcontrol-origin: padding; + subcontrol-position: right center; + width: 30px; + background-color: transparent; + image:url(../../resource/zh/public/dark/icon/calendar.png); +} + + +/* =============================================== */ +/* QCalendarWidget */ +/* =============================================== */ +QCalendarWidget QWidget{ + border: none; + background-color: #4E709A; + color:#FFFFFF; +} + +QCalendarWidget QWidget#qt_calendar_calendarview{ + border-left: 1px solid #6088BA; + border-right: 1px solid #6088BA; + border-bottom: 1px solid #6088BA; + background-color: #4E709A; +} + +QCalendarWidget QWidget#qt_calendar_navigationbar { + background-color: #4B6D97; + border: 2px solid #6088BA; +} + + +QCalendarWidget QMenu{ + width: 80px; + background-color: #4E709A; + border: 0px; + color:#5DA5FB; +} + + +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: transparent; +} + +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: transparent; +} + + +QCalendarWidget QAbstractSpinBox { + background: transparent; + selection-background-color: #5DA5FB; + border: 2px solid #6088BA; + border-radius: 0px; + padding: 0 10 0 10px; + height:30px; +} + +QCalendarWidget QAbstractSpinBox:hover { + background-color: #5DA5FB; +} + +QCalendarWidget QAbstractSpinBox:focus { + background-color: #5DA5FB; +} + +QCalendarWidget QToolButton:pressed,QCalendarWidget QToolButton:checked:hover{ + color:#5DA5FB; +} + + +QCalendarWidget QToolButton#qt_calendar_prevmonth{ + width: 40px; + qproperty-icon: url(../../resource/zh/public/dark/icon/arrowLeft.png); + background-color: transparent; +} + +QCalendarWidget QToolButton#qt_calendar_nextmonth { + width: 40px; + qproperty-icon: url(../../resource/zh/public/dark/icon/arrowRight.png); + background-color: transparent; +} + +QCalendarWidget QToolButton#qt_calendar_monthbutton { + background-color: transparent; +} + +QCalendarWidget QAbstractItemView +{ + selection-background-color:#5DA5FB; /*鼠标选中时背景色*/ + selection-color:#FFFFFF; /*鼠标选中时前景色:文字颜色*/ + /*设置交替颜色,需要在函数属性中设置:tableWidget->setAlternatingRowColors(true)*/ + alternate-background-color: #4B6D97; + background: transparent; + border: 2px solid #6088BA; +} + +/* =============================================== */ +/* searchButton搜索框 */ +/* =============================================== */ +QPushButton#searchButton{ + background:transparent; + min-height:22px; + max-width:22px; + border:none; + margin-left:0px; + padding: 0 5 0 5px; + image:url(../../resource/zh/public/dark/icon/search.png); +} + +QLineEdit#searchTextEdit { + border:none; + background:transparent; +} + +QWidget#searchWidget { + border:2px solid #5DA5FB; + background:#4B6D97; + max-height: 40px; +} +/* =============================================== */ +/* 主窗口 */ +/* =============================================== */ + +QWidget#centralwidget +{ + background:#1d2e57; +} + +WorkFrame +{ + background-color: #1d2e57; +} + +MenuFrame +{ + min-width: 90px; + max-width: 90px; + background-color: #0e1d42; +} + +/* =============================================== */ +/* 自定义控件部分- 标题头 */ +/* =============================================== */ +MainTitle{ + background:#0E1D42; + min-height: 42px; + max-height: 42px; +} + +MainTitle QLabel#icon { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + background:transparent; + border-image: url(../../resource/zh/public/dark/icon/min-logo.png); +} + +MainTitle QLabel#title { + color:#00D3FF; + font-weight: bold; +} + +MainTitle QPushButton#min_btn { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/dark/icon/btn_min.png) 0 96 0 0 ; +} + +MainTitle QPushButton#min_btn:hover { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_min.png) 0 64 0 32; +} + +MainTitle QPushButton#min_btn:pressed { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_min.png) 0 32 0 64 ; + +} + +MainTitle QPushButton#min_btn:disabled { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/dark/icon/btn_min.png) 0 0 0 96 ; + +} + + +MainTitle QPushButton#max_btn[buttonStatus="max"]{ + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/dark/icon/btn_max.png) 0 96 0 0 ; +} + +MainTitle QPushButton#max_btn:hover[buttonStatus="max"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_max.png) 0 64 0 32; +} + +MainTitle QPushButton#max_btn:pressed[buttonStatus="max"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_max.png) 0 32 0 64 ; + +} + +MainTitle QPushButton#max_btn:disabled[buttonStatus="max"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/dark/icon/btn_max.png) 0 0 0 96 ; + +} + + + +MainTitle QPushButton#max_btn[buttonStatus="normal"]{ + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/dark/icon/btn_normal.png) 0 96 0 0 ; +} + +MainTitle QPushButton#max_btn:hover[buttonStatus="normal"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_normal.png) 0 64 0 32; +} + +MainTitle QPushButton#max_btn:pressed[buttonStatus="normal"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_normal.png) 0 32 0 64 ; + +} + +MainTitle QPushButton#max_btn:disabled[buttonStatus="normal"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/dark/icon/btn_normal.png) 0 0 0 96 ; + +} + +MainTitle QPushButton#close_btn { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/dark/icon/btn_close.png) 0 96 0 0 ; +} + +MainTitle QPushButton#close_btn:hover { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_close.png) 0 64 0 32; +} + +MainTitle QPushButton#close_btn:pressed { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_close.png) 0 32 0 64 ; + +} + +MainTitle QPushButton#close_btn:disabled { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/dark/icon/btn_close.png) 0 0 0 96 ; + +} + + + +/* =============================================== */ +/* 自定义控件部分- 弹出窗 */ +/* =============================================== */ +QWidget#CustomDialogCentralWidget +{ + background-color: #fdfdfd; + border-left:1px solid #adbdcd; + border-right:1px solid #adbdcd; + border-bottom:1px solid #B2B9C3; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + border-style: solid; +} + +CustomDialogTitle{ + border-top:2px solid #5da5fb; + border-left:2px solid #5da5fb; + border-right:2px solid #5da5fb; + border-bottom:1px solid #6088BA; + background:#6088BA; + min-height: 42px; + max-height: 42px; +} + +CustomDialogTitle QLabel#icon { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + background:transparent; + border-image: url(../../resource/zh/public/dark/icon/min_logo.png); +} + +CustomDialogTitle QLabel#title { + color:#FFFFFF; + font-weight: bold; +} + + +CustomDialogTitle QPushButton#close_btn { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/dark/icon/btn_close.png) 0 96 0 0 ; +} + +CustomDialogTitle QPushButton#close_btn:hover { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_close.png) 0 64 0 32; +} + +CustomDialogTitle QPushButton#close_btn:pressed { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_close.png) 0 32 0 64 ; + +} + +CustomDialogTitle QPushButton#close_btn:disabled { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/dark/icon/btn_close.png) 0 0 0 96 ; +} + +CustomDialog,CustomUiDialog +{ + background:#1D2E57; + border: 2px solid #5da5fb; +} + +/* =============================================== */ +/* 自定义控件部分- 主菜单 */ +/* =============================================== */ +MenuFrame QPushButton{ + background-color:transparent; + background-position:top; + background-repeat:no-repeat; + background-origin:padding; + height:45px; + width:60px; + padding:18px 0px -10px 0px; + margin: 0px -1px 1px 5px; + border:1px solid transparent; + + background-image:url(../../resource/zh/public/light/icon/main_common.png); + border-width: 1px; +} + +MenuFrame QPushButton:hover{ + + border-top-left-radius:8px; + border-bottom-left-radius:8px; + border-top-right-radius:8px; + border-bottom-right-radius:8px; + background-color:transparent; + color: #FFFFFF; + border-top:1px solid #6088ba; + border-left:1px solid #6088ba; + border-right:1px solid #6088ba; + border-bottom:1px solid #6088ba; + + background-image:url(../../resource/zh/public/light/icon/main_common.png); +} + + + +MenuFrame QPushButton:pressed, MenuFrame QPushButton:checked,MenuFrame QPushButton:focus{ + border-top-left-radius:8px; + border-bottom-left-radius:8px; + border-top-right-radius:0px; + border-bottom-right-radius:0px; + background-color: #1d2e57; + font-weight: bold; + color: #FFFFFF; + border-top:1px solid #6088ba; + border-left:1px solid #6088ba; + border-right:1px solid transparent; + border-bottom:1px solid #6088ba; + background-image:url(../../resource/zh/public/light/icon/main_common.png) ; +} + +MenuFrame QWidget#centralWidget,MenuFrame QWidget#scrollAreaWidget,MenuFrame QWidget#toolBtnWidget,QScrollArea +{ + background:transparent; +} + + +QPushButton#upButton { + background-position:top; + background-repeat:no-repeat; + background-origin:content; + + text-align:bottom; + padding:0px; + margin: 0px; + border:0px solid transparent; + border-radius:0px; + + color: transparent; + height: 32px; + width: 32px; + background:transparent; + + border-image: url(../../resource/zh/public/dark/icon/btn_up.png) 0 96 0 0 ; + +} + +QPushButton#upButton:hover { + background-color: #d9e8fd; + border: 0px; + border-image: url(../../resource/zh/public/dark/icon/btn_up.png) 0 64 0 32; +} + +QPushButton#upButton:pressed { + background-color: #096ae4; + border: 0px; + border-image: url(../../resource/zh/public/dark/icon/btn_up.png) 0 32 0 64 ; +} + +QPushButton#upButton:disabled { + background:transparent; + border: 0px; + border-image: url(../../resource/zh/public/dark/icon/btn_up.png) 0 0 0 96 ; +} + + +QPushButton#downButton { + background-position:top; + background-repeat:no-repeat; + background-origin:content; + + text-align:bottom; + padding:0px; + margin: 0px; + border:1px solid #B2B9C3; + border-radius:0px; + + color: transparent; + height: 32px; + width: 32px; + background:transparent; + + border-image: url(../../resource/zh/public/light/icon/btn_down.png) 0 96 0 0 ; +} + +QPushButton#downButton:hover { + background-color: #d9e8fd; + border: 0px; + border-image: url(../../resource/zh/public/light/icon/btn_down.png) 0 64 0 32; +} + +QPushButton#downButton:pressed { + background-color: #096ae4; + border: 0px; + border-image: url(../../resource/zh/public/light/icon/btn_down.png) 0 32 0 64 ; +} + +QPushButton#downButton:disabled { + background:transparent; + border: 0px; + border-image: url(../../resource/zh/public/light/icon/btn_down.png) 0 0 0 96 ; +} + + +/* =============================================== */ +/* 自定义控件部分- 消息窗 */ +/* =============================================== */ +N_MessageBox +{ + min-height:200px; + min-width:300px; +} + +AdaptImage[MSG_TYPE="ICON_DEFAULT"] +{ + height:180px; + width:180px; +} + + +AdaptImage[MSG_TYPE="ICON_WARNING"] +{ + background: transparent; image:url(../../resource/zh/public/dark/icon/Warning.png); +} + + +AdaptImage[MSG_TYPE="ICON_ERROR"] +{ + background: transparent; image:url(../../resource/zh/public/dark/icon/Error.png); +} + + +AdaptImage[MSG_TYPE="ICON_INFORMATION"] +{ + background: transparent; image:url(../../resource/zh/public/dark/icon/Information.png); +} + + +AdaptImage[MSG_TYPE="ICON_QUESTION"] +{ + background: transparent; image:url(../../resource/zh/public/dark/icon/Question.png); +} + +AlertMessageBox +{ + min-height:160px; + min-width:300px; + background:#6088ba; +} + +AlertMessageBox QLabel +{ + color: #fdfdfd; + font-weight: bold; +} \ No newline at end of file diff --git a/resource/en/style/dark/relaySetting.qss b/resource/en/style/dark/relaySetting.qss new file mode 100644 index 00000000..407e5ae2 --- /dev/null +++ b/resource/en/style/dark/relaySetting.qss @@ -0,0 +1,24 @@ +QWidget,QFrame#frame,QFrame#frame_2{ + color:#01a6ec; + background-color: #0b2a51; +} + +QDialog#CLoginDlg{ + background:#022644; + color:#01a6ec; +} + +QTableWidget{ + background-color:#072d48; + alternate-background-color:red; + selection-color:#00e7fc; + selection-background-color:#134a72; + gridline-color:#09304c; + color:#027bb3; + border:1px solid #0a5b93; + outline:none; +} + +QTableWidget QTableCornerButton::section{ + background-color:rgb(13, 55, 86); +} \ No newline at end of file diff --git a/resource/en/style/dark/robot.qss b/resource/en/style/dark/robot.qss new file mode 100644 index 00000000..7323a557 --- /dev/null +++ b/resource/en/style/dark/robot.qss @@ -0,0 +1,83 @@ +QPushButton#exetask{ + + height:26px; +} +QPushButton#searchButton,QPushButton#play,QPushButton#pause, +QToolButton#m_cap,QPushButton#m_voiceOpen,QPushButton#m_voiceClose{ + border:0px; +} + +QPushButton#searchButton{ +background:#0d3756; +image:url(../../resource/zh/gui/icon/robot/search.png); +} + +QPushButton#play{ + image:url(../../resource/zh/gui/icon/robot/play.png); +} + +QPushButton#pause{ + image:url(../../resource/zh/gui/icon/robot/pause.png); +} + +QToolButton#m_cap{ + image:url(../../resource/zh/gui/icon/robot/cut.png); +} + +QPushButton#m_voiceOpen{ + image:url(../../resource/zh/gui/icon/robot/voiceOpen.png); +} +QPushButton#m_voiceClose{ + image:url(../../resource/zh/gui/icon/robot/voiceClose.png); +} + +QWidget#ccdVideoWidget,QWidget#ctrlWidget{ + border:1px solid #0669af; +} +QWidget#widget_12{ + background-color:#041c3a; +} +QFrame#frame_free{ + border-image: url(../../resource/zh/gui/icon/robot/robotbottom.png); +} +QFrame#frame_overlook{ + border-image: url(../../resource/zh/gui/icon/robot/robotbottom.png); +} +QFrame#frame_charge{ + border-image: url(../../resource/zh/gui/icon/robot/robotbottom.png); +} +QFrame#frame_overhaul{ + border-image: url(../../resource/zh/gui/icon/robot/robotbottom.png); +} +QWidget#widget_12{ + border:1px solid #0669af; +} +QTableView#ccdVideoView{ + border-top: 0px; + border:1px solid #0669af; +} + +QLabel#label_head +{ + font: 18pt "宋体"; +} +QLabel#label_free_font +{ + font: 20pt "宋体"; + color: rgb(0, 170, 255); +} +QLabel#label_overlook_font +{ + font: 20pt "宋体"; + color: rgb(255, 255, 0); +} +QLabel#label_charge_font +{ + font: 20pt "宋体"; + color: rgb(85, 255, 127); +} +QLabel#label_overhaul_font +{ + font: 20pt "宋体"; + color: rgb(255, 127, 0); +} \ No newline at end of file diff --git a/resource/en/style/dark/secondNavigation.qss b/resource/en/style/dark/secondNavigation.qss new file mode 100644 index 00000000..6cbf97f5 --- /dev/null +++ b/resource/en/style/dark/secondNavigation.qss @@ -0,0 +1,15 @@ +CSecondNavigationWidget { + border: none; + background:rgba(66,91,128,0.4); + font-size: 16px; + font-family: "Microsoft YaHei"; + +} + +QTreeWidget::item { + color: #B9B9B9; +} + + + + diff --git a/resource/en/style/dark/sequence.qss b/resource/en/style/dark/sequence.qss new file mode 100644 index 00000000..2d729471 --- /dev/null +++ b/resource/en/style/dark/sequence.qss @@ -0,0 +1,71 @@ +QFrame#mainFrame{ + background-color: #022644; + border:1px solid #0669af; +} +QFrame#frame_2,QFrame#frame_3,QFrame#frame,QFrame#frame_4,QFrame#frame_5,QFrame#sequenceTitle,QFrame#m_optFrame,QFrame#m_guardFrame{ + border:1px solid #0669af; +} + +QListWidget#listWidget,QListWidget#resultListWidget, +QListWidget#locationListWidget,QListWidget#userListWidget, +QListWidget#m_list,QListWidget#listAction,QListWidget#listFunc{ + background-color:#072d48; + border:1px solid #0669af; + color:#0096d7; +} +QListWidget#listWidget::item +{ + color:#0394d5; +} + +QDialog{ +background:#022644; +} +KbdPropertyDlg{ +background:#0c3569; +} + +QDialog#CRunSequenceFilterDialog,QDialog#CHistorySequenceFilterDialog{ + background-color: #022644; +} + +QRadioButton#autoRadio,QRadioButton#singleRadio,QRadioButton#standardSequence,QRadioButton#customSequence{ + color:#01a6ec; + border:0px; +} + +QLineEdit#sequenceName,QLineEdit#leSearchAct,QLineEdit#leSearchFunc,QLineEdit#leSearchOrder,QLineEdit#m_le{ + color:#0096d7; + border:1px solid #024376; + background-color:#0b2a51; +} +QLineEdit#m_optUserAlias,QLineEdit#m_optPassword,QLineEdit#m_guardUserAlias,QLineEdit#m_guardPassword{ + border:1px solid #0669af; + height:26px; + color:#0096d7; + background:#0d3756; +} + +QTabWidget::pane#tab { /* The tab widget frame */ + background-color: #022644; + border:1px solid #0669af; +} +QTabWidget#tab{ + background-color: #0c3569; + border:1px solid #0669af; +} + +QLabel#label_2,QLabel#label,QLabel#excuteLabel,QLabel#label2,QLabel#label1, +QLabel#toolTipsLabel,QLabel#station_label,QLabel#m_labelSelect{ + color:#0394d5; +} +QLabel#labelFuncName,QLabel#labelFuncDesc{ + color:#0394d5; + border:1px solid #0669af; +} +QTreeView QAbstractSpinBox::up-button { + height:3px; +} +QTreeView QAbstractSpinBox::down-button { + height:3px; +} \ No newline at end of file diff --git a/resource/en/style/dark/shift.qss b/resource/en/style/dark/shift.qss new file mode 100644 index 00000000..d1cfbc54 --- /dev/null +++ b/resource/en/style/dark/shift.qss @@ -0,0 +1,34 @@ +QFrame#MainFrame{ + border:none; + background-color: #031624; +} +HandoverWidget QFrame#MainFrame{ + background-color: #0d3756; +} + +QFrame#Frame{ + border:none; + background-color: transparent; +} + +QFrame#frame_2{ + border:none; + background-color: transparent; +} +QPushButton#iconButton{ +background:#001529; +image:url(../../resource/zh/public/dark/icon/calendar.png); +} + +QPushButton#iconButton:hover{ +background:#027bec; +} +QToolButton{ + border: 0px solid #0669af; + border-radius: 0px; + background-color: #0b2a51; + min-height:26px; + width:80px; + color:#01a6ec; +} + diff --git a/resource/en/style/dark/sys_startup.qss b/resource/en/style/dark/sys_startup.qss new file mode 100644 index 00000000..3573a9c3 --- /dev/null +++ b/resource/en/style/dark/sys_startup.qss @@ -0,0 +1,66 @@ +QFrame#startUpFrame,QFrame#frame_page3 +{ + border:1px solid #e8e8e8; +} + +QFrame#frame_page1,QFrame#appFrame +{ + border:0px solid ; +} +QTabWidget#tabWidget +{ + border:0px solid #e8e8e8; +} + + +QWidget#versionWidget +{ + border:1px solid #e8e8e8; + background-color:white; +} +QToolButton +{ + border :none; + background-color: white; +} +QToolButton::hover +{ + background-color:#72B2FF; +} +QTabBar::tab +{ + height:40px; +} +QTabBar::tab:selected, QTabBar::tab:hover { + color:#0394d5; + background-color:white; +} +QTabBar::tab:!selected{ + color:#027bb3; + background-color:#f2f5fa; +} + +QTreeView,QTableWidget{ + border:1px solid #e8e8e8; +} + +QLabel#label +{ + border-top:none; + border-left:none; + border-right:none; + border-bottom:1px solid #e8e8e8; +} +QPushButton#sys_start_btn,QPushButton#sys_start_btn_false +{ + border:none; + background:#00ca21; + color:white; +} +QPushButton#sys_stop_btn,QPushButton#sys_stop_btn_false +{ + border:1px solid #ff6840; + border-radius: 6px; + background:white; + color:#ff6840; +} diff --git a/resource/en/style/dark/trendCurves.qss b/resource/en/style/dark/trendCurves.qss new file mode 100644 index 00000000..23ca405e --- /dev/null +++ b/resource/en/style/dark/trendCurves.qss @@ -0,0 +1,193 @@ + +QLabel#m_tipLabel{ + font: 20px "Microsoft YaHei"; +} + +QLabel#title { + font: 26px "Microsoft YaHei"; +} +CPlotWidget { + qproperty-plotBackgroundColor: transparent; + qproperty-plotTickColor: #D5DBE4; + qproperty-plotGridColor: #516b8998; + qproperty-plotZeroLineColor: #516B89; + qproperty-plotTickPen: #516B89; +} + +CSWitchButton { + min-width:100px; + max-height:40px; + qproperty-backgroundColor: #5DA5FB; + qproperty-checkedColor: #5DA5FB; + qproperty-handleColor: #0f1e43; + qproperty-textColor: #FFFFFF; + qproperty-radius: 0; + qproperty-borderColor:#5DA5FB; +} + +CPlotWidget QHeaderView +{ + min-height: 60px; + min-width: 200px; +} + +/* +QFrame#adaptFrame, +QFrame#frame_3{ + border:1px solid #0669af; +} +QFrame#titleFrame, +QFrame#pageFrame, +QFrame#toolFrame{ + border:none; +} +QLabel#m_tipLabel{ + background:#0b2a51; +} +QLabel#adaptLlabel { + color:#01a6ec; +} +QLabel#title { + color:#01a6ec; +} +CPlotWidget { + qproperty-plotBackgroundColor: #072d48; + qproperty-plotTickColor: #017fb7; + qproperty-plotGridColor: #1A384C; + qproperty-plotZeroLineColor: #4F6878; + qproperty-plotTickPen: #023F63; +} +CSWitchButton { + min-width:60px; + max-height:27px; + qproperty-backgroundColor: #01a6ec; + qproperty-checkedColor: #01a6ec; + qproperty-handleColor: #12568B; + qproperty-textColor: white; + qproperty-radius: 10; + qproperty-borderColor:#0a5b93; +} +CToolTip{ + background:#0b2a51; + border: 1px solid #0669af; + border-radius: 0px; +} +QSlider{ + background:transparent; + min-width:5px; + max-width:15px; +} +QSlider::handle{ + width:15px; + height:15px; + background: #096ae4; +} +QSlider::groove{ + background:transparent; + border:1px solid #0669af; +} +QSlider::add-page, +QSlider::sub-page{ + background: transparent; +} +QPushButton#realTime, +QPushButton#sec, +QPushButton#day, +QPushButton#week, +QPushButton#month, +QPushButton#quarter, +QPushButton#year, +QPushButton#custom{ + width:60px; +} +QPushButton#collectCurve, +QPushButton#plotPrint, +QPushButton#plotExport { + width: 48px; + height:30px; +} +QPushButton#searchButton { + color: #01a6ec; + border: 1px solid #0669af; + border-radius: 0px; + width:20; + height:20; + image: url(../../resource/zh/public/dark/icon/search.png); + background-color: #0b2a51; +} +QPushButton#searchButton:hover { + background-color: #134a72; +} +QPushButton#searchButton:pressed { + background-color: #134a72; + padding: 2px -1px -2px 1px; +} +QTabWidget::pane { + border: 0px; + padding: 0px; +} +QTabBar:tab { + width : 72px; + height: 28px; + color: #01a6ec; + background:#0b2a51; + border-bottom: 1px solid #0669af; +} +QTabBar:tab:selected { + color: #02efef; + background-color: #134a72; + border-bottom-color: #0669af; +} +QTabBar:tab:hover { + color: #02efef; +} +CTrendEditDialog{ + background-color: #0b2a51; +} +CRetriever QLabel{ + color: #01a6ed; +} +CRetriever QWidget{ + background:#0b2a51; + color:#01a6ec; +} +CRetriever QRadioButton{ + color: #01a6ec; +} +CRetriever QFrame#frame_2, +CRetriever QFrame#frame_4, +CRetriever QFrame#frame_5, +CRetriever QFrame#frame_6, +CRetriever QFrame#frame_7, +CRetriever QFrame#frame_8, +CRetriever QFrame#frame_9, +CRetriever QFrame#frame_10, +CRetriever QFrame#frame_11, +CRetriever QFrame#frame_12 +{ + border: 1px solid #0669af; +} +CRetriever QLineEdit{ + color: #0378ae; + border: 1px solid #075d99; +} +CRetriever QPushButton{ + image: url(../../resource/zh/public/dark/icon/search.png); +} +QComboBox#interval{ + min-width:60; +} +QComboBox QLineEdit{ + border:none; +} +QTableView::item#trendView{ + border:1px solid #072d48; + border-top-color:transparent; +} +QDateTimeEdit:drop-down{ + image: url(../../resource/zh/public/dark/icon/arrowBottom.png); + padding-right: 4px; + padding-top: 10px; +} + +*/ \ No newline at end of file diff --git a/resource/en/style/dark/usermng.qss b/resource/en/style/dark/usermng.qss new file mode 100644 index 00000000..68a953bc --- /dev/null +++ b/resource/en/style/dark/usermng.qss @@ -0,0 +1,146 @@ +QFrame#mainFrame{ + background-color: transparent; + border:0px; +} + +QWidget#UserListFrame +{ + min-width: 180px; +} + +/* KbdPropertyDlg{ +background:#0b2a51; +} */ + +/* QTableView QTableCornerButton::section { + background-color:red; +} */ + +QTreeView:!enabled{ + color:#acb3bf; +} + +QToolBar{ + border: 0px solid #6088BA; +} + +QToolButton QMenu +{ + border: 0px solid #6088BA; +} + +QToolButton QMenu::item +{ + border: 0px solid transparent; +} +/* +QAbstractSpinBox::up-button { + height:3px; +} +QAbstractSpinBox::down-button { + height:3px; +} + +*/ +/* +QLabel#SignatureLable{ + background: #032448; + border:1px; + max-width:490px; + min-height:300px; + font-size:36px; + font-style:italic; + font-weight:Bold; +} +*/ +/* +QToolBar QToolButton +{ + border: 1px solid #0070a2; + border-radius: 2px; + /*background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #072d48, stop: 0.05 #0d3756,stop: 0.5 #0d3756, + stop: 0.9 #072d48, stop: 1 #072d48);*/ + /* + radius:4px; + width: 80px; + height: 28px; +} + +/*设置样式风格和人机界面风格一致*/ +/*QTreePropertyBrowser设置选中颜色*/ +/* +QTreeWidget ,QTreeView +{ + selection-background-color:#06153E; + selection-color:#00f0ff; +} + +QToolBar QToolButton +{ + border: 1px solid #0070a2; + border-radius: 2px; + /*background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #072d48, stop: 0.05 #0d3756,stop: 0.5 #0d3756, + stop: 0.9 #072d48, stop: 1 #072d48);*/ + /* + radius:4px; + width: 80px; + height: 28px; +} + +/*QTabBar不可编辑选项卡隐藏*/ +/* +QTabBar::tab:disabled +{ + width:0; + color:transparent; +} + +/*放大spinBox按钮*/ +/*SpinBox向上按钮样式*/ +/* +QAbstractSpinBox::up-button { +margin:10px 10px 10px 10px; + height:10px; + width:20px; + image:url(../../resource/zh/public/dark/icon/box-up-normal.png); + } + +QAbstractSpinBox::up-button:hover { + image:url(../../resource/zh/public/dark/icon/box-up-select.png); + + } + +QAbstractSpinBox::up-button:pressed { + image:url(../../resource/zh/public/dark/icon/box-up-select.png); + + } + +QAbstractSpinBox::up-button:disabled{ + image:url(../../resource/zh/public/dark/icon/box-up-normal.png); + + } +*/ +/*SpinBox向下按钮样式*/ +/* +QAbstractSpinBox::down-button { +margin: 10px 10px 10px 10px; + height:10px; + width:20px; + image:url(../../resource/zh/public/dark/icon/box-down-normal.png); + } + +QAbstractSpinBox::down-button:hover{ + image:url(../../resource/zh/public/dark/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:pressed{ + image:url(../../resource/zh/public/dark/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:disabled{ + image:url(../../resource/zh/public/dark/icon/box-down-normal.png); + +} +*/ diff --git a/resource/en/style/dark/workBench.qss b/resource/en/style/dark/workBench.qss new file mode 100644 index 00000000..98ebc395 --- /dev/null +++ b/resource/en/style/dark/workBench.qss @@ -0,0 +1,487 @@ +/*界面背景设置*/ +QWidget#localstate +{ + border-image: url(../../resource/zh/workBench/LocalState_background.png); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + background-attachment: fixed; + +} + +/*本机状态界面样式设置*/ +#state_widget QToolButton +{ + border: none; + height: 40px; + min-width: 70px; + padding-top: 45px; + + font-family: "Microsoft YaHei", sans-serif; + font-weight: 400; + font-size: 12px; + color: #038300; + line-height: 14px; + text-align: left; + font-style: normal; + text-transform: none; + + background-color: transparent; + background-repeat: no-repeat; + background-position: center; + background-size: contain; +} + +#state_widget QToolButton:hover +{ + background-color:#C1DDFE; +} + +/*基础服务按钮*/ +#state_widget QToolButton[appId = "1"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/basicApp_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "1"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/basicApp_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "1"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/basicApp_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "1"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/basicApp_unknow.png); + color: #8D8D8D; +} + +/*公共部分*/ +#state_widget QToolButton[appId = "2"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/publicApp_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "2"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/publicApp_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "2"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/publicApp_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "2"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/publicApp_unknow.png); + color: #8D8D8D; +} + +/*通用部分*/ +#state_widget QToolButton[appId = "3"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/generalApp_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "3"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/generalApp_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "3"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/generalApp_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "3"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/generalApp_unknow.png); + color: #8D8D8D; +} + +/*能源管理1*/ +#state_widget QToolButton[appId = "4"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "4"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "4"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "4"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_unknow.png); + color: #8D8D8D; +} + +/*2*/ +#state_widget QToolButton[appId = "5"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "5"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "5"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "5"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_unknow.png); + color: #8D8D8D; +} + +/*3*/ +#state_widget QToolButton[appId = "6"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "6"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "6"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "6"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_unknow.png); + color: #8D8D8D; +} + +/*4*/ +#state_widget QToolButton[appId = "7"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "7"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "7"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "7"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_unknow.png); + color: #8D8D8D; +} + +/*5*/ +#state_widget QToolButton[appId = "8"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "8"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "8"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "8"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_unknow.png); + color: #8D8D8D; +} + +/*6*/ +#state_widget QToolButton[appId = "9"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "9"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "9"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "9"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_unknow.png); + color: #8D8D8D; +} + +/*7*/ +#state_widget QToolButton[appId = "10"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "10"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "10"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "10"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_unknow.png); + color: #8D8D8D; +} + +#customWidget QToolButton ,#boxWidget QToolButton +{ + border :none; + background-color: #F2F8FF; + + font-family:"Microsoft YaHei", sans-serif; + font-weight: 400; + font-size: 12px; + color: #004882; + line-height: 14px; + text-align: center; + font-style: normal; + text-transform: none; +} +#customWidget QToolButton:hover ,#boxWidget QToolButton:hover +{ + background-color: #C1DCFE; +} + +#StartUpForm QPushButton +{ + border: none; + border-radius: 0px 0px 0px 0px; + + background-repeat: no-repeat; + background-position: center; + background-size: cover; + background-attachment: fixed; +} + +QPushButton#btn_start +{ + background-image: url(../../resource/zh/workBench/stop_state.png); +} +QPushButton#btn_start:hover , QPushButton#btn_start:pressed +{ + background-image: url(../../resource/zh/workBench/stop_state_hover.png); +} + +QPushButton#btn_stop +{ + background-image: url(../../resource/zh/workBench/run_state.png); +} +QPushButton#btn_stop:hover , QPushButton#btn_stop:pressed +{ + background-image: url(../../resource/zh/workBench/run_state_hover.png); +} + +QPushButton#btn_sysState +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_state.png); +} +QPushButton#btn_sysManage +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_mng.png); +} +QPushButton#btn_sysProcess +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_process.png); +} +QPushButton#btn_sysSetting +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_setting.png); +} +QPushButton#btn_sysTool +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_tools.png); +} + +/*菜单按钮按下后样式*/ +QPushButton#btn_sysState:pressed,QPushButton#btn_sysState:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_state_pressed.png); +} + +QPushButton#btn_sysManage:pressed,QPushButton#btn_sysManage:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_mng_pressed.png); +} + +QPushButton#btn_sysProcess:pressed,QPushButton#btn_sysProcess:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_process_pressed.png); +} + +QPushButton#btn_sysSetting:pressed,QPushButton#btn_sysSetting:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_set_pressed.png); +} +QPushButton#btn_sysTool:pressed,QPushButton#btn_sysTool:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_tool_pressed.png); +} + +#StatusForm QLabel +{ + font-family:"Microsoft YaHei", sans-serif; + font-weight: 400; + font-size: 14px; + color: #131313; + line-height: 16px; + text-align: center; + font-style: normal; + text-transform: none; +} + +#StatusForm QLabel[state = "1" ] +{ + color: #038300; + font-weight: bold; +} + +#StatusForm QLabel[state = "2" ] +{ + color: #FF0000; + font-weight: bold; +} + +/*滚动条样式设计*/ +QScrollArea +{ + min-height: 100px; + border: none; + background: transparent; +} + +QScrollArea QWidget +{ + border: none; + background-color: transparent; +} + +QLabel#titleLabel +{ + min-height: 22px; + font-family:"Microsoft YaHei", sans-serif; + font-weight: bold; + font-size: 14px; + color: #004882; + line-height: 16px; + text-align: left; + font-style: normal; + text-transform: none; +} + +.ButtonForm QLabel +{ + border: none; + font-family: "Microsoft YaHei", sans-serif; + font-weight: bold; + font-size: 14px; + color: #0B92FF; + line-height: 16px; + text-align: center; + font-style: normal; + text-transform: none; +} + +/*系统设置样式设计*/ +QLabel[type = 'titleComm'] +{ + font-family: "Microsoft YaHei", sans-serif; + font-weight: bold; + font-size: 14px; + color: #0B92FF; + line-height: 16px; + text-align: left; + font-style: normal; + text-transform: none; +} + +QLabel#baseinfo_lbl +{ + color: #004882; + font-size: 14px; + line-height: 16px; +} + +#SystemSetForm QToolButton +{ + background: #0B92FF; + border-radius: 0px 0px 0px 0px; + + font-family: "Microsoft YaHei", sans-serif; + font-weight: bold; + font-size: 12px; + color: #FFFFFF; + line-height: 14px; + text-align: center; + font-style: normal; + text-transform: none; +} + +#SystemSetForm QToolButton:hover , #SystemSetForm QToolButton:pressed +{ + background-color: #53b1fc; +} +QToolButton#btn_Save +{ + height: 40px; + min-width: 70px; + padding-top: 37px; + + background-color: transparent; + image: url(../../resource/zh/workBench/rightShift.png); + padding: 3px; +} + +QToolButton#btn_Delete +{ + height: 40px; + min-width: 70px; + padding-top: 37px; + + background-color: transparent; + image: url(../../resource/zh/workBench/leftShift.png); + padding: 3px; +} + +CheckBoxDialog,InputDialog +{ + min-width: 330px; + min-height: 190px; +} +QTabBar::tab +{ + min-width: 100px; +} diff --git a/resource/en/style/dark/workTicket.qss b/resource/en/style/dark/workTicket.qss new file mode 100644 index 00000000..da7e5e88 --- /dev/null +++ b/resource/en/style/dark/workTicket.qss @@ -0,0 +1,22 @@ +QPushButton#m_ticket, +QPushButton#m_delete, +QPushButton#m_reTicket{ + width:80px; + height:30px; +} +QTabWidget::pane{ + background-color: transparent; + border:1px solid #0a5990; +} + +QTableView{ + border: 1px solid #0a5b93; + color: #027bb3; + gridline-color: #024376; + alternate-background-color: transparent; + background:#022644; +} +QTableView::item:selected{ + background-color: #134a72; + color: #02efef; +} \ No newline at end of file diff --git a/resource/en/style/light/AlarmStatisWidget.qss b/resource/en/style/light/AlarmStatisWidget.qss new file mode 100644 index 00000000..1e30787a --- /dev/null +++ b/resource/en/style/light/AlarmStatisWidget.qss @@ -0,0 +1,289 @@ +QWidget +QDialog{ + background:#e6ecf2; + color:#333333; + font-family:Microsoft YaHei; + font-size:14px; +} +QLabel{ + font-family:Microsoft YaHei; + font-size:14px; +} +QFrame#frame{ + border:0px solid #cccfd9; +} +QPushButton{ + border: 1px solid #cccfd9; + border-radius: 5px; + background-color: white; + height:30px; + color:#333333; + width:60px; +} +QPushButton:hover{ + border-color:#cccfd9; + background-color: #f4f8fb; +} +QPushButton:pressed{ + border:2px solid #4B027bec; + background-color: #f4f8fb; +} +QPushButton:disabled{ + color: #999999; + border: 1px solid #999999; + background-color: #f4f8fb; +} +QPushButton:checked{ + color:white; + background-color: #096ae4; +} +QComboBox{ + background:white; + border: 1px solid #cccfd9; + color: #333333; + font-size:14px; + height:30px; +} +QComboBox:drop-down{ + border:none; + padding-right:8px; + background:white; +} +QComboBox:down-arrow{ + border-image:url(../../resource/zh/public/light/icon/arrowBottom.png); + height:8px; + width:10px; +} +QComboBox QAbstractItemView{ + border:1px solid #cccfd9; + outLine: 0px; + selection-color:#096ae4; + background-color:white; + selection-background-color:rgba(9,106,228,38); +} +QComboBox#m_contrasComb{ + min-width:60px; +} +QCheckBox{ + color:#333333; + background:transparent; +} +QCheckBox:disabled{ + color:#999999; +} +QCheckBox::hover { + color:#096ae4; +} +QCheckBox::indicator{ + width: 14px; + height: 14px; +} +QCheckBox::indicator:unchecked { + image:url(../../resource/zh/public/light/icon/unchecked.png); +} +QCheckBox::indicator:checked{ + image:url(../../resource/zh/public/light/icon/checked.png); +} +QDateEdit{ + height:30px; + background:white; + color:#333333; + border:1px solid #cccfd9; +} +QDateEdit:drop-down{ + border:none; + padding-right:8px; + background:white; +} +QDateEdit:down-arrow{ + border-image:url(../../resource/zh/public/light/icon/arrowBottom.png); + height:8px; + width:10px; +} +QDateEdit#m_contrastTime{ + min-width:100px; +} +QHeaderView::section { + height: 28px; + font-size:14px; + color: #333333; + background-color: #f4f8fb; + border:1px solid #cccfd9; + border-top-color:white; + border-right-color:white; +} +QTableView { + color:#666666; + outline:0px; + border: 1px solid #cccfd9; + alternate-background-color: #f4f8fb; + background-color:white; + font-family:Microsoft YaHei; + font-size:14px; +} +QTableView::item { + outline:0px; + height:30px; +} +QTableView::item:selected{ + background-color: rgba(9,106,228,38); + color:#096ae4; +} +QTableView QTableCornerButton::section { + background-color:white; +} +QListView, +QTreeWidget{ + background:white; + color: #666666; + outLine:0px; + border:1px solid #cccfd9; + font-family:Microsoft YaHei; + font-size:14px; +} +QListView::item, +QTreeWidget::item{ + height:30px; +} +QListView::item:hover, +QListView::item:selected, +QTreeWidget::item:hover, +QTreeWidget::item:selected{ + background-color: rgba(9,106,228,38); + color:#096ae4; +} +QScrollBar:vertical { + background:#cecece; + width: 10px; + margin: 0px; +} +QScrollBar:horizontal { + height: 10px; + background:#cecece; +} +QScrollBar::handle:vertical, +QScrollBar::handle:horizontal { + background:#999999; +} +QScrollBar::sub-line:vertical, QScrollBar::add-line:vertical, +QScrollBar::sub-line:horizontal, QScrollBar::add-line:horizontal { + width: 0; + height: 0; +} +QScrollBar::sub-page:vertical, +QScrollBar::add-page:vertical, +QScrollBar::sub-page:horizontal, +QScrollBar::add-page:horizontal{ + background-color:#cecece; +} +QCalendarWidget QWidget{ + border: none; + background-color: white; + color:#333333; +} +QCalendarWidget QWidget#qt_calendar_calendarview{ + border-left: 1px solid #cccfd9; + border-right: 1px solid #cccfd9; + border-bottom: 1px solid #cccfd9; + background-color: white; +} +QCalendarWidget QWidget#qt_calendar_navigationbar { + background-color: white; + border: 1px solid #cccfd9; +} +QCalendarWidget QMenu{ + width: 80px; + background-color: white; + border: 1px solid #cccfd9; + color:#333333; +} +QCalendarWidget QMenu::item{ + background:white; + color:#333333; +} +QCalendarWidget QMenu::item:selected{ + background-color: rgba(9,106,228,38); + color:#096ae4; +} +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: white; +} +QCalendarWidget QSpinBox{ + background-color: white; +} +QCalendarWidget QSpinBox::up-button{ + padding-left: 1px; + image: url(../../resource/zh/public/light/icon/arrowTop.png); +} +QCalendarWidget QSpinBox::down-button{ + padding-left: 1px; + padding-bottom: 1px; + image: url(../../resource/zh/public/light/icon/arrowBottom.png); +} +QCalendarWidget QSpinBox::up-button:pressed{ + padding-top: 1px; +} +QCalendarWidget QToolButton#qt_calendar_prevmonth{ + width: 40px; + qproperty-icon: url(../../resource/zh/public/light/icon/arrowLeft.png); + background-color: transparent; +} +QCalendarWidget QToolButton#qt_calendar_prevmonth:pressed { + padding-right: 3px; +} +QCalendarWidget QToolButton#qt_calendar_nextmonth { + width: 40px; + qproperty-icon: url(../../resource/zh/public/light/icon/arrowRight.png); + background-color: transparent; +} +QCalendarWidget QToolButton#qt_calendar_nextmonth:pressed { + padding-left: 3px; +} +QCalendarWidget QToolButton#qt_calendar_monthbutton { + padding-right: 10px; + background-color: transparent; +} + +QTabWidget QWidget{ + background:white; +} +QTabWidget::pane { + border: 1px solid #cccfd9; + padding: 0px; +} +QTabBar:tab { + width : 113px; + height: 35px; + color: #8f96a9; + background:#e6ecf2; + font-size:16px; + font-weight:Bold; + border:none; +} +QTabBar:tab:selected { + color: #096ae4; + background-color: white; + border-bottom:none; +} +CToolTip{ + background:#303956; +} +QLabel#tipLabel{ + background:#303956; + color:#eaeaea; + padding:6px; +} +ContrastWidget, +CDrillDownChart{ + qproperty-labelColor: #333333; + qproperty-gridLineColor: #cccfd9; + qproperty-labelsColor: #666666; + qproperty-titleColor: #333333; + qproperty-legendColor: #333333; +} +CCurveChartView{ + qproperty-plotTickColor: #666666; + qproperty-plotLinePen: #cccfd9; + qproperty-plotGridColor: #cccfd9; + qproperty-plotLegendColor: #333333; +} diff --git a/resource/en/style/light/BriefReport.qss b/resource/en/style/light/BriefReport.qss new file mode 100644 index 00000000..01dcda6e --- /dev/null +++ b/resource/en/style/light/BriefReport.qss @@ -0,0 +1,41 @@ +QFrame{ + border:none; + background-color: white; +} +QFrame#frame_event{ + border:1px solid #cccfd9; +} + +QFrame#Frame{ + background:white; +} +QComboBox QLineEdit{ + background:white; + border:none; +} + +QComboBox#interval{ + margin-top:6px; + min-width:80px; +} + +QPushButton#ok{ + width:80px; + height:30px; +} +QPushButton#iconButton{ + background:transparent; + border:none; + image:url(../../resource/zh/public/light/icon/calendar.png); +} +QPushButton#DayButton, +QPushButton#WeekButton, +QPushButton#MonthButton, +QPushButton#QuarterButton, +QPushButton#YearButton{ + width:40px; +} +QPushButton#PushButton1, +QPushButton#PushButton2{ + height:70px; +} \ No newline at end of file diff --git a/resource/en/style/light/WebBrowserWidget.qss b/resource/en/style/light/WebBrowserWidget.qss new file mode 100644 index 00000000..4795d269 --- /dev/null +++ b/resource/en/style/light/WebBrowserWidget.qss @@ -0,0 +1,4 @@ +QTabWidget::pane{ + padding:0px; + border:0px; +} \ No newline at end of file diff --git a/resource/en/style/light/alarm.qss b/resource/en/style/light/alarm.qss new file mode 100644 index 00000000..12ed34e3 --- /dev/null +++ b/resource/en/style/light/alarm.qss @@ -0,0 +1,58 @@ +QLineEdit#searchTextEdit +{ + background: #FDFDFD;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color: #096ae4; + selection-color:#FDFDFD; + border: 1px solid #B2B9C3; + border-radius: 0px; + padding: 1 1 1 1px; + height:22px; + +} +QPushButton#ok{ +height:26px; +width:100px; +} + + +QPushButton#searchButton:hover { + background-color: #d1e3f8; +} +QPushButton#searchButton:pressed { + background-color: #d1e3f8; + padding: 2px -1px -2px 1px; +} +QPushButton#searchButton{ +border:0px; +background:white; +image:url(../../resource/zh/public/light/icon/search.png); +} +QPushButton#iconButton{ + border-radius:0px; + border:none; + image:url(../../resource/zh/public/light/icon/calendar.png); +} +CAlarmInhibitDialog QPushButton{ + width:80px; + height:30px; +} +CMyCalendar QLineEdit{ + height:26px; +} +CMyCalendar QPushButton{ + height:26px; + border-radius:0px; +} + +QTreeWidget#area::item { + height:23px; +} +/* +QTableView { + color:#333333; + outline:0px; + border: 1px solid #cccfd9; + alternate-background-color: #f4f8fb; + background-color:white; + qproperty-showGrid:false; +}*/ \ No newline at end of file diff --git a/resource/en/style/light/alarmShield.qss b/resource/en/style/light/alarmShield.qss new file mode 100644 index 00000000..245b48d3 --- /dev/null +++ b/resource/en/style/light/alarmShield.qss @@ -0,0 +1,18 @@ + +QLabel#label_2{ + padding-top:6px; + margin-bottom:6px; +} +CHeaderView{ + qproperty-plotIndicatorCheck:"../../resource/zh/public/light/icon/checked.png"; + qproperty-plotIndicatorUnCheck:"../../resource/zh/public/light/icon/unchecked.png"; +} + +CAddShieldDialog QTreeView{ + background:transparent; +} + +CAlarmShield{ + qproperty-buttonBackground:white; + qproperty-buttonColor:#666666; +} \ No newline at end of file diff --git a/resource/en/style/light/alarm_statistics.qss b/resource/en/style/light/alarm_statistics.qss new file mode 100644 index 00000000..04410952 --- /dev/null +++ b/resource/en/style/light/alarm_statistics.qss @@ -0,0 +1,27 @@ +CAlarmStatistics, +CAlarmCompare{ + qproperty-chartBackground: white; + qproperty-chartLabelColor: #666666; + qproperty-chartLineColor: #cccfd9; +} + +QGraphicsView{ + qproperty-backgroundBrush: #FDFDFD; +} + +QLabel#value, +QLabel#value2{ + background:#303956; + color:#eaeaea; + padding:8px; +} + +QFrame#frame_alarm, +QFrame#frame_bar{ + background:white; + border:none; +} +QLabel#label_name{ + background:white; + color:#096ae4; +} diff --git a/resource/en/style/light/alarmmng.qss b/resource/en/style/light/alarmmng.qss new file mode 100644 index 00000000..21406350 --- /dev/null +++ b/resource/en/style/light/alarmmng.qss @@ -0,0 +1,85 @@ +QWidget#widget_4{ + min-height:80px; +} + +QFrame#frame_4{ + border:1px solid #cccfd9; +} + +QFrame#frame_head{ + border-bottom: 1px solid #d8d8d8; +} +QFrame#frame_stackWidget{ + background:white; + border:0px solid #d8d8d8; +} +QStackedWidget#stackedWidget{ + border:1px solid #d8d8d8; + background:white; + border-top:0px solid #d8d8d8; +} + +QLineEdit, +QSpinBox, +QDateTimeEdit, +QDoubleSpinBox{ + color:#333333; + background:white; + border:1px solid #cccfd9; + min-height:28px; +} +QLineEdit::!enabled, +QSpinBox::!enabled, +QDateTimeEdit::!enabled, +QDoubleSpinBox::!enabled{ + color:#999999; + background-color: #f4f8fb; +} +QDateTimeEdit:drop-down, +QSpinBox:drop-down, +QDoubleSpinBox:drop-down{ + border:none; + padding-right:8px; + background:white; +} +QDateTimeEdit:down-arrow, +QSpinBox:down-arrow, +QDoubleSpinBox:down-arrow{ + border-image:url(../../resource/zh/public/light/icon/arrowBottom.png); + height:8px; + width:10px; +} +QDateTimeEdit:up-arrow, +QSpinBox:up-arrow, +QDoubleSpinBox:up-arrow{ + border-image:url(../../resource/zh/public/light/icon/arrowTop.png); + height:8px; + width:10px; +} + +QPushButton#aibt{ + width: 100px; + height: 36px; + background-color:rgb(242,245,250); + color: rgb(2,123,179); + border-radius: 0px; + border:1px solid #d8d8d8; + border-right:0px solid #d8d8d8; +} +QPushButton#dibt{ + width: 100px; + height: 36px; + background-color:rgb(236,239,242); + color: rgb(2,123,179); + border-radius: 0px; + border:1px solid #d8d8d8; +} + +QPushButton#aibt::disabled,QPushButton#dibt::disabled { + background-color:rgb(236,239,242); + border-bottom:1px solid #d8d8d8; +} +QPushButton#aibt::checked,QPushButton#dibt::checked { + background-color:white; + border-bottom:0px solid #d8d8d8; +} \ No newline at end of file diff --git a/resource/en/style/light/asset.qss b/resource/en/style/light/asset.qss new file mode 100644 index 00000000..ef534fc2 --- /dev/null +++ b/resource/en/style/light/asset.qss @@ -0,0 +1,6 @@ +QLabel#title { + color:#333333; + font-size:24px; + margin-bottom:5px; + font-family:Microsoft YaHei; +} \ No newline at end of file diff --git a/resource/en/style/light/breadcrumbNav.qss b/resource/en/style/light/breadcrumbNav.qss new file mode 100644 index 00000000..58331054 --- /dev/null +++ b/resource/en/style/light/breadcrumbNav.qss @@ -0,0 +1,59 @@ +QWidget +{ + font: 10pt "Microsoft YaHei"; + color: #333333; + background:#FDFDFD; + outline:none; +} +QWidget:disabled +{ + color:#666666; + border-color: #cccccc; +} +QToolButton +{ + background:transparent; + border:none; + color:#00B4FF; +} +QToolButton:hover +{ + color:#00f0ff; +} +QToolButton::menu-indicator +{ + background:transparent; + subcontrol-position:right center; +} +QPushButton +{ + image:url(../../resource/zh/public/light/icon/arrowRight.png); + background:transparent; + border:none; + max-width:20px; +} +QMenu +{ + background:#FDFDFD; + border: 1px solid #B2B9C3; +} +QMenu::item{ + height:30px; + color:#333333; + background:#FDFDFD; + border: 1px solid transparent; + padding: 0px 20px 0px 20px; +} +QMenu::item:hover,QMenu::item:selected{ + color:#333333; + background:#d9e8fd; +} +QMenu::item:disabled,QMenu::item:disabled:selected,QMenu::item:disabled:pressed +{ + color: #666666; + background: #FDFDFD; +} +QMenu::item:pressed { + color:#096ae4; + background:#d9e8fd; +} \ No newline at end of file diff --git a/resource/en/style/light/constCurves.qss b/resource/en/style/light/constCurves.qss new file mode 100644 index 00000000..31195095 --- /dev/null +++ b/resource/en/style/light/constCurves.qss @@ -0,0 +1,7 @@ +CCurveChartView{ + qproperty-plotBackgroundColor : white; + + qproperty-plotLinePen: #cccfd9; + qproperty-plotGridColor: #cccfd9; + qproperty-plotLegendColor: #cccfd9; +} \ No newline at end of file diff --git a/resource/en/style/light/curveColor.cfg b/resource/en/style/light/curveColor.cfg new file mode 100644 index 00000000..faf1ad28 --- /dev/null +++ b/resource/en/style/light/curveColor.cfg @@ -0,0 +1,16 @@ +#EF3829 +#EFD752 +#6BA2D6 +#DEAECE +#EF968C +#18A28C +#AF4646 +#63498C +#6B4531 +#D22CEF +#BD6DA5 +#C6D729 +#103852 +#7CB53E +#1355CE +#46C2F7 \ No newline at end of file diff --git a/resource/en/style/light/customDialog2.qss b/resource/en/style/light/customDialog2.qss new file mode 100644 index 00000000..860335ab --- /dev/null +++ b/resource/en/style/light/customDialog2.qss @@ -0,0 +1,28 @@ +* { + font-family: Microsoft YaHei; +} + +QWidget#CustomDialogCentralWidget { + border-image: url(../../resource/zh/public/light/icon/background_img.png) 100 fill; + background-color: #d9e8fd; + border-radius: 4px; + border: 1px solid rgba(37,37,37,1); +} + +#CustomDialogButtonClose { + width: 18px; + height: 18px; + border: none; + border-image: url(../../resource/zh/public/light/icon/btn_close.png) 0 96 0 0 ; +} + +#CustomDialogButtonClose:hover { + border: none; + border-image: url(../../resource/zh/public/light/icon/btn_close.png) 0 64 0 32 ; +} + +#CustomDialogTitle { + /*color: rgba(255, 255, 255, 1);*/ + font-size: 14px; + font-weight: bold; +} diff --git a/resource/en/style/light/debug_tool.qss b/resource/en/style/light/debug_tool.qss new file mode 100644 index 00000000..f6e53ad1 --- /dev/null +++ b/resource/en/style/light/debug_tool.qss @@ -0,0 +1,130 @@ +QWidget#CDebugTool,QWidget#tab{ + background:white; +} + + +QTabBar::tab { + border: 1px solid #E8E8E8; + min-width:80px; + height:25px; + background: #F2F5FA; + color:black; + font-family:Microsoft YaHei; + font-size:14px; +} +QTabBar::tab:selected, QTabBar::tab:hover { + background: white; + color:#3482F4; + border-bottom-color: white; +} + +QGroupBox{ + font-size:14px; + + font-family:Microsoft YaHei; +} +QListView::item{ + height:23px; +} + +QComboBox{ + border:1px solid #CACACA; + font-family:Microsoft YaHei; + +} +QComboBox QAbstractItemView::item{ + height: 23px; +} +QComboBox::drop-down { + width: 20px; + border-width: 0px; +} +QComboBox::down-arrow { + background:white; + image: url(../../resource/en/debug_tool/image/down.png); + border:0px solid; + +} +QPushButton#searchButton{ + border:1px solid #CACACA; + background:#F5F5F5; + image:url(../../resource/en/debug_tool/image/search.png); +} + +QPushButton#searchButton:hover{ + border:1px solid #99d1ff; + background:#cde8ff; +} +QPushButton#pushBtn_delPoint{ + width:100px; + height:23px; + border:1px solid rgba(251,80,80,1); + border-radius:4px; + font-family:Microsoft YaHei; + font-size:14px; +} + +QPushButton{ + width:100px; + height:23px; + border:1px solid #3482F4; + border-radius:4px; + font-family:Microsoft YaHei; + font-size:14px; + color:#3482F4; +} +QPushButton:hover{ + border:1px solid #99d1ff; + background:#cde8ff; +} + +QLineEdit#lineEdit,QLineEdit#lineEdit_content{ + font-family:Microsoft YaHei; + border:1px solid #CACACA; +} +QLabel#location,QLabel#sub,QLabel#devGroup,QLabel#device,QLabel#point,QLabel#label,QLabel#label_2,QLabel#label_3, +QLabel#label_4,QLabel#label_5,QLabel#label_6,QLabel#label_7,QLabel#label_8{ + font-family:Microsoft YaHei; + +} +QLabel#label_netStatus,QLabel#netStatus{ + font-family:Microsoft YaHei; + + font-size:14px; +} +QCheckBox#checkBox_all,QCheckBox#checkBox_analog,QCheckBox#checkBox_digital, +QCheckBox#checkBox_accuml,QCheckBox#checkBox_mix,QCheckBox#checkBox_const,QCheckBox#checkBox_allColmn{ + font-family:Microsoft YaHei; + + font-size:14px; +} + +QCheckBox::indicator:checked { + image: url(../../resource/en/debug_tool/image/check.png); +} +QCheckBox::indicator:!checked { + image: url(../../resource/en/debug_tool/image/uncheck.png); +} +QHeaderView::section { + font-family:Microsoft YaHei; + text-align:center; + height:23px; + +} +QSplitter{ + background:white; +} +QRadioButton::indicator::unchecked { + image: url(../../resource/en/debug_tool/image/uncheck1.png); +} +QRadioButton::indicator::checked { + image: url(../../resource/en/debug_tool/image/check1.png); +} + +QSplitter::handle { + background:transparent; +} + +QSplitter::handle:horizontal { + width: 5px; +} \ No newline at end of file diff --git a/resource/en/style/light/deviceRealData.qss b/resource/en/style/light/deviceRealData.qss new file mode 100644 index 00000000..cd59ca58 --- /dev/null +++ b/resource/en/style/light/deviceRealData.qss @@ -0,0 +1,12 @@ +QFrame#frame{ + background-color: #e6ecf2; + border:1px solid #cccfd9; +} +QFrame#frame_3, +QFrame#frame_4, +QFrame#frame_5{ + border:none; +} +QTableView QTableCornerButton::section { + background-color:white; +} diff --git a/resource/en/style/light/duty_setting.qss b/resource/en/style/light/duty_setting.qss new file mode 100644 index 00000000..3f21bd38 --- /dev/null +++ b/resource/en/style/light/duty_setting.qss @@ -0,0 +1,47 @@ +CDragListWidget#userList{ + border:1px solid #cccfd9; + background:white; +} +QLabel{ + padding:5px; + border:1px solid #cccfd9; + background:white; +} +QLabel#label{ + padding:5px; + border:0px solid #cccfd9; + background:white; +} +QLabel#label_0, +QLabel#label_1, +QLabel#label_2, +QLabel#label_3, +QLabel#label_4, +QLabel#label_5, +QLabel#label_6, +QLabel#label_7{ + border:1px solid #cccfd9; + background:white; +} +QLabel#label_0{ + min-width: 80px; +} + +QPushButton#pushButton_del{ + width: 120px; +} + +QListWidget#dropWidget{ + background:white; + color:#333333; + border:1px solid #cccfd9; +} +QListWidget#dropWidget:hover, +QListWidget#dropWidget:focus{ + background-color: rgba(9,106,228,38); +} +QListWidget#dropWidget::item{ + height:30px; + border-bottom:1px solid #cccfd9; + outline:0px; +} \ No newline at end of file diff --git a/resource/en/style/light/event.qss b/resource/en/style/light/event.qss new file mode 100644 index 00000000..774ff44e --- /dev/null +++ b/resource/en/style/light/event.qss @@ -0,0 +1,84 @@ +QFrame#frame{ + border:1px solid #cccfd9; +} +QFrame#eventHeadFrame{ + border-bottom: 1px solid #d8d8d8; +} +QFrame#eventCentralFrame{ + background:white; + border:1px solid #d8d8d8; + border-top:0px solid #d8d8d8; +} + +QCheckBox#checkLevel::hover, +QCheckBox#checkLocation::hover, +QCheckBox#checkType::hover, +QCheckBox#checkRegion::hover{ + background:transparent; +} + +QPushButton#iconButton{ + border:none; + border-radius:0px; + image:url(../../resource/zh/public/light/icon/calendar.png); +} +QPushButton#realEventButton{ + width: 100px; + height: 28px; + background-color:rgb(242,245,250); + color: rgb(2,123,179); + border-radius: 0px; + border:1px solid #d8d8d8; + border-right:0px solid #d8d8d8; +} +QPushButton#hisEventButton{ + width: 100px; + height: 28px; + background-color:rgb(236,239,242); + color: rgb(2,123,179); + border-radius: 0px; + border:1px solid #d8d8d8; +} +QPushButton#hisEventButton::disabled,QPushButton#realEventButton::disabled { + background-color:rgb(236,239,242); + border-bottom:1px solid #d8d8d8; +} +QPushButton#hisEventButton::checked,QPushButton#realEventButton::checked { + background-color:white; + border-bottom:0px solid #d8d8d8; +} +QPushButton#realSearchButton, +QPushButton#hisSearchButton{ + border:0px; + background:white; + image:url(../../resource/zh/public/light/icon/search.png); +} +QPushButton#realSearchButton:hover, +QPushButton#hisSearchButton:hover { + background-color: #d1e3f8; +} +QPushButton#realSearchButton:pressed, +QPushButton#hisSearchButton:pressed { + background-color: #d1e3f8; + padding: 2px -1px -2px 1px; +} + +QTableView { + color:#333333; + outline:0px; + border: 1px solid #cccfd9; + alternate-background-color: #f4f8fb; + background-color:white; + qproperty-showGrid:false; +} +QLineEdit#realSearchEdit, +QLineEdit#hisSearchEdit +{ + background: #FDFDFD;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color: #096ae4; + selection-color:#FDFDFD; + border: 1px solid #B2B9C3; + border-radius: 0px; + padding: 1 1 1 1px; + height:22px; +} \ No newline at end of file diff --git a/resource/en/style/light/faultRecord.qss b/resource/en/style/light/faultRecord.qss new file mode 100644 index 00000000..dc426cdb --- /dev/null +++ b/resource/en/style/light/faultRecord.qss @@ -0,0 +1,6 @@ +QLabel#title { + color:#333333; + font-size:24px; + margin-bottom:5px; + font-family:Microsoft YaHei; +} diff --git a/resource/en/style/light/fbd_designer.qss b/resource/en/style/light/fbd_designer.qss new file mode 100644 index 00000000..e224bdb1 --- /dev/null +++ b/resource/en/style/light/fbd_designer.qss @@ -0,0 +1,67 @@ +/* === QToolBox ========================================================== */ +QToolBox::tab{ + background-color: #D6DCF2; + border-radius: 4px; + color: #000000; +} + +QToolBox::tab:selected,QToolBox::tab:hover{ + background-color: #0078D7; + color: #FFFFFF; +} + +QToolBoxButton{ + min-width: 199px; + min-height: 32px; +} + +QDockWidget::title{ + background-color: #B6C6D6; + padding: 6px; +} + + +/* === QWidget ========================================================== */ +QWidget#scrollAreaWidgetContents{ + background-color: #FFFFFF; +} + +QWidget#widgetTemplateBack{ + border: 1px solid #A4A9AD; +} + +QWidget#widgetTemplate{ + border: 1px solid #A4A9AD; + background-color: #FFFFFF; +} + + +/* === QTabBar ========================================================== */ +QTabBar::tab{ + background-color: #FFFFFF; + padding: 6px 12px 6px 12px; + border-style: solid; + border-width: 0px 1px 1px 1px; + border-color: #A4A9AD; +} + +QTabBar::tab:hover{ +} + +QTabBar::tab:selected{ + background-color: #0078D7; + color: #FFFFFF; +} + +QTabBar::tab#CenterTabWidget{ + border-width: 1px 1px 0px 1px; + background-color: #CED3D9; + color: #000000; +} + +QTabBar::tab#CenterTabWidget:selected{ + background-color: #FFFFFF; + color: #0078D7; +} + + diff --git a/resource/en/style/light/hmiRoll.qss b/resource/en/style/light/hmiRoll.qss new file mode 100644 index 00000000..2a06e131 --- /dev/null +++ b/resource/en/style/light/hmiRoll.qss @@ -0,0 +1,3 @@ +QLabel#autoTime{ + background-color: transparent; +} \ No newline at end of file diff --git a/resource/en/style/light/ipcPlus.qss b/resource/en/style/light/ipcPlus.qss new file mode 100644 index 00000000..692d5659 --- /dev/null +++ b/resource/en/style/light/ipcPlus.qss @@ -0,0 +1,83 @@ +QPushButton#play, +QPushButton#pause, +QPushButton#cap, +QPushButton#voiceOpen, +QPushButton#voiceClose, +QPushButton#up, +QPushButton#right, +QPushButton#down, +QPushButton#left{ + border:none; + background:transparent; +} +QPushButton#play{ + image:url(../../resource/zh/gui/icon/ipc/icon_play.png); +} + +QPushButton#pause{ + image:url(../../resource/zh/gui/icon/ipc/icon_suspend.png); +} + +QPushButton#cap{ + image:url(../../resource/zh/gui/icon/ipc/icon_camer.png); +} + +QPushButton#voiceOpen{ + image:url(../../resource/zh/gui/icon/ipc/icon_voice.png); +} +QPushButton#voiceClose{ + image:url(../../resource/zh/gui/icon/ipc/icon_Silence.png); +} + +QPushButton#left{ + border-image:url(../../resource/zh/gui/icon/ipc/left.png); +} +QPushButton#left:hover{ + border-image:url(../../resource/zh/gui/icon/ipc/left-hovered.png); +} +QPushButton#left:pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/left-clicked.png); +} + +QPushButton#down{ + border-image:url(../../resource/zh/gui/icon/ipc/down.png); +} +QPushButton#down:hover{ + border-image:url(../../resource/zh/gui/icon/ipc/down-hovered.png); +} +QPushButton#down:pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/down-clicked.png); +} + +QPushButton#up{ + border-image:url(../../resource/zh/gui/icon/ipc/up.png); +} +QPushButton#up:hover{ + border-image:url(../../resource/zh/gui/icon/ipc/up-hovered.png); +} +QPushButton#up:pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/up-clicked.png); +} + +QPushButton#right{ + border-image:url(../../resource/zh/gui/icon/ipc/right.png); +} +QPushButton#right:hover{ + border-image:url(../../resource/zh/gui/icon/ipc/right-hovered.png); +} +QPushButton#right:pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/right-clicked.png); +} + +QWidget#widget,QWidget#widget_2,QWidget#widget_3{ + border:1px solid #cccfd9; +} +QWidget#IpcPlusWidget,QWidget#control_1,QWidget#control_2{ + border:1px solid #cccfd9; + color:#333333; + background:white; +} +QWidget#IpcPlusWidget{ +background-color: #e6ecf2; +color:#333333; +} \ No newline at end of file diff --git a/resource/en/style/light/ipcViewer.qss b/resource/en/style/light/ipcViewer.qss new file mode 100644 index 00000000..848da641 --- /dev/null +++ b/resource/en/style/light/ipcViewer.qss @@ -0,0 +1,161 @@ +QFrame#frame, +QFrame#frame_record_search +{ + max-width: 150px; +} + +QFrame#frame2, +QFrame#frame_record_play +{ + min-width: 695px; +} + +QWidget#ptzWidget +{ + border-image:url(../../resource/zh/gui/icon/ipc/icon_key.png); + min-height: 130px; + min-width: 130px; + max-width: 130px; +} +QWidget#IpcViewerWidget, +QWidget#tabWidget, +QWidget#tab, +QWidget#tab_2{ + border: 0px; +} + +QLabel{ + font-weight:Light; + font-size:14px; + font-family:Microsoft YaHei; +} + +QMessageBox > QLabel{ + color:#333333; + background-color:#e6ecf2; +} +QTabWidget#tabWidget{ + background-color:white; +} +QTabWidget#tabWidget::pane { + border: 1px solid #cccfd9; + background-color:white; +} + +QFrame#frame, +QFrame#frame_2, +QFrame#frame_record_play, +QFrame#frame_record_search{ + border: 1px solid #cccfd9; + background-color:#e6ecf2; +} +QFrame#frame_2, +QFrame#frame_record_play{ + background:white; +} +QFrame > QLabel{ + background-color:#e6ecf2; + color:#333333; +} + +QPushButton#btn_zoomin, +QPushButton#btn_far, +QPushButton#btn_small +{ + /* border-image:url(../../resource/zh/gui/icon/ipc/icon+.png); */ + font-size:20px; + +} + +QPushButton#btn_zoomout, +QPushButton#btn_close, +QPushButton#btn_big +{ + /* border-image:url(../../resource/zh/gui/icon/ipc/icon-.png); */ + font-size:20px; + +} + +QPushButton#btn_vol, +QPushButton#btn_cam, +QPushButton#btn_fullScreen, +QPushButton#btn_play, +QPushButton#btn_play_r, +QPushButton#btn_cam_r, +QPushButton#btn_vol_r, +QPushButton#up, +QPushButton#left, +QPushButton#right, +QPushButton#down +{ + border:none; + border-radius:0px; + background:transparent; +} +QPushButton#btn_play, +QPushButton#btn_play_r{ + border-image:url(../../resource/zh/gui/icon/ipc/icon_play.png); +} +QPushButton#btn_play::checked, +QPushButton#btn_play_r::checked{ + border-image:url(../../resource/zh/gui/icon/ipc/icon_suspend.png); +} +QPushButton#btn_cam, +QPushButton#btn_cam_r{ + border-image:url(../../resource/zh/gui/icon/ipc/icon_camer.png); +} + +QPushButton#btn_vol, +QPushButton#btn_vol_r{ + border-image:url(../../resource/zh/gui/icon/ipc/icon_voice.png); +} +QPushButton#btn_vol::checked, +QPushButton#btn_vol_r::checked{ + border-image:url(../../resource/zh/gui/icon/ipc/icon_Silence.png); +} +QPushButton#up{ + border-image:url(../../resource/zh/gui/icon/ipc/up.png); +} +QPushButton#up::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/up-hovered.png); +} +QPushButton#up::pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/up-clicked.png); +} +QPushButton#left{ + border-image:url(../../resource/zh/gui/icon/ipc/left.png); +} +QPushButton#left::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/left-hovered.png); +} +QPushButton#left::pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/left-clicked.png); +} +QPushButton#right{ + border-image:url(../../resource/zh/gui/icon/ipc/right.png); +} +QPushButton#right::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/right-hovered.png); +} +QPushButton#right::pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/right-clicked.png); +} +QPushButton#down{ + border-image:url(../../resource/zh/gui/icon/ipc/down.png); +} +QPushButton#down::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/down-hovered.png); +} +QPushButton#down::pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/down-clicked.png); +} + +QSlider{ + background:transparent; +} +QSlider::handle:horizontal{ + background:#0a5b93; +} +QSlider::handle:!enabled{ + background:gray; +} \ No newline at end of file diff --git a/resource/en/style/light/linkCtrl.qss b/resource/en/style/light/linkCtrl.qss new file mode 100644 index 00000000..1d3ff015 --- /dev/null +++ b/resource/en/style/light/linkCtrl.qss @@ -0,0 +1,25 @@ +QFrame#line, +QFrame#line_2{ + border:solid 1px #cccfd9; +} +QFrame#frame, +QFrame#frame_2, +QFrame#frame_3, +QFrame#frame_4{ + border:1px solid #cccfd9; +} +QFrame#frame_5{ + border:none; +} + +QDialog QPushButton{ + margin-right:6px; +} + +QPushButton#allLinkCtrlButton, +QPushButton#waitForExceLinkCtrlButton{ + border-radius:0px; +} +QPushButton#allLinkCtrlButton{ + margin-left:10px; +} \ No newline at end of file diff --git a/resource/en/style/light/media.qss b/resource/en/style/light/media.qss new file mode 100644 index 00000000..9379ae17 --- /dev/null +++ b/resource/en/style/light/media.qss @@ -0,0 +1,34 @@ +QPushButton{ + height:20px; + width:40px; + color:#027bb3; + border-radius:2px; + border:1px solid #0669af; +} + +QPushButton#play,QPushButton#pause, +QToolButton#m_cap,QPushButton#m_voiceOpen,QPushButton#m_voiceClose{ + border:0px; +} + +QPushButton#play{ + image:url(../../resource/zh/public/light/icon/play.png); +} + +QPushButton#pause{ + image:url(../../resource/zh/public/light/icon/pause.png); +} + +QToolButton#m_cap{ + image:url(../../resource/zh/public/light/icon/cut.png); +} + +QPushButton#m_voiceOpen{ + image:url(../../resource/zh/public/light/icon/voiceOpen.png); +} +QPushButton#m_voiceClose{ + image:url(../../resource/zh/public/light/icon/voiceClose.png); +} + + + diff --git a/resource/en/style/light/modelStudio.qss b/resource/en/style/light/modelStudio.qss new file mode 100644 index 00000000..583deb29 --- /dev/null +++ b/resource/en/style/light/modelStudio.qss @@ -0,0 +1,311 @@ +QMainWindow{ + background: #E6ECF2; + border-style: outset; + border-radius: 5px; +} + +QToolBar#mainToolBar{ + background: #e9edf1; + spacing: 3px; /* spacing between items in the tool bar */ + } + + QStatusBar { + background: #d7dbdf; + } + + QMenuBar{ + background-color: #FFFFFF; + } + + QMenu { + background-color: white; /* 设置整个菜单区域的背景色*/ + border: 1px solid #E6ECF2;/*整个菜单区域的边框粗细、样式、颜色*/ + } + + QMenu::item { + background-color: transparent; + padding:4px 20px;/*设置菜单项文字上下和左右的内边距,效果就是菜单中的条目左右上下有了间隔*/ + } + + QMenu::item:selected { /* when user selects item using mouse or keyboard */ + background-color: #2dabf9;/*这一句是设置菜单项鼠标经过选中的样式*/ + } + + QSplitterHandle{ + background-color:#E6ECF2; + } + +QTabBar::tab {/*切换按钮设置*/ + background: #E6ECF2; + border: 1px solid #acb1b4; + padding: 4px; +} + +QTabBar::tab:hover { + color:#2080F7;/*选中高亮*/ +} + +QTabBar::tab:selected { + background: white; +} + +QTabWidget{ + background: #eff3f5; +} + +QHeaderView +{ + background:#E6ECF2; +} + +QHeaderView#tableHorizHeader::section +{ + border:0px; + min-height:25px; + border-bottom:1px solid #DCDCDC; + border-right:1px solid #DCDCDC; + background:#B6C6D6; +} + +QHeaderView#tableVertiHeader::section +{ + background:white; + min-width:25px; + border:0px; + border-right:1px solid #DCDCDC; +} + +QTreeView{ + alternate-background-color: #E6ECF2; + selection-background-color: #2dabf9; +} + +QTableView{ + alternate-background-color: #E6ECF2; + selection-background-color: #2dabf9; +} + +QTableView QTableCornerButton::section{ + border:0px; + background:white; + border-right:1px solid #DCDCDC; +} + +QTableView > QHeaderView::section +{ + border:0px; + min-height:25px; + border-bottom:1px solid #DCDCDC; + border-right:1px solid #DCDCDC; + background:#B6C6D6; +} + +QTreeView > QHeaderView::section +{ + background:#B6C6D6; + border:0px; + min-height:25px; +} + +QTreeView > QHeaderView::section:first +{ + background:#B6C6D6; + border:0px; + border-right:1px solid white; + min-height:25px; +} + +QTreeView > QHeaderView::section:middle +{ + background:#B6C6D6; + border:0px; + border-right:1px solid white; + min-height:25px; +} + +QTreeView > QHeaderView::section:last +{ + background:#B6C6D6; + border:0px; + border-left:1px solid white; + min-height:25px; +} + +QDialog{ + background-color:#E6ECF2; +} + +QPushButton{ + border: 1px solid #b1bac7; + border-radius: 4px; + background-color: #f5f8fa; + min-width:50px; + min-height:20px; +} +QPushButton:hover{ + border-color:#2dabf9; + background-color: #e5f2fd; +} +QPushButton:pressed{ + border:2px solid #2dabf9; + background-color: #f4f8fb; +} + +QComboBox{ + border:1px solid #b1bac7; + /*background:white;*/ + min-width:60px; + font-family:Microsoft YaHei; +} + +QComboBox::drop-down { + border-width: 0px; + width:20; +} +QComboBox::down-arrow { + background:white; + image:url(:/icons/icons/down.png); + border:0px solid; +} + +QLineEdit{ + border: 1px solid #b1bac7; + background-color: white; + max-height:25px; +} + +QStatusBar::item{ + border: 0px; + background: none; +} + +/* 垂直滚动条 */ +QScrollBar:vertical { + border: 0px solid; + background: #E6ECF2; + width: 9px; + margin: 9px 0 9px 0; +} +QScrollBar::handle:vertical { + background: #ADBDCD; + min-height: 20px; +} +QScrollBar::handle:vertical:hover +{ + background:#759EC8; /* 鼠标放到滚动条上的时候,颜色变深 */ +} +QScrollBar::add-line:vertical { + border: 0px solid; + background: #E6ECF2; + border-image:url(:/icons/icons/arrowBottom.png); + height: 9px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical { + border: 0px solid; + background: #E6ECF2; + border-image:url(:/icons/icons/arrowTop.png); + height: 9px; + subcontrol-position: top; + subcontrol-origin: margin; +} +QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical { + border: 0px solid grey; + width: 0px; + height: 0px; +} + +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { + background: none; +} +/* 水平滚动条 */ +QScrollBar:horizontal { + border: 0px solid grey; + background: #E6ECF2; + height: 9px; + margin: 0px 9px 0 9px; +} +QScrollBar::handle:horizontal { + background: #ADBDCD; + min-width: 20px; +} +QScrollBar::handle:horizontal:hover +{ + background:#759EC8; /* 鼠标放到滚动条上的时候,颜色变深 */ +} + +QScrollBar::add-line:horizontal { + border: 0px solid; + background: #E6ECF2; + width: 9px; + border-image:url(:/icons/icons/arrowRight.png); + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal { + border: 0px solid; + background: #E6ECF2; + width: 9px; + border-image:url(:/icons/icons/arrowLeft.png); + subcontrol-position: left; + subcontrol-origin: margin; +} +QScrollBar::left-arrow:horizontal, QScrollBar::right-arrow:horizontal { + border: 0px solid; + width: 0px; + height: 0px; +} + +QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { + background: none; +} + +QPushButton#TablePropertyBtnHide{ + border: 0px solid ; + background-color: #ADBDCD; + border-image:url(:/icons/icons/hideRight.png); + min-width:4px; + max-width:6px; + min-height:60px; +} + +QPushButton#TablePropertyBtnHide:checked{ + border: 0px solid ; + background-color: #ADBDCD; + border-image:url(:/icons/icons/hideLeft.png); + min-width:4px; + max-width:6px; + min-height:60px; +} + +QPushButton#TablePropertyBtnHide:hover{ + background-color: #759EC8; +} + +QLineEdit#kbdSearchWidget{ + border: 1px solid #b1bac7; + border-radius: 6px; + background-color: white; + max-height:20px; +} + +QListView::item{ + min-height:23px; +} + +QLabel#SignatureLable{ + background: white; + border:1px; + max-width:490px; + min-height:300px; + font-size:36px; + font-style:italic; + font-weight:Bold; +} + +QSpinBox { + min-height: 25px; +} diff --git a/resource/en/style/light/planCurvesConfigure.qss b/resource/en/style/light/planCurvesConfigure.qss new file mode 100644 index 00000000..34376d1a --- /dev/null +++ b/resource/en/style/light/planCurvesConfigure.qss @@ -0,0 +1,14 @@ +CurveChartView{ + qproperty-plotBackgroundColor : transparent; + qproperty-plotTickColor : #333333; + qproperty-plotCurveColor : #096ae4; + qproperty-plotLinePen: #cccfd9; + qproperty-plotTickTitleColor: #333333; + qproperty-plotAxisXText: "h"; +} +QPushButton { + width:110px; +} +QDialog QPushButton{ + width:50px; +} \ No newline at end of file diff --git a/resource/en/style/light/public.qss b/resource/en/style/light/public.qss new file mode 100644 index 00000000..03052a80 --- /dev/null +++ b/resource/en/style/light/public.qss @@ -0,0 +1,1364 @@ +/*浅色*/ +QWidget +{ + font: 10pt "Microsoft YaHei"; + color: #333333; + background:#FDFDFD; + outline:none; +} + +QWidget:disabled +{ + color:#666666; + border-color: #cccccc; +} + +QFrame{ + color: #333333; + background-color: #FDFDFD;/*不能设置为transparent*/ + +} + +QMainWindow +{ + background-color: #FFFFFF; +} + +QMainWindow::separator{ + border: 1px solid #B2B9C3; + border-style: outset; + width: 4px; + height: 4px; +} +QMainWindow::separator:hover{ + background: #d9e8fd; +} +QSplitter::handle{ + border: 0px solid #B2B9C3; + width: 4px; + height: 4px; +} +QSplitter::handle:hover{/*splitter->handle(1)->setAttribute(Qt::WA_Hover, true);才生效*/ + border-color: #096ae4; + background-color: #d9e8fd; +} +QSplitter::handle:pressed{ + border-color: #096ae4; + background-color: #d9e8fd; +} +QSizeGrip{ + background-color: none; +} + +/* =============================================== */ +/* Label */ +/* =============================================== */ +QLabel { + background: transparent; + border: 0px solid transparent; + padding: 1px; +} + + +/* A QLabel is a QFrame ... */ +/* A QToolTip is a QLabel ... */ +QToolTip { + border: 1px solid #B2B9C3; + border-radius: 2px; + opacity:210; +} + + + +/* =============================================== */ +/* QMenu */ +/* =============================================== */ +QMenu +{ + background:#FDFDFD; + border: 1px solid #B2B9C3; + padding: 10px 0px 10px 0px; +} + +QMenu::item{ + min-width: 80px; + height:30px; + color:#333333; + background:#FDFDFD; + border: 1px solid transparent; + padding: 0px 20px 0px 20px; +} +QMenu::item:hover{ + color:#333333; + background:#d9e8fd; +} + +QMenu::item:disabled,QMenu::item:disabled:selected,QMenu::item:disabled:pressed{ + + color: #666666; + background: #FDFDFD; +} + +QMenu::item#editBatch{ + min-width: 150px; +} + +QMenu::item:selected{ + color:#333333; + background:#d9e8fd; +} + +QMenu::item:pressed { + color:#096ae4; + background:#d9e8fd; +} + +QMenu#contextMenu{ + min-width:240px; +} + + +/* =============================================== */ +/* TextBox */ +/* =============================================== */ +QLineEdit { + background: #FDFDFD;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color: #096ae4; + selection-color:#FDFDFD; + border: 1px solid #B2B9C3; + border-radius: 2px; + padding: 0 0 0 0px; + height:28px; +} + +QLineEdit:hover{ + border-color: #096ae4; +} +QLineEdit:focus{ + border-color: #096ae4; +} +/*QLineEdit[readOnly="true"] { color: gray }*/ +QLineEdit[echoMode="2"]{ + lineedit-password-character: 9679;/*字符的ascii码35 88等 */ +} + +QLineEdit:read-only { + color: #666666; +} + +QLineEdit:disabled{ + color:#666666; +} + +QTextEdit{ + selection-background-color:#096ae4; + selection-color:#FDFDFD; + border: 1px solid #B2B9C3; + +} +QTextEdit:hover{ + border-color: #096ae4; +} +QTextEdit:focus{ + border-color: #096ae4; +} +/* =============================================== */ +/* Button */ +/* =============================================== */ +QPushButton { + border: 1px solid #B2B9C3; + border-radius: 2px; + /*background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #EEEEEF, stop: 0.05 #DADADF,stop: 0.5 #DADADF, + stop: 0.9 #EEEEEF, stop: 1 #EEEEEF);*/ + width: 78px; + height: 28px; +} + +QPushButton:hover{ + background-color: #d9e8fd; + border-color: #096ae4; +} + +QPushButton:pressed, +QPushButton:checked +{ + color:#FDFDFD; + background-color: #096ae4; +} + +QPushButton:focus,QPushButton:default { + + border-color: #096ae4; /* make the default button prominent */ +} + +QToolButton,QToolButton:unchecked { /* ToolBar里的按钮和带下拉菜单的按钮 */ + border-width: 1px; + border-radius: 3px; + background-color: transparent; + width: 80px; + height: 28px; +} +QToolButton:checked{ + border-width: 1px; + background-color: #096ae4; + border-color: #B2B9C3; + color:#FDFDFD; +} +QToolButton:hover{ + border-width: 1px; + background-color: #d9e8fd; + border-color: #096ae4; +} + +QToolButton:pressed,QToolButton:checked:hover{ + background-color: #096ae4; + color:#FDFDFD; +} +QToolButton:checked:pressed{ + border-width: 1px; + background-color: #096ae4; + border-color: #B2B9C3; +} + + +/* only for MenuButtonPopup */ +QToolButton[popupMode="1"]{ + padding-left: 1px; + padding-right: 15px; /* make way for the popup button */ + border: 1px solid #B2B9C3; + min-height: 15px; + /*background: qlineargradient(x1:0, y1:0 ,x2:0, y2:1 + stop: 0 #EEEEEF, stop: 0.05 #DADADF, stop: 0.5 #DADADF + stop: 0.95 #EEEEEF stop: 1#EEEEEF)*/ +} +QToolButton[popupMode="1"]:hover{ + border-width: 1px; + background-color: #d9e8fd; + border-color: #096ae4; +} + +QToolButton::menu-button { + border: 1px solid #B2B9C3; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + width: 16px; +} + +QToolButton::menu-button:hover { + border: 1px solid #096ae4; +} + +QToolButton::menu-button:pressed { + border: 1px solid #B2B9C3; +} + +QToolButton QMenu +{ + selection-background-color: #096ae4; + selection-color:#FDFDFD; + background: #FDFDFD; + border: 1px solid #B2B9C3; + padding: 10px 0px 10px 0px; +} + +QToolButton QMenu::item +{ + height:30px; + background: #FDFDFD; + border: 1px solid transparent; + padding: 0px 20px 0px 20px; +} + +/* =============================================== */ +/* QRadioButton */ +/* =============================================== */ +QRadioButton { + height: 28px; +} + +QRadioButton:hover{ + color:#096ae4; +} + + +QRadioButton::indicator{ + width: 14px; + height: 14px; +} + +QRadioButton::indicator::unchecked{ + border-image:url(../../resource/zh/public/light/icon/rkb-normal.png); +} + +QRadioButton::indicator:unchecked:hover { + border-image:url(../../resource/zh/public/light/icon/rkb-hover.png); +} + +QRadioButton::indicator:unchecked:pressed { + border-image:url(../../resource/zh/public/light/icon/rkb-hover.png); +} + +QRadioButton::indicator:unchecked:disabled { + border-image:url(../../resource/zh/public/light/icon/rkb-disable.png); +} + +QRadioButton::indicator::checked{ + border-image:url(../../resource/zh/public/light/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:hover { + border-image:url(../../resource/zh/public/light/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:pressed { + border-image:url(../../resource/zh/public/light/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:disabled { + border-image:url(../../resource/zh/public/light/icon/rkb-select-disable.png); +} + +/* =============================================== */ +/* QCheckBox */ +/* =============================================== */ +QCheckBox{ + color:#333333; +} + +QCheckBox::hover { + color:#096ae4; +} + +QCheckBox::indicator{ + width: 14px; + height: 14px; +} + + +QCheckBox::indicator::unchecked{ + border-image:url(../../resource/zh/public/light/icon/ckb-normal.png); +} + +QCheckBox::indicator:unchecked:hover { + border-image:url(../../resource/zh/public/light/icon/ckb-uncheck-hover.png); +} + +QCheckBox::indicator:unchecked:pressed { + border-image:url(../../resource/zh/public/light/icon/ckb-uncheck-hover.png); +} + +QCheckBox::indicator:unchecked:disabled { + border-image:url(../../resource/zh/public/light/icon/ckb-disable.png); +} + +QCheckBox::indicator::checked{ + border-image:url(../../resource/zh/public/light/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:hover { + border-image:url(../../resource/zh/public/light/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:pressed { + border-image:url(../../resource/zh/public/light/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:disabled { + border-image:url(../../resource/zh/public/light/icon/ckb-select-disable.png); +} + +QCheckBox::indicator:indeterminate { + border-image:url(../../resource/zh/public/light/icon/ckb-ptck.png); +} + +QCheckBox::indicator:indeterminate:hover { + border-image:url(../../resource/zh/public/light/icon/ckb-ptck-hover.png); +} + +QCheckBox::indicator:indeterminate:pressed { + border-image:url(../../resource/zh/public/light/icon/ckb-ptck-hover.png); +} + +QCheckBox::indicator:indeterminate:disabled { + border-image:url(../../resource/zh/public/light/icon/ckb-ptck-disable.png); +} + +/* =============================================== */ +/* Slider ProgressBar */ +/* =============================================== */ +QProgressBar { + border: 1px solid #B2B9C3; + border-radius: 4px; + text-align: center; +} + +QProgressBar::chunk { + background-color: #b3d7f9; + width: 4px; + margin: 1px; +} + +QSlider{ + border: 1px solid transparent; +} + +QSlider::disabled{ + border: 1px solid transparent; +} + +QSlider::groove{ + border: 1px solid #B2B9C3; + background: #FDFDFD; +} +QSlider::handle {/*设置中间的那个滑动的键*/ + border: 1px solid #B2B9C3; + background: #096ae4; +} +QSlider::groove:horizontal { + height: 3px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */ + left:5px; right: 5px; +} +QSlider::groove:vertical{ + width: 3px; + top: 5px; bottom: 5px; +} +QSlider::handle:horizontal{ + width: 6px; + margin: -7px; /* height */ +} +QSlider::handle:vertical{ + height: 6px; + margin: -7px; /* height */ +} +QSlider::add-page{/*还没有滑上去的地方*/ + border: 1px solid #B2B9C3; + background:#eceff2; +} +QSlider::sub-page{/*已经划过的从地方*/ + background: #096ae4; +} + +/* =============================================== */ +/* ScrollBar */ +/* =============================================== */ +QScrollBar{ + background-color: #FDFDFD; + border: 1px solid #DADADF; + border-radius: 0px; + padding: 1px; + margin:0px; + height: 15px; + width: 15px; +} + +QScrollBar::handle{ + border-color:#B2B9C3; + border-radius: 8px; + background: #B2B9C3; + min-width: 10px; + min-height: 10px; +} +QScrollBar::handle:hover { + background: #096ae4; +} +QScrollBar::add-line, QScrollBar::sub-line, +QScrollBar::add-page, QScrollBar::sub-page { + width: 0px; + background: transparent; +} +QScrollArea{ + border: none; +} +/*QScrollArea QAbstractSlider{ + border-radius: 0px; +}*/ + +/* =============================================== */ +/* GroupBox */ +/* =============================================== */ +QGroupBox { + background-color: #FDFDFD; + border: 1px solid #B2B9C3; + padding:6px; + margin: 12px 0px 0px 0px; +} +QGroupBox::title { + left: 6px; + top:-10px; + background-color: #FDFDFD; +} +QGroupBox::indicator::unchecked{ + border-image:url(../../resource/zh/public/light/icon/ckb-normal.png); +} +QGroupBox::indicator::checked{ + border-image:url(../../resource/zh/public/light/icon/ckb-select-hover.png); +} +QGroupBox::indicator:indeterminate { + border-image:url(../../resource/zh/public/light/icon/ckb-ptck.png); +} +/* =============================================== */ +/* ToolBox */ +/* =============================================== */ +QToolBox{ + border: 1px solid #B2B9C3; +} +QToolBox::tab { + background: #eceff2; + border: 1px solid #B2B9C3; +} +QToolBox::tab:hover { + background-color: #d9e8fd; + border-color: #096ae4; +} +QToolBox::tab:pressed { + background-color: #096ae4; + color:#FDFDFD; + border-color: transparent; +} +QToolBox::tab:selected { + font-weight: bold; + color:#096ae4; + background-color: #d9e8fd; + border: 1px solid #096ae4; +} + +/* =============================================== */ +/* QTabBar */ +/* =============================================== */ +QTabWidget{ + /*margin-top:10px;*/ +} +QTabWidget::pane{ + border: 1px solid #B2B9C3; +} +QTabWidget::tab-bar { + left: 0px; +} +QTabBar::tab { + font-weight:bold; + color:#333333; + min-height:30px; + padding:0 10 0 10px; + background: #FDFDFD; + border: 1px solid #B2B9C3; + +} +QTabBar::tab:hover { + background: #d9e8fd; + border-color: transparent; +} +QTabBar::tab:selected { + background: #d9e8fd; + color:#096ae4; + border-color: #096ae4; +} +QTabBar::tab:pressed { + background: #096ae4; + border-color: #096ae4; + color:#FDFDFD; +} +QTabBar::tab:focus { + border-color: #096ae4; +} +QTabBar::tab:top{ + height:30px; + margin-left:1px; + border-top:0px; + border-left:0px; + border-right:0px; + border-bottom:2px solid transparent; +} + +QTabBar::tab:top:selected{ + border-top:0px; + border-left:0px; + border-right:0px; + border-bottom:2px solid #096ae4; +} + +QTabBar::tab:bottom{ + width:80px; + height:30px; + border-top:2px solid transparent; + border-left:0px; + border-right:0px; + border-bottom:0px; + +} + +QTabBar::tab:bottom:selected{ + border-top:2px solid #096ae4; + border-left:0px; + border-right:0px; + border-bottom:0px; +} + +QTabBar::tab:right{ + height:80px; + border-top:0px; + border-bottom:0px; + border-right:0px; + border-left:2px solid transparent; + +} + +QTabBar::tab:right:selected{ + height:80px; + border-top:0px; + border-bottom:0px; + border-right:0px; + border-left:2px solid #096ae4; + +} +QTabBar::tab:left{ + height:80px; + border-top:0px; + border-bottom:0px; + border-left:0px; + border-right:2px solid transparent; + +} + +QTabBar::tab:left:selected{ + height:80px; + border-top:0px; + border-bottom:0px; + border-left:0px; + border-right:2px solid #096ae4; +} + + +QTabWidget::pane +{ + border:1px solid #B2B9C3; + padding:6px; +} + + +/* =============================================== */ +/* QHeaderView for list table */ +/* =============================================== */ +QHeaderView { + background-color: #eceff2; + border: none; + margin: -1px; + padding: 0px; + height:30px; +} +QHeaderView::section, QTableCornerButton::section {/*设置表头属性*//*左上角*/ + background-color: #eceff2; + padding: 0 3px; + height: 30px; + border-top: 0px solid #B2B9C3; + border-left: 0px solid #B2B9C3; + border-right: 1px solid #B2B9C3; + border-bottom: 1px solid #B2B9C3; + border-radius: 0px; +} +QHeaderView::section:hover, QTableCornerButton::section:hover{ + /*background-color: #d9e8fd;*/ +} +QHeaderView::section:pressed{ + background-color: #096ae4; + color:#FDFDFD; +} +QHeaderView::section:checked { + background-color: #eceff2; + color:#333333; +} + +QHeaderView::down-arrow +{ + subcontrol-position:center right; + padding-right:10px; + image:url(../../resource/zh/public/light/icon/box-down-normal.png); +} + +QHeaderView::up-arrow +{ + subcontrol-position:center right; + padding-right:10px; + image:url(../../resource/zh/public/light/icon/box-up-normal.png); +} + +/* =============================================== */ +/* QAbstractItemView */ +/* =============================================== */ +QAbstractItemView +{ + show-decoration-selected:1; + selection-background-color:#d9e8fd; /*鼠标选中时背景色*/ + selection-color:#FDFDFD; /*鼠标选中时前景色:文字颜色*/ + /*设置交替颜色,需要在函数属性中设置:tableWidget->setAlternatingRowColors(true)*/ + alternate-background-color: #f4f8fb; + background: #FDFDFD; + color:#333333; + border: 1px solid #B2B9C3; +} + +QAbstractItemView::item +{ + border-radius:0px; + min-height:30px; + border: 0px; + padding: 0px; +} + +QAbstractItemView::item:hover{ + background: #d9e8fd; +} + +QAbstractItemView::item:pressed{ + color: #d9e8fd; + background:#d9e8fd; +} + +QAbstractItemView::item:selected:focus { + background: #d9e8fd; + color: #096ae4; +} + +QAbstractItemView::item:selected:!focus { + background: #d9e8fd; + color: #096ae4; +} + +QAbstractItemView::item:selected:active { + background: #d9e8fd; + color: #096ae4; +} + +QAbstractItemView QCheckBox::hover{ + + background: #d9e8fd; +} + +QAbstractItemView QCheckBox::pressed{ + color: #096ae4; + background:#d9e8fd; +} + +QAbstractItemView QCheckBox::focus{ + color:#096ae4; + background: #d9e8fd; +} + +QAbstractItemView QCheckBox::selected:focus { + background: #d9e8fd; + color: #096ae4; +} + +QAbstractItemView QCheckBox::selected:!focus { + background: #d9e8fd; + color: #096ae4; +} + +QAbstractItemView QCheckBox::selected:active { + background: #d9e8fd; + color: #096ae4; +} + +QAbstractItemView::indicator::unchecked{ + border-image:url(../../resource/zh/public/light/icon/ckb-normal.png); +} + + +QAbstractItemView::indicator::checked{ + border-image:url(../../resource/zh/public/light/icon/ckb-select-hover.png); +} + +QAbstractItemView::indicator:indeterminate { + border-image:url(../../resource/zh/public/light/icon/ckb-ptck.png); +} + +QAbstractItemView::branch{ + background-color: #FDFDFD; +} + +QAbstractItemView::branch:alternate +{ + alternate-background-color: #f4f8fb; +} + + +QAbstractItemView::branch:hover{ + background: #d9e8fd; +} + +QAbstractItemView::branch:pressed{ + color: #d9e8fd; + background:#d9e8fd; +} + +QAbstractItemView::branch:focus{ + color:#096ae4; + background: #d9e8fd; +} + +QAbstractItemView::branch:selected:focus { + background: #d9e8fd; + color: #096ae4; +} + +QAbstractItemView::branch:selected:!focus{ + background: #d9e8fd; + color: #096ae4; +} + +QAbstractItemView::branch:selected:active { + background: #d9e8fd; + color: #096ae4; +} + + +/* =============================================== */ +/* QListView QListWidget */ +/* =============================================== */ +QListWidget, QListView +{ + gridline-color: #B2B9C3; /*表格中的网格线条颜色*/ + border:1px solid #B2B9C3; /*边框线的宽度、颜色*/ + /*border:none;*/ /*去除边界线*/ + /*border-radius:5px;*/ + /*padding:10px 10px;*/ /*表格与边框的间距*/ +} + +QListView::item, QListWidget::item{ + background: transparent; + outline-style: none; + border: none; + padding: 0px 10px 0px 10px; +} + +/* =============================================== */ +/* QTableWidget */ +/* =============================================== */ +QTableWidget, QTableView +{ + gridline-color: #EEEEEF; /*表格中的网格线条颜色*/ + border:1px solid #B2B9C3; /*边框线的宽度、颜色*/ + /*border:none;*/ /*去除边界线*/ + /*border-radius:5px;*/ + /*padding:10px 10px;*/ /*表格与边框的间距*/ +} +QTableView::item, QTabWidget::item{ + background: transparent; + outline-style: none; + border: none; +} + +QTableView QLineEdit +{ + /*background: #FDFDFD;*/ + border-radius: 0px; + padding: 0px; +} + +QTableWidget QComboBox{ + /*background: #FDFDFD;*/ + border-radius: 0px; + /*margin: 2px;*/ + border: none; + height:28px; +} + +QTableView[changed="true"] { + alternate-background-color: #AED8D8; + background: #88ADD2; +} + +QTableView[changed="false"] { + alternate-background-color: #E6ECF2; + background: white; +} + + +/* =============================================== */ +/* QTreeWidget QTreeView */ +/* =============================================== */ +QTreeWidget, QTreeView +{ + background:#FDFDFD; +} +QTreeWidget::item, QTreeView::item{ + background: transparent; + outline-style: none; + border: none; +} + + +QTreeWidget::branch,QTreeView::branch { + background-color: #FDFDFD; +} + +QTreeWidget::branch:hover,QTreeView::branch:hover{ + background: #d9e8fd; +} + +QTreeWidget::branch:pressed,QTreeView::branch:pressed{ + color: #d9e8fd; + background:#d9e8fd; +} + +QTreeWidget::branch:focus,QTreeView::branch:focus{ + color:#096ae4; + border-color: #d9e8fd; +} + +QTreeWidget::branch:selected:focus,QTreeView::branch:selected:focus { + background: #d9e8fd; + color: #096ae4; +} + +QTreeWidget::branch:selected:!focus,QTreeView::branch:selected:!focus{ + background: #d9e8fd; + color: #096ae4; +} + +QTreeWidget::branch:selected:active,QTreeView::branch:selected:active { + background: #d9e8fd; + color: #096ae4; +} + +QTreeView::branch { +width:9px; +height:9px; + background-repeat: no-repeat; + background-position: center; +} + +QTreeView::branch:closed:has-children { + image:url(../../resource/zh/public/light/icon/arrowRight-normal.png); +} + +QTreeView::branch:closed:has-children:hover { + image:url(../../resource/zh/public/light/icon/arrowRight-normal.png); +} + +QTreeView::branch:open:has-children { + image:url(../../resource/zh/public/light/icon/arrowBottom-normal.png); +} + +QTreeView::branch:open:has-children:hover { + image:url(../../resource/zh/public/light/icon/arrowBottom-normal.png); +} + +/* =============================================== */ +/* QAbstractSpinBox spinbox QDateTimeEdit */ +/* =============================================== */ +QAbstractSpinBox { + background: #FDFDFD;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color:#096ae4; + selection-color:#FDFDFD; + border: 1px solid #B2B9C3; + border-radius: 2px; + padding: 0 10 0 10px; + height:28px; +} + +QAbstractSpinBox:hover { + border-color: #096ae4; + selection-background-color:#096ae4; + selection-color:#FDFDFD; +} + +QAbstractSpinBox:focus { + border-color: #096ae4; + +} + +/*SpinBox向上按钮样式*/ +QAbstractSpinBox::up-button { +margin: 5px 5px 5px 5px; + height:7px; + width:11px; + image:url(../../resource/zh/public/light/icon/box-up-normal.png); + } + +QAbstractSpinBox::up-button:hover { + image:url(../../resource/zh/public/light/icon/box-up-select.png); + + } + +QAbstractSpinBox::up-button:pressed { + image:url(../../resource/zh/public/light/icon/box-up-select.png); + + } + +QAbstractSpinBox::up-button:disabled{ + image:url(../../resource/zh/public/light/icon/box-up-normal.png); + + } + +/*SpinBox向下按钮样式*/ +QAbstractSpinBox::down-button { +margin: 5px 5px 5px 5px; + height:7px; + width:11px; + image:url(../../resource/zh/public/light/icon/box-down-normal.png); + } + +QAbstractSpinBox::down-button:hover{ + image:url(../../resource/zh/public/light/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:pressed{ + image:url(../../resource/zh/public/light/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:disabled{ + image:url(../../resource/zh/public/light/icon/box-down-normal.png); + +} + + /* =============================================== */ +/* QComboBox */ +/* =============================================== */ +QComboBox{ + background: #FDFDFD;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color:#096ae4; + selection-color:#FDFDFD; + border: 1px solid #B2B9C3; + border-radius: 2px; + padding: 0 10 0 10px; + height:28px; +} + +QComboBox:hover +{ + border-color: #096ae4; +} + +QComboBox:focus { + border-color: #096ae4; +} + +QComboBox QAbstractItemView +{ + selection-background-color: #d9e8fd; + selection-color:#096ae4; + alternate-background-color: #f4f8fb; + background: #FDFDFD; + border: 1px solid #B2B9C3; + padding: 10px 0px 10px 0px; +} + +QComboBox QAbstractItemView::item:selected:active { + background: transparent; + color: #096ae4; +} + +QComboBox::drop-down { + border-image:url(../../resource/zh/public/light/icon/box-down-normal.png); + margin-right: 10px; + height:7px; + width:11px; + subcontrol-origin: margin; + subcontrol-position: center right; +} + +QComboBox::drop-down:hover{ + border-image:url(../../resource/zh/public/light/icon/box-down-select.png); +} + +QComboBox::drop-down:open:!hover { + border-image:url(../../resource/zh/public/light/icon/box-down-normal.png); +} + +QComboBox::drop-down:open:hover { + border-image:url(../../resource/zh/public/light/icon/box-down-select.png); +} + +QComboBox::drop-down:disabled { + border-image:url(../../resource/zh/public/light/icon/box-down-normal.png); +} + +/* =============================================== */ +/* QCalendarWidget */ +/* =============================================== */ +QCalendarWidget QWidget{ + border: none; + background-color: #FDFDFD; + color:#333333; +} + +QCalendarWidget QWidget#qt_calendar_calendarview{ + border-left: 1px solid #B2B9C3; + border-right: 1px solid #B2B9C3; + border-bottom: 1px solid #B2B9C3; + background-color: #FDFDFD; +} + +QCalendarWidget QWidget#qt_calendar_navigationbar { + background-color: #eceff2; + border: 1px solid #B2B9C3; +} + + +QCalendarWidget QMenu{ + width: 80px; + background-color: #FDFDFD; + border: 0px solid #cccfd9; + color:#096ae4; +} + + +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: transparent; +} + +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: transparent; +} + + +QCalendarWidget QAbstractSpinBox { + background: #FDFDFD;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color: #096ae4; + border: 1px solid #B2B9C3; + border-radius: 0px; + padding: 0 10 0 10px; + height:30px; +} + +QCalendarWidget QAbstractSpinBox:hover { + border-color: #096ae4; +} + +QCalendarWidget QAbstractSpinBox:focus { + border-color: #096ae4; +} + +QCalendarWidget QToolButton:pressed,QCalendarWidget QToolButton:checked:hover{ + color:#096ae4; +} + + +QCalendarWidget QToolButton#qt_calendar_prevmonth{ + width: 40px; + qproperty-icon: url(../../resource/zh/public/light/icon/arrowLeft.png); + background-color: transparent; +} + +QCalendarWidget QToolButton#qt_calendar_nextmonth { + width: 40px; + qproperty-icon: url(../../resource/zh/public/light/icon/arrowRight.png); + background-color: transparent; +} + +QCalendarWidget QToolButton#qt_calendar_monthbutton { + padding-right: 10px; + background-color: transparent; +} + +QCalendarWidget QAbstractItemView +{ + selection-background-color:#096ae4; /*鼠标选中时背景色*/ + selection-color:#FDFDFD; /*鼠标选中时前景色:文字颜色*/ + /*设置交替颜色,需要在函数属性中设置:tableWidget->setAlternatingRowColors(true)*/ + alternate-background-color: #f4f8fb; + background: #FDFDFD; + border: 1px solid #B2B9C3; +} + + +/* QDateEdit:drop-down{ + border:none; + padding-right:8px; + background:white; +} */ + +QDateEdit::drop-down { + border-image:url(../../resource/zh/public/light/icon/box-down-normal.png); + margin-right: 10px; + height:7px; + width:11px; + subcontrol-origin: margin; + subcontrol-position: center right; +} + +QDateEdit::drop-down:hover{ + border-image:url(../../resource/zh/public/light/icon/box-down-select.png); +} + +QDateEdit::drop-down:open:!hover { + border-image:url(../../resource/zh/public/light/icon/box-down-normal.png); +} + +QDateEdit::drop-down:open:hover { + border-image:url(../../resource/zh/public/light/icon/box-down-select.png); +} + +QDateEdit::drop-down:disabled { + border-image:url(../../resource/zh/public/light/icon/box-down-normal.png); +} + + + +/* =============================================== */ +/* 自定义控件部分- 标题头 */ +/* =============================================== */ +MainMenu QLabel#MainMenu_BG { + background:#E5E5E5; +} + +MainMenu QLabel#MainMenu_ICON { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + background:transparent; + border-image: url(../../resource/zh/public/light/icon/min-logo.png); +} + +MainMenu QLabel#MainMenu_TITLE { + color:#0084D4; + font-weight: bold; +} + +MainMenu QPushButton#MainMenu_MIN_BTN { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/light/icon/btn_min.png) 0 96 0 0 ; +} + +MainMenu QPushButton#MainMenu_MIN_BTN:hover { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_min.png) 0 64 0 32; +} + +MainMenu QPushButton#MainMenu_MIN_BTN:pressed { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_min.png) 0 32 0 64 ; + +} + +MainMenu QPushButton#MainMenu_MIN_BTN:disabled { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/light/icon/btn_min.png) 0 0 0 96 ; + +} + + + +MainMenu QPushButton#MainMenu_MAX_BTN[buttonStatus="max"]{ + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/light/icon/btn_max.png) 0 96 0 0 ; +} + +MainMenu QPushButton#MainMenu_MAX_BTN:hover[buttonStatus="max"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_max.png) 0 64 0 32; +} + +MainMenu QPushButton#MainMenu_MAX_BTN:pressed[buttonStatus="max"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_max.png) 0 32 0 64 ; + +} + +MainMenu QPushButton#MainMenu_MAX_BTN:disabled[buttonStatus="max"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/light/icon/btn_max.png) 0 0 0 96 ; + +} + + + +MainMenu QPushButton#MainMenu_MAX_BTN[buttonStatus="normal"]{ + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/light/icon/btn_normal.png) 0 96 0 0 ; +} + +MainMenu QPushButton#MainMenu_MAX_BTN:hover[buttonStatus="normal"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_normal.png) 0 64 0 32; +} + +MainMenu QPushButton#MainMenu_MAX_BTN:pressed[buttonStatus="normal"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_normal.png) 0 32 0 64 ; + +} + +MainMenu QPushButton#MainMenu_MAX_BTN:disabled[buttonStatus="normal"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/light/icon/btn_normal.png) 0 0 0 96 ; + +} + +MainMenu QPushButton#MainMenu_CLOSE_BTN { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/light/icon/btn_close.png) 0 96 0 0 ; +} + +MainMenu QPushButton#MainMenu_CLOSE_BTN:hover { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_close.png) 0 64 0 32; +} + +MainMenu QPushButton#MainMenu_CLOSE_BTN:pressed { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_close.png) 0 32 0 64 ; + +} + +MainMenu QPushButton#MainMenu_CLOSE_BTN:disabled { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/light/icon/btn_close.png) 0 0 0 96 ; + +} + +QInputDialog +{ + background-color: #FDFDFD; +} \ No newline at end of file diff --git a/resource/en/style/light/relaySetting.qss b/resource/en/style/light/relaySetting.qss new file mode 100644 index 00000000..68a4fcc9 --- /dev/null +++ b/resource/en/style/light/relaySetting.qss @@ -0,0 +1,4 @@ +QFrame#frame, +QFrame#frame_2{ + border:0px solid #cccfd9; +} diff --git a/resource/en/style/light/robot.qss b/resource/en/style/light/robot.qss new file mode 100644 index 00000000..e844e395 --- /dev/null +++ b/resource/en/style/light/robot.qss @@ -0,0 +1,252 @@ +QToolButton{ + border:0px; +} +QFrame#frame{ + background-color: white; +} +QPushButton{ + height:20px; + width:40px; + color:#027bb3; + border-radius:2px; + border:1px solid #0669af; +} + +QDialog{ + background-color: white; +} +QPushButton#exetask{ + border:1px solid #0669af; + color:#027bb3; + border-radius:2px; + height:26px; +} + +QPushButton#exetask:disabled{ +color:white; +background-color:#A9A9A9; +} +QPushButton#exetask:hover{ +color:#02efef; +background-color:#027BEC; +} + +QPushButton#searchButton,QPushButton#play,QPushButton#pause, +QToolButton#m_cap,QPushButton#m_voiceOpen,QPushButton#m_voiceClose{ + border:0px; +} +QPushButton#searchButton{ +background:#0d3756; +image:url(../../resource/zh/gui/icon/robot/search.png); +} + +QPushButton#play{ + image:url(../../resource/zh/gui/icon/robot/play.png); +} + +QPushButton#pause{ + image:url(../../resource/zh/gui/icon/robot/pause.png); +} + +QToolButton#m_cap{ + image:url(../../resource/zh/gui/icon/robot/cut.png); +} + +QPushButton#m_voiceOpen{ + image:url(../../resource/zh/gui/icon/robot/voiceOpen.png); +} +QPushButton#m_voiceClose{ + image:url(../../resource/zh/gui/icon/robot/voiceClose.png); +} + +QLineEdit#keyWordSearch{ + border:1px solid #0669af; + color:#02efef; + background-color: transparent; +} +QHeaderView:section{ + color:#0394d5; + background-color:#0d3756; +} +QHeaderView{ + background-color:#0d3756; + border:0px solid; +} + +QHeaderView::down-arrow { + image: url(../../resource/zh/gui/icon/robot/down_arrow.png); +} + +QHeaderView::up-arrow { + image: url(../../resource/zh/gui/icon/robot/up_arrow.png); +} + +QWidget#ccdVideoWidget,QWidget#ctrlWidget{ + border:1px solid #0669af; +} +QWidget#widget_12{ + background-color:#041c3a; +} +QFrame#frame_free{ + border-image: url(../../resource/zh/gui/icon/robot/robotbottom.png); +} +QFrame#frame_overlook{ + border-image: url(../../resource/zh/gui/icon/robot/robotbottom.png); +} +QFrame#frame_charge{ + border-image: url(../../resource/zh/gui/icon/robot/robotbottom.png); +} +QFrame#frame_overhaul{ + border-image: url(../../resource/zh/gui/icon/robot/robotbottom.png); +} +QWidget#widget_12{ + border:1px solid #0669af; +} +QTableView#ccdVideoView{ + border-top: 0px; + border:1px solid #0669af; +} +QTableView{ + color:#027bb3; + border:none; + gridline-color:#09304c; + alternate-background-color: #09314d; + background-color:#041c3a; +} +QTableView::item:selected { + color:#02efef; + background-color:#104366; +} +QLabel{ + color:#027bb3; +} +QLabel#label_head +{ + font: 18pt "宋体"; +} +QLabel#label_free_font +{ + font: 20pt "宋体"; + color: rgb(0, 170, 255); +} +QLabel#label_overlook_font +{ + font: 20pt "宋体"; + color: rgb(255, 255, 0); +} +QLabel#label_charge_font +{ + font: 20pt "宋体"; + color: rgb(85, 255, 127); +} +QLabel#label_overhaul_font +{ + font: 20pt "宋体"; + color: rgb(255, 127, 0); +} +QComboBox { + border:1px solid #0669af; +} +QComboBox::drop-down{ + width:11px; + height:7px; + border-image: url(../../resource/zh/public/light/icon/box-down-select.png); + margin-right: 10px; + subcontrol-origin: margin; + subcontrol-position: center right; +} + +QComboBox::drop-down:open:hover { + border-image: url(../../resource/zh/public/light/icon/box-up-select.png); +} + +QComboBox:!editable { + color:#027bb3; + background: #0d3756; +} +QComboBox:editable { + color:#027bb3; + background: #0d3756; +} +QComboBox QAbstractItemView::item +{ + color:#027bb3; + background:#0d3756; + height: 30px; +} + +QComboBox QAbstractItemView::item:selected:hover +{ + color:#01a0e3; + background:#104366; +} +QScrollBar:vertical { + background: #104366; + width: 10px; + margin: 0px; +} + +QScrollBar:horizontal { + height: 10px; + background: #104366; +} +QScrollBar::handle:vertical { + background: #104366; + min-height: 30px; +} + +QScrollBar::handle:vertical, +QScrollBar::handle:horizontal { + background: #175e8f; +} + +QScrollBar::sub-line:vertical, QScrollBar::add-line:vertical, +QScrollBar::sub-line:horizontal, QScrollBar::add-line:horizontal { + width: 0; + height: 0; +} + +QScrollBar::sub-page:vertical, QScrollBar::add-page:vertical, +QScrollBar::sub-page:horizontal, QScrollBar::add-page:horizontal { + background: #104366; +} + +QSlider::groove{ +border: 0px; +height: 4px; +background: #017AB2; +} + +/* 顶部拖动设计 */ + +QSlider::handle{ +width: 12px; +margin: -4px 0; +border-radius: 6px; +background-color: #00EAFF; +} + +/* 未滑动的区域 */ + +QSlider::add-page:horizontal +{ +height: 4px; +} + +/* 已划过的设置*/ + +QSlider::sub-page:horizontal +{ +background-color:#00EAFF; +} +QMenu{ +background:#104366; +margin: -1px; +} +QMenu::item{ +color:#01a0e3; +} +QMenu::item:selected{ +background-color: #134a72; +color:#02efef; +} diff --git a/resource/en/style/light/sequence.qss b/resource/en/style/light/sequence.qss new file mode 100644 index 00000000..d797fd56 --- /dev/null +++ b/resource/en/style/light/sequence.qss @@ -0,0 +1,12 @@ +QListView{ + background:white; + color: #333333; + outLine:0px; + border:1px solid #cccfd9; +} +QTreeView QAbstractSpinBox::up-button { + height:3px; +} +QTreeView QAbstractSpinBox::down-button { + height:3px; +} \ No newline at end of file diff --git a/resource/en/style/light/shift.qss b/resource/en/style/light/shift.qss new file mode 100644 index 00000000..3f5502e8 --- /dev/null +++ b/resource/en/style/light/shift.qss @@ -0,0 +1,36 @@ + +QPushButton#iconButton{ + border-radius:0px; + border:none; + image:url(../../resource/zh/public/light/icon/calendar.png); +} + +QComboBox#comboBox{ + width:100px; +} + +CRecordWidget QLabel#label1, +CRecordWidget QLabel#label2, +CRecordWidget QLabel#label3, +CRecordWidget QLabel#label4{ + background:transparent; +} +CRecordWidget QTextEdit{ + color:#333333; + border:1px solid #cccfd9; + background:white; +} +CRecordWidget QTextEdit:!editable:read-only{ + background:red; + color: #999999; +} + +HandoverWidget QPushButton{ + border-radius:0px; +} +HandoverWidget QLabel#label1, +HandoverWidget QLabel#label2, +HandoverWidget QLabel#label3, +HandoverWidget QLabel#label4{ + background:transparent; +} \ No newline at end of file diff --git a/resource/en/style/light/sys_startup.qss b/resource/en/style/light/sys_startup.qss new file mode 100644 index 00000000..3573a9c3 --- /dev/null +++ b/resource/en/style/light/sys_startup.qss @@ -0,0 +1,66 @@ +QFrame#startUpFrame,QFrame#frame_page3 +{ + border:1px solid #e8e8e8; +} + +QFrame#frame_page1,QFrame#appFrame +{ + border:0px solid ; +} +QTabWidget#tabWidget +{ + border:0px solid #e8e8e8; +} + + +QWidget#versionWidget +{ + border:1px solid #e8e8e8; + background-color:white; +} +QToolButton +{ + border :none; + background-color: white; +} +QToolButton::hover +{ + background-color:#72B2FF; +} +QTabBar::tab +{ + height:40px; +} +QTabBar::tab:selected, QTabBar::tab:hover { + color:#0394d5; + background-color:white; +} +QTabBar::tab:!selected{ + color:#027bb3; + background-color:#f2f5fa; +} + +QTreeView,QTableWidget{ + border:1px solid #e8e8e8; +} + +QLabel#label +{ + border-top:none; + border-left:none; + border-right:none; + border-bottom:1px solid #e8e8e8; +} +QPushButton#sys_start_btn,QPushButton#sys_start_btn_false +{ + border:none; + background:#00ca21; + color:white; +} +QPushButton#sys_stop_btn,QPushButton#sys_stop_btn_false +{ + border:1px solid #ff6840; + border-radius: 6px; + background:white; + color:#ff6840; +} diff --git a/resource/en/style/light/trendCurves.qss b/resource/en/style/light/trendCurves.qss new file mode 100644 index 00000000..6db92440 --- /dev/null +++ b/resource/en/style/light/trendCurves.qss @@ -0,0 +1,168 @@ +QFrame#adaptFrame, +QFrame#frame_3{ + border:1px solid #cccfd9; +} +QFrame#titleFrame, +QFrame#pageFrame, +QFrame#toolFrame{ + border:none; +} +QLabel#m_tipLabel{ + background:white; +} +QLabel#adaptLlabel { + color:#333333; +} +QLabel#title { + color:#333333; + font-size:24px; + margin-bottom:5px; + font-family:Microsoft YaHei; +} +CPlotWidget { + qproperty-plotBackgroundColor: white; + qproperty-plotTickColor: #666666; + qproperty-plotGridColor: #cccfd9; + qproperty-plotZeroLineColor: #cccfd9; + qproperty-plotTickPen: #cccfd9; +} +CSWitchButton { + min-width:60px; + max-height:32px; + qproperty-backgroundColor:#A0FFFFFF; + qproperty-checkedColor:#A0FFFFFF; + qproperty-textColor:#333333; + qproperty-radius:10; + qproperty-borderColor:#cccfd9; +} +CToolTip{ + background:white; + border: 1px solid #cccfd9; + border-radius: 0px; +} +QSlider{ + background:transparent; + min-width:5px; + max-width:15px; +} +QSlider::handle{ + width:15px; + height:15px; + background: #096ae4; +} +QSlider::add-page, +QSlider::sub-page{ + background: transparent; +} +QLineEdit#searchTextEdit +{ + background: #FDFDFD;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color: #096ae4; + selection-color:#FDFDFD; + border: 1px solid #B2B9C3; + border-radius: 0px; + padding: 1 1 1 1px; + height:22px; +} +QPushButton#realTime, +QPushButton#sec, +QPushButton#day, +QPushButton#week, +QPushButton#month, +QPushButton#quarter, +QPushButton#year, +QPushButton#custom{ + width:60px; +} +QPushButton#collectCurve, +QPushButton#plotPrint, +QPushButton#plotExport{ + width: 48px; + height:30px; +} +QPushButton#searchButton:hover{ + background-color: #d1e3f8; +} +QPushButton#searchButton:pressed{ + background-color: #d1e3f8; + padding: 2px -1px -2px 1px; +} +QPushButton#searchButton{ + padding:2px 2px 2px 2px; + border:0px; + background:white; + height:21px; + width:21px; + image:url(../../resource/zh/public/light/icon/search.png); +} +QTabWidget::pane { + border: 0px; + padding: 0px; +} +QTabBar:tab { + width : 72px; + height: 28px; + color: #333333; + background:white; + border-bottom: 1px solid #0669af; +} +QTabBar:tab:selected { + color: #096ae4; + background-color: #d1e3f8; + border-bottom-color: #0669af; +} +QTabBar:tab:hover { + color: #096ae4; +} +CTrendEditDialog{ + background-color#e6ecf2; +} +CRetriever QLabel{ + color:#333333; +} +CRetriever QWidget{ + background:white; + color:#333333; +} +CRetriever QRadioButton{ + color: #333333; +} +CRetriever QFrame#frame_2, +CRetriever QFrame#frame_4, +CRetriever QFrame#frame_5, +CRetriever QFrame#frame_6, +CRetriever QFrame#frame_7, +CRetriever QFrame#frame_8, +CRetriever QFrame#frame_9, +CRetriever QFrame#frame_10, +CRetriever QFrame#frame_11, +CRetriever QFrame#frame_12 +{ + border: 1px solid #cccfd9; + background:white; +} +CRetriever QLineEdit{ + color: #333333; + border: 1px solid #cccfd9; +} +CRetriever QPushButton{ + image: url(../../resource/zh/public/light/icon/search.png); +} +QComboBox#interval{ + min-width:80px; +} +QComboBox#comboBox_alarmStatus{ + min-width:120px; +} +QComboBox QLineEdit{ + border:none; +} +QTableView::item#trendView{ + border:1px solid #cccfd9; + border-top-color:transparent; +} +QDateTimeEdit:drop-down{ + image: url(../../resource/zh/public/light/icon/arrowBottom.png); + padding-right: 4px; + padding-top: 10px; +} diff --git a/resource/en/style/light/usermng.qss b/resource/en/style/light/usermng.qss new file mode 100644 index 00000000..41e5f903 --- /dev/null +++ b/resource/en/style/light/usermng.qss @@ -0,0 +1,75 @@ +*{ + outline:0px; +} +QWidget, +QDialog, +KbdPropertyDlg{ + color:#333333; + font-size:14px; + font-family:Microsoft YaHei; +} +QDialog, +KbdPropertyDlg{ + background:#e6ecf2; +} +QFrame#mainFrame{ + background-color: #e6ecf2; + border:1px solid #cccfd9; +} +QWidget#mainWidget{ + border:1px solid #cccfd9; + background:white; +} +KbdTable{ + color:#666666; + outline:0px; + border: 1px solid #cccfd9; + alternate-background-color: #f4f8fb; + background-color:white; +} +KbdTable::item{ + outline:0px; + height:28px; +} +KbdTable::item:selected { + background-color: rgba(9,106,228,38); + color:#096ae4; +} +QListView{ + background:white; + color: #333333; + outLine:0px; + border:1px solid #cccfd9; +} +QListView::item:hover, +QListView::item:selected{ + background-color: rgba(9,106,228,38); + color:#096ae4; +} +QListView::item:!enabled{ + color:#999999; +} + +QToolButton,QToolButton:unchecked { /* ToolBar里的按钮和带下拉菜单的按钮 */ + border-width: 1px; + border-radius: 3px; + background-color: transparent; + width: 28px; + height: 28px; +} +QAbstractSpinBox::up-button { + height:4px; +} +QAbstractSpinBox::down-button { + height:4px; +} + +QLabel#SignatureLable{ + background: white; + border:1px; + max-width:490px; + min-height:300px; + font-size:36px; + font-style:italic; + font-weight:Bold; +} \ No newline at end of file diff --git a/resource/en/style/light/workBench.qss b/resource/en/style/light/workBench.qss new file mode 100644 index 00000000..dd31b3f3 --- /dev/null +++ b/resource/en/style/light/workBench.qss @@ -0,0 +1,368 @@ +/*滚动条样式设计*/ +QScrollArea +{ + background: transparent; +} + +QScrollArea QWidget +{ + background-color: transparent; +} + +#startUpFrame,#ButtonForm QFrame +{ + border: none; +} + +/*界面背景设置*/ +QWidget#localstate +{ + border-image: url(../../resource/zh/workBench/LocalState_background.png); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + background-attachment: fixed; + +} + +/*本机状态界面样式设置*/ +#state_widget QToolButton +{ + border: none; + height: 40px; + min-width: 70px; + padding-top: 45px; + + font-family: "Microsoft YaHei", sans-serif; + font-weight: 400; + font-size: 12px; + color: #038300; + line-height: 14px; + text-align: left; + font-style: normal; + text-transform: none; + + background-color: transparent; + background-repeat: no-repeat; + background-position: center; + background-size: contain; +} + +/*基础服务按钮*/ +#state_widget QToolButton[appId = "1"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/basicApp_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "1"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/basicApp_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "1"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/basicApp_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "1"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/basicApp_unknow.png); + color: #8D8D8D; +} + +/*公共部分*/ +#state_widget QToolButton[appId = "2"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/publicApp_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "2"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/publicApp_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "2"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/publicApp_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "2"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/publicApp_unknow.png); + color: #8D8D8D; +} + +/*通用部分*/ +#state_widget QToolButton[appId = "3"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/generalApp_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "3"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/generalApp_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "3"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/generalApp_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "3"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/generalApp_unknow.png); + color: #8D8D8D; +} + +/*能源管理1*/ +#state_widget QToolButton[appId = "4"][state = "11"], +#state_widget QToolButton[appId = "5"][state = "11"], +#state_widget QToolButton[appId = "6"][state = "11"], +#state_widget QToolButton[appId = "7"][state = "11"], +#state_widget QToolButton[appId = "8"][state = "11"], +#state_widget QToolButton[appId = "9"][state = "11"], +#state_widget QToolButton[appId = "10"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "4"][state = "10"], +#state_widget QToolButton[appId = "5"][state = "10"], +#state_widget QToolButton[appId = "6"][state = "10"], +#state_widget QToolButton[appId = "7"][state = "10"], +#state_widget QToolButton[appId = "8"][state = "10"], +#state_widget QToolButton[appId = "9"][state = "10"], +#state_widget QToolButton[appId = "10"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "4"][state = "01"], +#state_widget QToolButton[appId = "5"][state = "01"], +#state_widget QToolButton[appId = "6"][state = "01"], +#state_widget QToolButton[appId = "7"][state = "01"], +#state_widget QToolButton[appId = "8"][state = "01"], +#state_widget QToolButton[appId = "9"][state = "01"], +#state_widget QToolButton[appId = "10"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "4"][state = "00"], +#state_widget QToolButton[appId = "5"][state = "00"], +#state_widget QToolButton[appId = "6"][state = "00"], +#state_widget QToolButton[appId = "7"][state = "00"], +#state_widget QToolButton[appId = "8"][state = "00"], +#state_widget QToolButton[appId = "9"][state = "00"], +#state_widget QToolButton[appId = "10"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_unknow.png); + color: #8D8D8D; +} + +#customWidget QToolButton ,#boxWidget QToolButton +{ + border :none; + background-color: #F2F8FF; + + font-family:"Microsoft YaHei", sans-serif; + font-weight: 400; + font-size: 12px; + color: #004882; + line-height: 14px; + text-align: center; + font-style: normal; + text-transform: none; +} +#customWidget QToolButton:hover ,#boxWidget QToolButton:hover, +#state_widget QToolButton:hover +{ + background-color: #C1DCFE; +} + +#StartUpForm QPushButton +{ + border: none; + border-radius: 0px 0px 0px 0px; + + background-repeat: no-repeat; + background-position: center; + background-size: cover; + background-attachment: fixed; + background-color: transparent; +} + +QPushButton#btn_start +{ + background-image: url(../../resource/zh/workBench/stop_state.png); +} +QPushButton#btn_start:hover , QPushButton#btn_start:pressed +{ + background-image: url(../../resource/zh/workBench/stop_state_hover.png); +} + +QPushButton#btn_stop +{ + background-image: url(../../resource/zh/workBench/run_state.png); +} +QPushButton#btn_stop:hover , QPushButton#btn_stop:pressed +{ + background-image: url(../../resource/zh/workBench/run_state_hover.png); +} + +QPushButton#btn_sysState +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_state.png); +} +QPushButton#btn_sysManage +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_mng.png); +} +QPushButton#btn_sysProcess +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_process.png); +} +QPushButton#btn_sysSetting +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_setting.png); +} +QPushButton#btn_sysTool +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_tools.png); +} + +/*菜单按钮按下后样式*/ +QPushButton#btn_sysState:pressed,QPushButton#btn_sysState:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_state_pressed.png); +} + +QPushButton#btn_sysManage:pressed,QPushButton#btn_sysManage:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_mng_pressed.png); +} + +QPushButton#btn_sysProcess:pressed,QPushButton#btn_sysProcess:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_process_pressed.png); +} + +QPushButton#btn_sysSetting:pressed,QPushButton#btn_sysSetting:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_set_pressed.png); +} +QPushButton#btn_sysTool:pressed,QPushButton#btn_sysTool:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_tool_pressed.png); +} + +#StatusForm QLabel +{ + font-family:"Microsoft YaHei", sans-serif; + font-weight: 400; + font-size: 14px; + color: #131313; + line-height: 16px; + text-align: center; + font-style: normal; + text-transform: none; +} + +#StatusForm QLabel[state = "1" ] +{ + color: #038300; + font-weight: bold; +} + +#StatusForm QLabel[state = "2" ] +{ + color: #FF0000; + font-weight: bold; +} + + +QLabel#titleLabel +{ + min-height: 22px; + font-family:"Microsoft YaHei", sans-serif; + font-weight: bold; + font-size: 14px; + color: #004882; + line-height: 16px; + text-align: left; + font-style: normal; + text-transform: none; +} + +/*系统设置样式设计*/ +QLabel[type = 'titleComm'], .ButtonForm QLabel +{ + font-family: "Microsoft YaHei", sans-serif; + font-weight: bold; + font-size: 14px; + color: #0B92FF; + line-height: 16px; + text-align: left; + font-style: normal; + text-transform: none; +} + +#SystemSetForm QToolButton +{ + background: #0B92FF; + border-radius: 0px 0px 0px 0px; + + font-family: "Microsoft YaHei", sans-serif; + font-weight: bold; + font-size: 12px; + color: #FFFFFF; + line-height: 14px; + text-align: center; + font-style: normal; + text-transform: none; +} + +#SystemSetForm QToolButton:hover , #SystemSetForm QToolButton:pressed +{ + background-color: #53b1fc; +} +QToolButton#btn_Save +{ + height: 40px; + min-width: 70px; + padding-top: 37px; + + background-color: transparent; + image: url(../../resource/zh/workBench/rightShift.png); + padding: 3px; +} + +QToolButton#btn_Delete +{ + height: 40px; + min-width: 70px; + padding-top: 37px; + + background-color: transparent; + image: url(../../resource/zh/workBench/leftShift.png); + padding: 3px; +} + +CheckBoxDialog,InputDialog +{ + min-width: 330px; + min-height: 190px; +} +QTabBar::tab +{ + min-width: 100px; +} +MenuFrame QPushButton{ +min-height: 55px; +min-width: 65px; +} + +QStatusBar +{ + max-height: 1px; +} \ No newline at end of file diff --git a/resource/en/style/public.qsst b/resource/en/style/public.qsst new file mode 100644 index 00000000..5ff27ee7 --- /dev/null +++ b/resource/en/style/public.qsst @@ -0,0 +1,1267 @@ +/*ɫ*/ +$main1 = #5DA5FB; +$main2 = #4B6D97; +$main3 = #001220; +$main4 = #033d67; +$main5 = #0E1D41; +$main6 = #b3d7f9; +$hoverColor = #00d3ff; +$background = transparent; +$border = #6088BA; +$grad1a = #39495C; +$grad1b = #0d3756; +$text1 = #FFFFFF; +$Disable_text = #ABABAB; +$Tip_text = #ACB3BF; +$diabled = #ABABAB; +$menu_background = #4E709A; + +QWidget +{ + font: 20px "Microsoft YaHei"; + color: $text1; + background:transparent; + outline:none; +} + +QWidget:disabled +{ + color:$Disable_text; + border-color: $diabled; +} + +QFrame{ + color: $text1; + background-color: $background;/*Ϊtransparent*/ +} + +QDialog { + background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgba(42, 66, 99, 1), stop:1 rgba(68, 105, 155, 1)); + border-radius: 0px; + box-shadow: none !important; +} + +QMainWindow::separator{ + border: 0px solid $border; + border-style: outset; + width: 5px; + height: 5px; +} +QMainWindow::separator:hover{ + background: $main1; +} +QSplitter::handle{ + border: 0px solid $border; + width: 5px; + height: 5px; +} +QSplitter::handle:hover{ +/*splitter->handle(1)->setAttribute(Qt::WA_Hover, true);Ч*/ + border-color: $main1; + background-color: $main1; +} +QSplitter::handle:pressed{ + border-color: $main1; + background-color: $main4; +} +QSizeGrip{ + background-color: none; +} + +/* =============================================== */ +/* Label */ +/* =============================================== */ +QLabel { + background: transparent; + border: 0px solid transparent; + padding: 1px; +} + + +/* A QLabel is a QFrame ... */ +/* A QToolTip is a QLabel ... */ +QToolTip { + border: 2px solid $border; + border-radius: 3px; + opacity:210; +} + + + + /* =============================================== */ +/* QComboBox */ +/* =============================================== */ +QComboBox{ + background: $background; + selection-background-color:$main1; + selection-color:$text1; + border: 2px solid $border; + border-radius: 0px; + padding: -2 10 -2 10px; + height:40px; +} + +QComboBox:hover +{ + border-color: $main1; +} + +QComboBox:focus { + border-color: $main1; +} + +QComboBox QAbstractItemView +{ + min-width: 200px; + background:$menu_background; + selection-background-color: $main1; + selection-color:$text1; + /*alternate-background-color: $main5;*/ + border: 2px solid $border; + padding: 10px 0px 10px 0px; +} + +QComboBox QAbstractItemView::item:selected:active { + background: transparent; + color: $text1; +} + +QComboBox::drop-down { + border-image:url(../../resource/zh/public/dark/icon/box-down-normal.png); + margin-right: 10px; + height:9px; + width:14px; + subcontrol-origin: margin; + subcontrol-position: center right; +} + +QComboBox::drop-down:hover{ + border-image:url(../../resource/zh/public/dark/icon/box-down-select.png); +} + +QComboBox::drop-down:open:!hover { + border-image:url(../../resource/zh/public/dark/icon/box-down-normal.png); +} + +QComboBox::drop-down:open:hover { + border-image:url(../../resource/zh/public/dark/icon/box-down-select.png); +} + +QComboBox::drop-down:disabled { + border-image:url(../../resource/zh/public/dark/icon/box-down-disable.png); +} + +/* =============================================== */ +/* QMenu */ +/* =============================================== */ +QMenu +{ + min-width: 200px; + background:$menu_background; + padding: 10px 0px 10px 0px; +} + +QAction { + min-width: 240px; + height:40px; + color:$text1; + background:$menu_background; + padding: 0px 20px 0px 20px; +} + +QAction:hover { + font-weight: bold; + color:$text1; + background-color: $main1; +} + +QMenu::item{ + min-width: 200px; + height:40px; + color:$text1; + background:$background; + border: 2px solid transparent; + padding: 0px 20px 0px 20px; +} +QMenu::item:hover{ + font-weight: bold; + color:$text1; + background:$main1; +} + +QMenu::item:disabled,QMenu::item:disabled:selected,QMenu::item:disabled:pressed{ + + color: $Disable_text; + background: $background; +} + +QMenu::item#editBatch{ + min-width: 150px; +} + +QMenu::item:selected{ + color:$text1; + background:$main1; +} + +QMenu::item:pressed { + font-weight: bold; + color:$text1; + background:$main1; +} + +QMenu#contextMenu{ + min-width:240px; +} + + +/* =============================================== */ +/* TextBox */ +/* =============================================== */ +QLineEdit { + background: $background;/*Ϊ͸table༭ʱʾ*/ + selection-background-color: $main1; + selection-color:$text1; + border: 2px solid $border; + border-radius: 0px; + padding: 3px 10px 4px 10px; + max-height:40px; +} + +QLineEdit:hover{ + border-color: $main1; +} + +QLineEdit:focus{ + border-color: $main1; +} +/*QLineEdit[readOnly="true"] { color: gray }*/ +QLineEdit[echoMode="2"]{ + lineedit-password-character: 9679;/*ַascii35 88 */ +} + +QLineEdit:read-only { + color: $text1; +} + +QLineEdit:disabled{ + color:$Disable_text; +} + +QLineEdit[placeholderText] +{ + color: $Tip_text; + font-size: 20px; +} + +QTextEdit{ + selection-background-color:$main1; + selection-color:$text1; + border: 2px solid $border; + +} +QTextEdit:hover{ + border-color: $main1; +} +QTextEdit:focus{ + border-color: $main1; +} +/* =============================================== */ +/* Button */ +/* =============================================== */ +QPushButton { + border: 2px solid $border; + background-color:$background; + radius:0px; + padding: -2px 10px -2px 10px; + min-height: 40px; +} + +QPushButton:hover{ + background-color: $main1; + border-color: $main1; +} + +QPushButton:pressed +{ + font-weight: bold; + background-color: $main1; +} + +QPushButton:focus,QPushButton:default { + + border-color: $main1; /* make the default button prominent */ +} + +QToolBar{ + border: 1px solid $border; + spacing: 0px; +} + +QToolBar::separator:horizontal { + background:$border; + width: 1px; +} + +QToolBar::separator:vertical { + background:$border; + height: 1px; +} + +QToolButton,QToolButton:unchecked { /* ToolBarİťʹ˵İť */ + border: 2px solid $border; + background-color:$background; + radius:0px; + padding: 3px 2px 3px 3px; +} +QToolButton:checked{ + font-weight: bold; + background-color: $main1; +} +QToolButton:hover{ + background-color: $main1; + border-color: $main1; +} + +QToolButton:pressed,QToolButton:checked:hover{ + font-weight: bold; + background-color: $main1; +} +QToolButton:checked:pressed{ + font-weight: bold; + background-color: $main1; +} + + +/* only for MenuButtonPopup */ +QToolButton[popupMode="1"]{ + padding-left: 1px; + padding-right: 15px; /* make way for the popup button */ + border: 2px solid $border; + min-height: 15px; + /*background: qlineargradient(x1:0, y1:0 ,x2:0, y2:1 + stop: 0 $grad1a, stop: 0.05 $grad1b, stop: 0.5 $grad1b + stop: 0.95 $grad1a stop: 1$grad1a)*/ +} +QToolButton[popupMode="1"]:hover{ + border-width: 1px; + background-color: $main1; + border-color: $main1; +} + +QToolButton::menu-button { + border: 2px solid $border; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + width: 16px; +} + +QToolButton::menu-button:hover { + border: 2px solid $main1; +} + +QToolButton::menu-button:pressed { + border: 2px solid $border; +} + +QToolButton QMenu +{ + selection-background-color: $main1; + selection-color:$main3; + background: $background; + border: 2px solid $border; + padding: 10px 0px 10px 0px; +} + +QToolButton QMenu::item +{ + height:30px; + background: $background; + border: 2px solid transparent; + padding: 0px 20px 0px 20px; +} + +/* =============================================== */ +/* QRadioButton */ +/* =============================================== */ +QRadioButton { + height: 28px; +} + +QRadioButton:hover{ + color:$main1; +} + + +QRadioButton::indicator{ + width: 14px; + height: 14px; +} + +QRadioButton::indicator::unchecked{ + border-image:url(../../resource/zh/public/dark/icon/rkb-normal.png); +} + +QRadioButton::indicator:unchecked:hover { + border-image:url(../../resource/zh/public/dark/icon/rkb-hover.png); +} + +QRadioButton::indicator:unchecked:pressed { + border-image:url(../../resource/zh/public/dark/icon/rkb-hover.png); +} + +QRadioButton::indicator:unchecked:disabled { + border-image:url(../../resource/zh/public/dark/icon/rkb-disable.png); +} + +QRadioButton::indicator::checked{ + border-image:url(../../resource/zh/public/dark/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:hover { + border-image:url(../../resource/zh/public/dark/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:pressed { + border-image:url(../../resource/zh/public/dark/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:disabled { + border-image:url(../../resource/zh/public/dark/icon/rkb-select-disable.png); +} + +/* =============================================== */ +/* QCheckBox */ +/* =============================================== */ +QCheckBox{ + color:$text1; +} + +QCheckBox::hover { + color:$main1; +} + +QCheckBox::indicator{ + width: 14px; + height: 14px; +} + + +QCheckBox::indicator::unchecked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-normal.png); +} + +QCheckBox::indicator:unchecked:hover { + border-image:url(../../resource/zh/public/dark/icon/ckb-uncheck-hover.png); +} + +QCheckBox::indicator:unchecked:pressed { + border-image:url(../../resource/zh/public/dark/icon/ckb-uncheck-hover.png); +} + +QCheckBox::indicator:unchecked:disabled { + border-image:url(../../resource/zh/public/dark/icon/ckb-disable.png); +} + +QCheckBox::indicator::checked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:hover { + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:pressed { + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:disabled { + border-image:url(../../resource/zh/public/dark/icon/ckb-select-disable.png); +} + +QCheckBox::indicator:indeterminate { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck.png); +} + +QCheckBox::indicator:indeterminate:hover { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck-hover.png); +} + +QCheckBox::indicator:indeterminate:pressed { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck-hover.png); +} + +QCheckBox::indicator:indeterminate:disabled { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck-disable.png); +} + +/* =============================================== */ +/* Slider ProgressBar */ +/* =============================================== */ +QProgressBar { + border: 2px solid $border; + border-radius: 4px; + text-align: center; +} + +QProgressBar::chunk { + background-color: $main6; + width: 4px; + margin: 1px; +} + +QSlider{ + border: 2px solid transparent; +} + +QSlider::disabled{ + border: 2px solid transparent; +} + +QSlider::groove{ + border: 1px solid $border; + /*background: $background;*/ +} +QSlider::handle {/*мǸļ*/ + border: 1px solid $border; + background: $main1; +} +QSlider::groove:horizontal { + height: 3px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */ + left:5px; right: 5px; +} +QSlider::groove:vertical{ + width: 3px; + top: 5px; bottom: 5px; +} +QSlider::handle:horizontal{ + width: 6px; + margin: -7px; /* height */ +} +QSlider::handle:vertical{ + height: 6px; + margin: -7px; /* height */ +} +QSlider::add-page{/*ûлȥĵط*/ + border: 2px solid $border; + background:$main2; +} +QSlider::sub-page{/*ѾĴӵط*/ + background: $main1; +} + +/* =============================================== */ +/* ScrollBar */ +/* =============================================== */ +QScrollBar{ + background-color: $background; + border: 1px solid $border; + border-radius: 0px; + padding: 1px; + margin:0px; + height: 15px; + width: 15px; +} + +QScrollBar::handle{ + border-color:$border; + radius: 0px; + background: $border; + min-width: 10px; + min-height: 10px; +} +QScrollBar::handle:hover { + background: $main1; +} +QScrollBar::add-line, QScrollBar::sub-line, +QScrollBar::add-page, QScrollBar::sub-page { + width: 0px; + background: transparent; +} +QScrollArea{ + border: none; +} +/*QScrollArea QAbstractSlider{ + border-radius: 0px; +}*/ + + + +/* =============================================== */ +/* GroupBox */ +/* + left: 6px; + top:-30px; + background-color: $background; +/* =============================================== */ +QGroupBox { + background-color: $background; + border: 1px solid $border; + padding:0px 0px 0px 0px; + margin-top: 30px; +} + +QGroupBox:disabled{ + border: 2px solid $Disable_text; +} + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + left:20px; + background-color: transparent; +} +QGroupBox::indicator::unchecked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-normal.png); +} +QGroupBox::indicator::checked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} +QGroupBox::indicator:indeterminate { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck.png); +} + + +/* =============================================== */ +/* ToolBox */ +/* =============================================== */ +QToolBox{ + border: 2px solid $border; +} +QToolBox::tab { + background: transparent; + border: 1px solid $border; +} +QToolBox::tab:hover { + background-color: $main2; + border-color: $main1; +} +QToolBox::tab:pressed { + font-weight: bold; + color:$text1; + background-color: $main2; + border: 2px solid $main1; +} +QToolBox::tab:selected { + font-weight: bold; + color:$text1; + background-color: $main2; + border: 2px solid $main1; +} + +/* =============================================== */ +/* QTabBar */ +/* =============================================== */ +QTabWidget{ + /*margin-top:10px;*/ + +} +QTabWidget::pane{ + border: 2px solid $border; +} +QTabWidget::tab-bar { + left: 0px; +} +QTabBar::tab { + color:$text1; + background: $background; + border: 0px solid $border; + padding: 0px 10px 0px 10px; + min-height:38px; +} +QTabBar::tab:hover { + background: $main1; + border-color: transparent; +} +QTabBar::tab:selected { + background: $main1; + color:$text1; +} +QTabBar::tab:pressed { + font-weight: bold; + background: $main1; + border-color: $main1; + color:$text1; +} +QTabBar::tab:disabled { + color:$Disable_text; +} + +QTabBar::tab:focus { + border-color: $main1; +} +QTabBar::tab:top{ + border-top:0px; + border-left:0px; + border-right:0px; + border-bottom:0px solid transparent; +} + +QTabBar::tab:top:selected{ + border-top:0px; + border-left:0px; + border-right:0px; + border-bottom:2px solid $main1; +} + +QTabBar::tab:bottom{ + width:80px; + height:30px; + border-top:2px solid transparent; + border-left:0px; + border-right:0px; + border-bottom:0px; + +} + +QTabBar::tab:bottom:selected{ + border-top:2px solid $main1; + border-left:0px; + border-right:0px; + border-bottom:0px; +} + +QTabBar::tab:right{ + height:80px; + border-top:0px; + border-bottom:0px; + border-right:0px; + border-left:2px solid transparent; + +} + +QTabBar::tab:right:selected{ + height:80px; + border-top:0px; + border-bottom:0px; + border-right:0px; + border-left:2px solid $main1; + +} +QTabBar::tab:left{ + height:80px; + border-top:0px; + border-bottom:0px; + border-left:0px; + border-right:2px solid transparent; + +} + +QTabBar::tab:left:selected{ + height:80px; + border-top:0px; + border-bottom:0px; + border-left:0px; + border-right:2px solid $main1; +} + + +QTabWidget::pane +{ + border:1px solid $border; + padding:6px; +} + + +/* =============================================== */ +/* QHeaderView for list table */ +/* =============================================== */ +QHeaderView { + background-color: $main2; + border: none; + margin: -2px; + padding: 0px; + height:40px; +} +QHeaderView::section, QTableCornerButton::section {/*ñͷ*//*Ͻ*/ + background-color: $main2; + padding: 0px 10px 0px 10px; + min-height: 40px; + border-top: 0px solid $border; + border-left: 0px solid $border; + border-right: 2px solid $border; + border-bottom: 2px solid $border; + border-radius: 0px; +} +QHeaderView::section:hover, QTableCornerButton::section:hover{ + /*background-color: $main4;*/ +} +QHeaderView::section:pressed{ + background-color: $main1; + color:$text1; +} +QHeaderView::section:checked { + background-color: $main2; + color:$text1; +} + +QHeaderView::down-arrow +{ + subcontrol-position:center right; + padding-right:10px; + image:url(../../resource/zh/public/dark/icon/box-down-normal.png); +} + +QHeaderView::up-arrow +{ + subcontrol-position:center right; + padding-right:10px; + image:url(../../resource/zh/public/dark/icon/box-up-normal.png); +} + +/* =============================================== */ +/* QAbstractItemView */ +/* =============================================== */ +QAbstractItemView +{ + show-decoration-selected:1; + selection-background-color:$main1; /*ѡʱɫ*/ + selection-color:$text1; /*ѡʱǰɫɫ*/ + /*ýɫҪں:tableWidget->setAlternatingRowColors(true)*/ + alternate-background-color: $background; + background: $background; + color:$text1; + border: 2px solid $border; +} + +QAbstractItemView::item +{ + background: $background; + radius:0px; + min-height:30px; + border: 0px; + padding: 0px; +} + +QAbstractItemView::item:hover{ + color: $hoverColor; +} + +QAbstractItemView::item:pressed{ + color: $text1; + background:$main1; +} + +QAbstractItemView::item:selected:focus { + background: $main1; + color: $text1; +} + +QAbstractItemView::item:selected:!focus { + background: $main1; + color: $text1; +} + +QAbstractItemView::item:selected:active { + background: $main1; + color: $text1; +} + +QAbstractItemView QCheckBox::hover{ + + background: $main1; +} + +QAbstractItemView QCheckBox::pressed{ + color: $text1; + background:$main1; +} + +QAbstractItemView QCheckBox::focus{ + color:$text1; + background: $main1; +} + +QAbstractItemView QCheckBox::selected:focus { + background: $main1; + color: $text1; +} + +QAbstractItemView QCheckBox::selected:!focus { + background: $main1; + color: $text1; +} + +QAbstractItemView QCheckBox::selected:active { + background: $main1; + color: $text1; +} + +QAbstractItemView::indicator::unchecked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-normal.png); +} + + +QAbstractItemView::indicator::checked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} + +QAbstractItemView::indicator:indeterminate { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck.png); +} + +QAbstractItemView::branch{ + background-color: $background; +} + +QAbstractItemView::branch:alternate +{ + alternate-background-color: $main1; +} + + +QAbstractItemView::branch:hover{ + background: $main1; +} + +QAbstractItemView::branch:pressed{ + color: $text1; + background:$main1; +} + +QAbstractItemView::branch:focus{ + color:$text1; + background: $main1; +} + +QAbstractItemView::branch:selected:focus { + background: $main1; + color: $text1; +} + +QAbstractItemView::branch:selected:!focus{ + background: $main1; + color: $text1; +} + +QAbstractItemView::branch:selected:active { + background: $main1; + color: $text1; +} + + +/* =============================================== */ +/* QListView QListWidget */ +/* =============================================== */ +QListWidget, QListView +{ + gridline-color: $border; /*еɫ*/ + border:2px solid $border; /*߿ߵĿȡɫ*/ + /*border:none;*/ /*ȥ߽*/ + /*border-radius:5px;*/ + /*padding:10px 10px;*/ /*߿ļ*/ +} + +QListView::item, QListWidget::item{ + background: transparent; + outline-style: none; + border: none; + padding: 0px 10px 0px 10px; +} + +/* =============================================== */ +/* QTableWidget */ +/* =============================================== */ +QTableWidget, QTableView +{ + gridline-color: $grad1a; /*еɫ*/ + border:2px solid $border; /*߿ߵĿȡɫ*/ + /*border:none;*/ /*ȥ߽*/ + /*border-radius:5px;*/ + /*padding:10px 10px;*/ /*߿ļ*/ +} +QTableView::item, QTabWidget::item{ + background: transparent; + outline-style: none; + border: none; +} + +QTableView QLineEdit, +QTableWidget QLineEdit, +QTreeWidget QLineEdit, +QTreeView QLineEdit +{ + background: $main2; + border-radius: 0px; + padding: 0px; +} + +QTableWidget QComboBox , +QTableView QComboBox, +QTreeWidget QComboBox, +QTreeView QComboBox +{ + background: $main2; + border: 0px; + border-radius: 0px; + margin: 0px; + height:30px; +} + +QTableWidget QPushButton , +QTableView QPushButton, +QTreeWidget QPushButton, +QTreeView QPushButton +{ + min-height: 30px; +} + + + +/* =============================================== */ +/* QTreeWidget QTreeView */ +/* =============================================== */ +QTreeWidget, QTreeView +{ + background:$background; +} +QTreeWidget::item, QTreeView::item{ + background: $background; + outline-style: none; + border: none; +} + + +QTreeWidget::branch,QTreeView::branch { + background: $background; +} + +QTreeWidget::branch:hover,QTreeView::branch:hover{ + background: $background; +} + +QTreeWidget::branch:pressed,QTreeView::branch:pressed{ + color: $text1; + background:$main1; +} + +QTreeWidget::branch:focus,QTreeView::branch:focus{ + color:$text1; + border-color: $main1; +} + +QTreeWidget::branch:selected:focus,QTreeView::branch:selected:focus { + background: $main1; + color: $text1; +} + +QTreeWidget::branch:selected:!focus,QTreeView::branch:selected:!focus{ + background: $main1; + color: $text1; +} + +QTreeWidget::branch:selected:active,QTreeView::branch:selected:active { + background: $main1; + color: $text1; +} + +QTreeView::branch { + width:9px; + height:9px; + background-repeat: no-repeat; + background-position: center; +} + +QTreeView::branch:closed:has-children { + image:url(../../resource/zh/public/dark/icon/arrowRight.png); +} + +QTreeView::branch:closed:has-children:hover { + image:url(../../resource/zh/public/dark/icon/arrowRight.png); +} + +QTreeView::branch:open:has-children { + image:url(../../resource/zh/public/dark/icon/arrowBottom.png); +} + +QTreeView::branch:open:has-children:hover { + image:url(../../resource/zh/public/dark/icon/arrowBottom.png); +} + +/* =============================================== */ +/* QAbstractSpinBox spinbox QDateTimeEdit */ +/* =============================================== */ +QAbstractSpinBox { + background: $background;/*Ϊ͸table༭ʱʾ*/ + selection-background-color:$main1; + selection-color:$text1; + border: 2px solid $border; + border-radius: 0px; + padding: 0 0 0 0px; + height:40px; +} + +QAbstractSpinBox:hover { + border-color: $main1; +} + +QAbstractSpinBox:focus { + border-color: $main1; + +} + +/*SpinBoxϰťʽ*/ +QAbstractSpinBox::up-button { +margin: 5px 5px 5px 5px; + height:9px; + width:14px; + image:url(../../resource/zh/public/dark/icon/box-up-normal.png); + } + +QAbstractSpinBox::up-button:hover { + image:url(../../resource/zh/public/dark/icon/box-up-select.png); + } + +QAbstractSpinBox::up-button:pressed { + image:url(../../resource/zh/public/dark/icon/box-up-select.png); + + } + +QAbstractSpinBox::up-button:disabled{ + image:url(../../resource/zh/public/dark/icon/box-up-disable.png); + + } + +/*SpinBox°ťʽ*/ +QAbstractSpinBox::down-button { + margin: 5px 5px 5px 5px; + height:9px; + width:14px; + image:url(../../resource/zh/public/dark/icon/box-down-normal.png); + } + +QAbstractSpinBox::down-button:hover{ + image:url(../../resource/zh/public/dark/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:pressed{ + image:url(../../resource/zh/public/dark/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:disabled{ + image:url(../../resource/zh/public/dark/icon/box-down-disable.png); + +} + +QDateTimeEdit::drop-down { + subcontrol-origin: padding; + subcontrol-position: right center; + width: 30px; + background-color: transparent; + image:url(../../resource/zh/public/dark/icon/calendar.png); +} + + +/* =============================================== */ +/* QCalendarWidget */ +/* =============================================== */ +QCalendarWidget QWidget{ + border: none; + background-color: $menu_background; + color:$text1; +} + +QCalendarWidget QWidget#qt_calendar_calendarview{ + border-left: 1px solid $border; + border-right: 1px solid $border; + border-bottom: 1px solid $border; + background-color: $menu_background; +} + +QCalendarWidget QWidget#qt_calendar_navigationbar { + background-color: $main2; + border: 2px solid $border; +} + + +QCalendarWidget QMenu{ + width: 80px; + background-color: $menu_background; + border: 0px; + color:$main1; +} + + +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: transparent; +} + +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: transparent; +} + + +QCalendarWidget QAbstractSpinBox { + background: $background; + selection-background-color: $main1; + border: 2px solid $border; + border-radius: 0px; + padding: 0 10 0 10px; + height:30px; +} + +QCalendarWidget QAbstractSpinBox:hover { + background-color: $main1; +} + +QCalendarWidget QAbstractSpinBox:focus { + background-color: $main1; +} + +QCalendarWidget QToolButton:pressed,QCalendarWidget QToolButton:checked:hover{ + color:$main1; +} + + +QCalendarWidget QToolButton#qt_calendar_prevmonth{ + width: 40px; + qproperty-icon: url(../../resource/zh/public/dark/icon/arrowLeft.png); + background-color: transparent; +} + +QCalendarWidget QToolButton#qt_calendar_nextmonth { + width: 40px; + qproperty-icon: url(../../resource/zh/public/dark/icon/arrowRight.png); + background-color: transparent; +} + +QCalendarWidget QToolButton#qt_calendar_monthbutton { + background-color: transparent; +} + +QCalendarWidget QAbstractItemView +{ + selection-background-color:$main1; /*ѡʱɫ*/ + selection-color:$text1; /*ѡʱǰɫɫ*/ + /*ýɫҪں:tableWidget->setAlternatingRowColors(true)*/ + alternate-background-color: $main2; + background: $background; + border: 2px solid $border; +} + +/* =============================================== */ +/* searchButton */ +/* =============================================== */ +QPushButton#searchButton{ + background:transparent; + min-height:22px; + max-width:22px; + border:none; + margin-left:0px; + padding: 0 5 0 5px; + image:url(../../resource/zh/public/dark/icon/search.png); +} + +QLineEdit#searchTextEdit { + border:none; + background:transparent; +} + +QWidget#searchWidget { + border:2px solid $main1; + background:$main2; + max-height: 40px; +} + + + diff --git a/resource/en/style/样式模板.qsst b/resource/en/style/样式模板.qsst new file mode 100644 index 00000000..4d26f47b --- /dev/null +++ b/resource/en/style/样式模板.qsst @@ -0,0 +1,1163 @@ +/*深色*/ +$main1 = #00f0ff; +$main2 = #104366; +$main3 = #001220; +$main4 = #033d67; +$main5 = #001d46; +$main6 = #b3d7f9; +$background = #032448; +$border = #0070a2; +$grad1a = #072d48; +$grad1b = #0d3756; +$text1 = #00b0ff; +$text2 = #5783ae; +$diabled = #325371; +$path = dark; +QWidget +{ + font: 10pt "Microsoft YaHei"; + color: $text1; + background:$background; + outline:none; +} + +QWidget:disabled +{ + color:$text2; + border-color: $diabled; +} + +QFrame{ + color: $text1; + background-color: $background;/*不能设置为transparent*/ +} + +QMainWindow::separator{ + border: 1px solid $border; + border-style: outset; + width: 4px; + height: 4px; +} +QMainWindow::separator:hover{ + background: $main4; +} +QSplitter::handle{ + border: 0px solid $border; + width: 4px; + height: 4px; +} +QSplitter::handle:hover{/*splitter->handle(1)->setAttribute(Qt::WA_Hover, true);才生效*/ + border-color: $main1; + background-color: $main4; +} +QSplitter::handle:pressed{ + border-color: $main1; + background-color: $main4; +} +QSizeGrip{ + background-color: none; +} + +/* =============================================== */ +/* Label */ +/* =============================================== */ +QLabel { + background: transparent; + border: 0px solid transparent; + padding: 1px; +} + + +/* A QLabel is a QFrame ... */ +/* A QToolTip is a QLabel ... */ +QToolTip { + border: 1px solid $border; + border-radius: 3px; + opacity:210; +} + + + +/* =============================================== */ +/* QMenu */ +/* =============================================== */ +QMenu +{ + background:$background; + border: 1px solid $border; + padding: 10px 0px 10px 0px; +} + +QMenu::item{ + min-width: 80px; + height:30px; + color:$text1; + background:$background; + border: 1px solid transparent; + padding: 0px 20px 0px 20px; +} +QMenu::item:hover{ + color:$text1; + background:$main4; +} + +QMenu::item:disabled,QMenu::item:disabled:selected,QMenu::item:disabled:pressed{ + + color: $text2; + background: $background; +} + +QMenu::item#editBatch{ + min-width: 150px; +} + +QMenu::item:selected{ + color:$text1; + background:$main4; +} + +QMenu::item:pressed { + color:$main1; + background:$main4; +} + +QMenu#contextMenu{ + min-width:240px; +} + + +/* =============================================== */ +/* TextBox */ +/* =============================================== */ +QLineEdit { + background: $background;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color: $main1; + selection-color:$background; + border: 1px solid $border; + border-radius: 4px; + padding: 0 0 0 0px; + height:30px; +} + +QLineEdit:hover{ + border-color: $main1; +} +QLineEdit:focus{ + border-color: $main1; +} +/*QLineEdit[readOnly="true"] { color: gray }*/ +QLineEdit[echoMode="2"]{ + lineedit-password-character: 9679;/*字符的ascii码35 88等 */ +} + +QLineEdit:read-only { + color: $text2; +} + +QLineEdit:disabled{ + color:$text2; +} + +QTextEdit{ + selection-background-color:$main1; + selection-color:$background; + border: 1px solid $border; + +} +QTextEdit:hover{ + border-color: $main1; +} +QTextEdit:focus{ + border-color: $main1; +} +/* =============================================== */ +/* Button */ +/* =============================================== */ +QPushButton { + border: 1px solid $border; + border-radius: 2px; + /*background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 $grad1a, stop: 0.05 $grad1b,stop: 0.5 $grad1b, + stop: 0.9 $grad1a, stop: 1 $grad1a);*/ + radius:4px; + width: 80px; + height: 28px; +} + +QPushButton:hover{ + background-color: $main4; + border-color: $main1; +} + +QPushButton:pressed +{ + color:$main3; + background-color: $main1; +} + +QPushButton:focus,QPushButton:default { + + border-color: $main1; /* make the default button prominent */ +} + +QToolButton,QToolButton:unchecked { /* ToolBar里的按钮和带下拉菜单的按钮 */ + border-width: 1px; + border-radius: 3px; + background-color: transparent; + width: 80px; + height: 28px; +} +QToolButton:checked{ + border-width: 1px; + background-color: $main1; + border-color: $border; + color:$main3; +} +QToolButton:hover{ + border-width: 1px; + background-color: $main4; + border-color: $main1; +} + +QToolButton:pressed,QToolButton:checked:hover{ + background-color: $main1; + color:$main3; +} +QToolButton:checked:pressed{ + border-width: 1px; + background-color: $main1; + border-color: $border; +} + + +/* only for MenuButtonPopup */ +QToolButton[popupMode="1"]{ + padding-left: 1px; + padding-right: 15px; /* make way for the popup button */ + border: 1px solid $border; + min-height: 15px; + /*background: qlineargradient(x1:0, y1:0 ,x2:0, y2:1 + stop: 0 $grad1a, stop: 0.05 $grad1b, stop: 0.5 $grad1b + stop: 0.95 $grad1a stop: 1$grad1a)*/ +} +QToolButton[popupMode="1"]:hover{ + border-width: 1px; + background-color: $main4; + border-color: $main1; +} + +QToolButton::menu-button { + border: 1px solid $border; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + width: 16px; +} + +QToolButton::menu-button:hover { + border: 1px solid $main1; +} + +QToolButton::menu-button:pressed { + border: 1px solid $border; +} + +QToolButton QMenu +{ + selection-background-color: $main1; + selection-color:$main3; + background: $background; + border: 1px solid $border; + padding: 10px 0px 10px 0px; +} + +QToolButton QMenu::item +{ + height:30px; + background: $background; + border: 1px solid transparent; + padding: 0px 20px 0px 20px; +} + +/* =============================================== */ +/* QRadioButton */ +/* =============================================== */ +QRadioButton { + height: 28px; +} + +QRadioButton:hover{ + color:$main1; +} + + +QRadioButton::indicator{ + width: 14px; + height: 14px; +} + +QRadioButton::indicator::unchecked{ + border-image:url(../../resource/zh/public/$path/icon/rkb-normal.png); +} + +QRadioButton::indicator:unchecked:hover { + border-image:url(../../resource/zh/public/$path/icon/rkb-hover.png); +} + +QRadioButton::indicator:unchecked:pressed { + border-image:url(../../resource/zh/public/$path/icon/rkb-hover.png); +} + +QRadioButton::indicator:unchecked:disabled { + border-image:url(../../resource/zh/public/$path/icon/rkb-disable.png); +} + +QRadioButton::indicator::checked{ + border-image:url(../../resource/zh/public/$path/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:hover { + border-image:url(../../resource/zh/public/$path/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:pressed { + border-image:url(../../resource/zh/public/$path/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:disabled { + border-image:url(../../resource/zh/public/$path/icon/rkb-select-disable.png); +} + +/* =============================================== */ +/* QCheckBox */ +/* =============================================== */ +QCheckBox{ + color:$text1; +} + +QCheckBox::hover { + color:$main1; +} + +QCheckBox::indicator{ + width: 14px; + height: 14px; +} + + +QCheckBox::indicator::unchecked{ + border-image:url(../../resource/zh/public/$path/icon/ckb-normal.png); +} + +QCheckBox::indicator:unchecked:hover { + border-image:url(../../resource/zh/public/$path/icon/ckb-uncheck-hover.png); +} + +QCheckBox::indicator:unchecked:pressed { + border-image:url(../../resource/zh/public/$path/icon/ckb-uncheck-hover.png); +} + +QCheckBox::indicator:unchecked:disabled { + border-image:url(../../resource/zh/public/$path/icon/ckb-disable.png); +} + +QCheckBox::indicator::checked{ + border-image:url(../../resource/zh/public/$path/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:hover { + border-image:url(../../resource/zh/public/$path/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:pressed { + border-image:url(../../resource/zh/public/$path/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:disabled { + border-image:url(../../resource/zh/public/$path/icon/ckb-select-disable.png); +} + +QCheckBox::indicator:indeterminate { + border-image:url(../../resource/zh/public/$path/icon/ckb-ptck.png); +} + +QCheckBox::indicator:indeterminate:hover { + border-image:url(../../resource/zh/public/$path/icon/ckb-ptck-hover.png); +} + +QCheckBox::indicator:indeterminate:pressed { + border-image:url(../../resource/zh/public/$path/icon/ckb-ptck-hover.png); +} + +QCheckBox::indicator:indeterminate:disabled { + border-image:url(../../resource/zh/public/$path/icon/ckb-ptck-disable.png); +} + +/* =============================================== */ +/* Slider ProgressBar */ +/* =============================================== */ +QProgressBar { + border: 1px solid $border; + border-radius: 4px; + text-align: center; +} + +QProgressBar::chunk { + background-color: $main6; + width: 4px; + margin: 1px; +} + +QSlider{ + border: 1px solid transparent; +} + +QSlider::disabled{ + border: 1px solid transparent; +} + +QSlider::groove{ + border: 1px solid $border; + background: $background; +} +QSlider::handle {/*设置中间的那个滑动的键*/ + border: 1px solid $border; + background: $main1; +} +QSlider::groove:horizontal { + height: 3px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */ + left:5px; right: 5px; +} +QSlider::groove:vertical{ + width: 3px; + top: 5px; bottom: 5px; +} +QSlider::handle:horizontal{ + width: 6px; + margin: -7px; /* height */ +} +QSlider::handle:vertical{ + height: 6px; + margin: -7px; /* height */ +} +QSlider::add-page{/*还没有滑上去的地方*/ + border: 1px solid $border; + background:$main2; +} +QSlider::sub-page{/*已经划过的从地方*/ + background: $main1; +} + +/* =============================================== */ +/* ScrollBar */ +/* =============================================== */ +QScrollBar{ + background-color: $background; + border: 1px solid $grad1b; + border-radius: 0px; + padding: 1px; + margin:0px; + height: 15px; + width: 15px; +} + +QScrollBar::handle{ + border-color:$border; + radius: 8px; + background: $border; + min-width: 10px; + min-height: 10px; +} +QScrollBar::handle:hover { + background: $main1; +} +QScrollBar::add-line, QScrollBar::sub-line, +QScrollBar::add-page, QScrollBar::sub-page { + width: 0px; + background: transparent; +} +QScrollArea{ + border: none; +} +/*QScrollArea QAbstractSlider{ + border-radius: 0px; +}*/ + +/* =============================================== */ +/* GroupBox */ +/* =============================================== */ +QGroupBox { + background-color: $background; + border: 1px solid $border; + padding:6px; + margin: 12px 0px 0px 0px; +} +QGroupBox::title { + left: 6px; + top:-10px; + background-color: $background; +} +QGroupBox::indicator::unchecked{ + border-image:url(../../resource/zh/public/$path/icon/ckb-normal.png); +} +QGroupBox::indicator::checked{ + border-image:url(../../resource/zh/public/$path/icon/ckb-select-hover.png); +} +QGroupBox::indicator:indeterminate { + border-image:url(../../resource/zh/public/$path/icon/ckb-ptck.png); +} +/* =============================================== */ +/* ToolBox */ +/* =============================================== */ +QToolBox{ + border: 1px solid $border; +} +QToolBox::tab { + background: $main2; + border: 1px solid $border; +} +QToolBox::tab:hover { + background-color: $main4; + border-color: $main1; +} +QToolBox::tab:pressed { + background-color: $main1; + color:$main3; + border-color: transparent; +} +QToolBox::tab:selected { + font-weight: bold; + color:$main1; + background-color: $main4; + border: 1px solid $main1; +} + +/* =============================================== */ +/* QTabBar */ +/* =============================================== */ +QTabWidget{ + /*margin-top:10px;*/ +} +QTabWidget::pane{ + border: 1px solid $border; +} +QTabWidget::tab-bar { + left: 0px; +} +QTabBar::tab { + font-weight:bold; + color:$text1; + min-height:30px; + padding:0 10 0 10px; + background: $background; + border: 1px solid $border; +} +QTabBar::tab:hover { + background: $main4; + border-color: transparent; +} +QTabBar::tab:selected { + background: $main4; + color:$main1; + border-color: $main1; +} +QTabBar::tab:pressed { + background: $main1; + border-color: $main1; + color:$main3; +} +QTabBar::tab:focus { + border-color: $main1; +} +QTabBar::tab:top{ + height:30px; + margin-left:1px; + border-top:0px; + border-left:0px; + border-right:0px; + border-bottom:2px solid transparent; +} + +QTabBar::tab:top:selected{ + border-top:0px; + border-left:0px; + border-right:0px; + border-bottom:2px solid $main1; +} + +QTabBar::tab:bottom{ + width:80px; + height:30px; + border-top:2px solid transparent; + border-left:0px; + border-right:0px; + border-bottom:0px; + +} + +QTabBar::tab:bottom:selected{ + border-top:2px solid $main1; + border-left:0px; + border-right:0px; + border-bottom:0px; +} + +QTabBar::tab:right{ + height:80px; + border-top:0px; + border-bottom:0px; + border-right:0px; + border-left:2px solid transparent; + +} + +QTabBar::tab:right:selected{ + height:80px; + border-top:0px; + border-bottom:0px; + border-right:0px; + border-left:2px solid $main1; + +} +QTabBar::tab:left{ + height:80px; + border-top:0px; + border-bottom:0px; + border-left:0px; + border-right:2px solid transparent; + +} + +QTabBar::tab:left:selected{ + height:80px; + border-top:0px; + border-bottom:0px; + border-left:0px; + border-right:2px solid $main1; +} + + +QTabWidget::pane +{ + border:1px solid $border; + padding:6px; +} + + +/* =============================================== */ +/* QHeaderView for list table */ +/* =============================================== */ +QHeaderView { + background-color: $main2; + border: none; + margin: -1px; + padding: 0px; + height:30px; +} +QHeaderView::section, QTableCornerButton::section {/*设置表头属性*//*左上角*/ + background-color: $main2; + padding: 0 3px; + height: 30px; + border-top: 0px solid $border; + border-left: 0px solid $border; + border-right: 1px solid $border; + border-bottom: 1px solid $border; + border-radius: 0px; +} +QHeaderView::section:hover, QTableCornerButton::section:hover{ + /*background-color: $main4;*/ +} +QHeaderView::section:pressed{ + background-color: $main1; + color:$main3; +} +QHeaderView::section:checked { + background-color: $main2; + color:$text1; +} + +QHeaderView::down-arrow +{ + subcontrol-position:center right; + padding-right:10px; + image:url(../../resource/zh/public/$path/icon/box-down-normal.png); +} + +QHeaderView::up-arrow +{ + subcontrol-position:center right; + padding-right:10px; + image:url(../../resource/zh/public/$path/icon/box-up-normal.png); +} + +/* =============================================== */ +/* QAbstractItemView */ +/* =============================================== */ +QAbstractItemView +{ + show-decoration-selected:1; + selection-background-color:$main4; /*鼠标选中时背景色*/ + selection-color:$main3; /*鼠标选中时前景色:文字颜色*/ + /*设置交替颜色,需要在函数属性中设置:tableWidget->setAlternatingRowColors(true)*/ + alternate-background-color: $main5; + background: $background; + color:$text1; + border: 1px solid $border; +} + +QAbstractItemView::item +{ + radius:0px; + min-height:30px; + border: 0px; + padding: 0px; +} + +QAbstractItemView::item:hover{ + background: $main4; +} + +QAbstractItemView::item:pressed{ + color: $main4; + background:$main4; +} + +QAbstractItemView::item:selected:focus { + background: $main4; + color: $main1; +} + +QAbstractItemView::item:selected:!focus { + background: $main4; + color: $main1; +} + +QAbstractItemView::item:selected:active { + background: $main4; + color: $main1; +} + +QAbstractItemView QCheckBox::hover{ + + background: $main4; +} + +QAbstractItemView QCheckBox::pressed{ + color: $main1; + background:$main4; +} + +QAbstractItemView QCheckBox::focus{ + color:$main1; + background: $main4; +} + +QAbstractItemView QCheckBox::selected:focus { + background: $main4; + color: $main1; +} + +QAbstractItemView QCheckBox::selected:!focus { + background: $main4; + color: $main1; +} + +QAbstractItemView QCheckBox::selected:active { + background: $main4; + color: $main1; +} + +QAbstractItemView::indicator::unchecked{ + border-image:url(../../resource/zh/public/$path/icon/ckb-normal.png); +} + + +QAbstractItemView::indicator::checked{ + border-image:url(../../resource/zh/public/$path/icon/ckb-select-hover.png); +} + +QAbstractItemView::indicator:indeterminate { + border-image:url(../../resource/zh/public/$path/icon/ckb-ptck.png); +} + +QAbstractItemView::branch{ + background-color: $background; +} + +QAbstractItemView::branch:alternate +{ + alternate-background-color: $main5; +} + + +QAbstractItemView::branch:hover{ + background: $main4; +} + +QAbstractItemView::branch:pressed{ + color: $main4; + background:$main4; +} + +QAbstractItemView::branch:focus{ + color:$main1; + background: $main4; +} + +QAbstractItemView::branch:selected:focus { + background: $main4; + color: $main1; +} + +QAbstractItemView::branch:selected:!focus{ + background: $main4; + color: $main1; +} + +QAbstractItemView::branch:selected:active { + background: $main4; + color: $main1; +} + + +/* =============================================== */ +/* QListView QListWidget */ +/* =============================================== */ +QListWidget, QListView +{ + gridline-color: $border; /*表格中的网格线条颜色*/ + border:1px solid $border; /*边框线的宽度、颜色*/ + /*border:none;*/ /*去除边界线*/ + /*border-radius:5px;*/ + /*padding:10px 10px;*/ /*表格与边框的间距*/ +} + +QListView::item, QListWidget::item{ + background: transparent; + outline-style: none; + border: none; + padding: 0px 10px 0px 10px; +} + +/* =============================================== */ +/* QTableWidget */ +/* =============================================== */ +QTableWidget, QTableView +{ + gridline-color: $grad1a; /*表格中的网格线条颜色*/ + border:1px solid $border; /*边框线的宽度、颜色*/ + /*border:none;*/ /*去除边界线*/ + /*border-radius:5px;*/ + /*padding:10px 10px;*/ /*表格与边框的间距*/ +} +QTableView::item, QTabWidget::item{ + background: transparent; + outline-style: none; + border: none; +} + +QTableView QLineEdit +{ + /*background: $background;*/ + border-radius: 0px; + padding: 0px; +} + +QTableWidget QComboBox{ + /*background: $background;*/ + border-radius: 0px; + /*margin: 2px;*/ + border: none; + height:28px; +} + + + +/* =============================================== */ +/* QTreeWidget QTreeView */ +/* =============================================== */ +QTreeWidget, QTreeView +{ + background:$background; +} +QTreeWidget::item, QTreeView::item{ + background: transparent; + outline-style: none; + border: none; +} + + +QTreeWidget::branch,QTreeView::branch { + background-color: $background; +} + +QTreeWidget::branch:hover,QTreeView::branch:hover{ + background: $main4; +} + +QTreeWidget::branch:pressed,QTreeView::branch:pressed{ + color: $main4; + background:$main4; +} + +QTreeWidget::branch:focus,QTreeView::branch:focus{ + color:$main1; + border-color: $main4; +} + +QTreeWidget::branch:selected:focus,QTreeView::branch:selected:focus { + background: $main4; + color: $main1; +} + +QTreeWidget::branch:selected:!focus,QTreeView::branch:selected:!focus{ + background: $main4; + color: $main1; +} + +QTreeWidget::branch:selected:active,QTreeView::branch:selected:active { + background: $main4; + color: $main1; +} + +QTreeView::branch { +width:9px; +height:9px; + background-repeat: no-repeat; + background-position: center; +} + +QTreeView::branch:closed:has-children { + image:url(../../resource/zh/public/$path/icon/arrowRight.png); +} + +QTreeView::branch:closed:has-children:hover { + image:url(../../resource/zh/public/$path/icon/arrowRight.png); +} + +QTreeView::branch:open:has-children { + image:url(../../resource/zh/public/$path/icon/arrowBottom.png); +} + +QTreeView::branch:open:has-children:hover { + image:url(../../resource/zh/public/$path/icon/arrowBottom.png); +} + +/* =============================================== */ +/* QAbstractSpinBox spinbox QDateTimeEdit */ +/* =============================================== */ +QAbstractSpinBox { + background: $background;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color:$main1; + selection-color:$background; + border: 1px solid $border; + border-radius: 4px; + padding: 0 10 0 10px; + height:30px; +} + +QAbstractSpinBox:hover { + border-color: $main1; + selection-background-color:$main1; + selection-color:$background; +} + +QAbstractSpinBox:focus { + border-color: $main1; + +} + +/*SpinBox向上按钮样式*/ +QAbstractSpinBox::up-button { +margin: 5px 5px 5px 5px; + height:7px; + width:11px; + image:url(../../resource/zh/public/$path/icon/box-up-normal.png); + } + +QAbstractSpinBox::up-button:hover { + image:url(../../resource/zh/public/$path/icon/box-up-select.png); + + } + +QAbstractSpinBox::up-button:pressed { + image:url(../../resource/zh/public/$path/icon/box-up-select.png); + + } + +QAbstractSpinBox::up-button:disabled{ + image:url(../../resource/zh/public/$path/icon/box-up-normal.png); + + } + +/*SpinBox向下按钮样式*/ +QAbstractSpinBox::down-button { +margin: 5px 5px 5px 5px; + height:7px; + width:11px; + image:url(../../resource/zh/public/$path/icon/box-down-normal.png); + } + +QAbstractSpinBox::down-button:hover{ + image:url(../../resource/zh/public/$path/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:pressed{ + image:url(../../resource/zh/public/$path/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:disabled{ + image:url(../../resource/zh/public/$path/icon/box-down-normal.png); + +} + + /* =============================================== */ +/* QComboBox */ +/* =============================================== */ +QComboBox{ + background: $background;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color:$main1; + selection-color:$background; + border: 1px solid $border; + border-radius: 4px; + padding: 0 10 0 10px; + height:30px; +} + +QComboBox:hover +{ + border-color: $main1; +} + +QComboBox:focus { + border-color: $main1; +} + +QComboBox QAbstractItemView +{ + selection-background-color: $main4; + selection-color:$main1; + alternate-background-color: $main5; + background: $background; + border: 1px solid $border; + padding: 10px 0px 10px 0px; +} + +QComboBox QAbstractItemView::item:selected:active { + background: transparent; + color: $main1; +} + +QComboBox::drop-down { + border-image:url(../../resource/zh/public/$path/icon/box-down-normal.png); + margin-right: 10px; + height:7px; + width:11px; + subcontrol-origin: margin; + subcontrol-position: center right; +} + +QComboBox::drop-down:hover{ + border-image:url(../../resource/zh/public/$path/icon/box-down-select.png); +} + +QComboBox::drop-down:open:!hover { + border-image:url(../../resource/zh/public/$path/icon/box-down-normal.png); +} + +QComboBox::drop-down:open:hover { + border-image:url(../../resource/zh/public/$path/icon/box-down-select.png); +} + +QComboBox::drop-down:disabled { + border-image:url(../../resource/zh/public/$path/icon/box-down-normal.png); +} + +/* =============================================== */ +/* QCalendarWidget */ +/* =============================================== */ +QCalendarWidget QWidget{ + border: none; + background-color: $main3; + color:$text1; +} + +QCalendarWidget QWidget#qt_calendar_calendarview{ + border-left: 1px solid $border; + border-right: 1px solid $border; + border-bottom: 1px solid $border; + background-color: $main3; +} + +QCalendarWidget QWidget#qt_calendar_navigationbar { + background-color: $main2; + border: 1px solid $border; +} + + +QCalendarWidget QMenu{ + width: 80px; + background-color: $background; + border: 0px solid #cccfd9; + color:$main1; +} + + +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: transparent; +} + +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: transparent; +} + + +QCalendarWidget QAbstractSpinBox { + background: $background;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color: $main1; + border: 1px solid $border; + border-radius: 0px; + padding: 0 10 0 10px; + height:30px; +} + +QCalendarWidget QAbstractSpinBox:hover { + border-color: $main1; +} + +QCalendarWidget QAbstractSpinBox:focus { + border-color: $main1; +} + +QCalendarWidget QToolButton:pressed,QCalendarWidget QToolButton:checked:hover{ + color:$main1; +} + + +QCalendarWidget QToolButton#qt_calendar_prevmonth{ + width: 40px; + qproperty-icon: url(../../resource/zh/public/$path/icon/arrowLeft.png); + background-color: transparent; +} + +QCalendarWidget QToolButton#qt_calendar_nextmonth { + width: 40px; + qproperty-icon: url(../../resource/zh/public/$path/icon/arrowRight.png); + background-color: transparent; +} + +QCalendarWidget QToolButton#qt_calendar_monthbutton { + padding-right: 10px; + background-color: transparent; +} + +QCalendarWidget QAbstractItemView +{ + selection-background-color:$main1; /*鼠标选中时背景色*/ + selection-color:$main3; /*鼠标选中时前景色:文字颜色*/ + /*设置交替颜色,需要在函数属性中设置:tableWidget->setAlternatingRowColors(true)*/ + alternate-background-color: $main5; + background: $background; + border: 1px solid $border; +} + + diff --git a/resource/en/sys_ctrl/translate/sys_ctrl_en.mo b/resource/en/sys_ctrl/translate/sys_ctrl_en.mo new file mode 100644 index 0000000000000000000000000000000000000000..b9cae9bf8829a96e83fa59d0f2ab83e55891665e GIT binary patch literal 4073 zcmaKtU2GiH6~~7HEo}Lw(DHptv$TBdX5$8M)&waDNn|xi-8w;$5K6~0ch^H_XO@{+ z!t#I|z=;z(iBaMNH73EK2va3%6HsEjG3i64KJ}#!Evf`hp4qVkLPCA6`ak#1?9SqK zt~~qmz4zRE&-tHoXTG}Qx(NmCF+BIdD8 z=eZ#HIswu?e+9|zU*Ln_Qq;fUhjRQr@K%gxBR&hRMt=wR3-ERDUhr(h1u%{N7a+y+ zKakG->5t_8>mu$3X?}0SaWISiM2zV!W79@Qxf~4<%K-%YV1V19%u7sv)XxiXEYehSC;|@Q;=TKNOPo8 zG}4K35jV;snMzKYzS&eA>Ts!5^RT z4^1nJbBBZDGr`!t#-HAjLyeE?{^`+tT37u2!~Xeq{P|`Ipx>q8=ur0^)riCrhd22^b2YC z#mLL=&BUXpJ`GOHhP7FLVIm$Pu}?RS%x>J!zgc=Fm5Y=bs)wJyt%#J6)yfuUJ_u*d zM$>bn;g#`lYOJY@KXMZO#YYNL^xGYgqiw#)A)#$lE%jr;>B(pxnP;hMhoMOQ$f{X_ zvQGgCF_rMp8;v(U^T!V_&K>FPLxK8ZpP@cv)dlYl1#m)`$f8lgBbWT6C*soX9HF$4 zVx;v*Pg!JbQ|^jWFQoMsn|EYsYM$zS`34=92b1UIxw1;ygqLT-BAA?)F?HSm(@Sqo zHx@2*n3mf%PSsi^6xKe+ZHg}Fdk4aq{jsYvm;B+8C_%#){o0$-HE2sWcleW~ljmDy zr{I>8xkyXF8H>_fwbq^R`s?V%As+rkhJ0&;Itg`63>(}%!`S1E% zPil8&E4R2KeeJWkZg}k1*|piVn33JgM%CqI)f>#SY<6|>&vmrbZq=n{kLEdMYe~Od zaWuY3dYfm`-R6eB;nlsiqr2M-*UPisHQhV*Z0aE-HsGqG4ff&GOb+L!lnv#wX=thk z{poe*daC1bUD;*1m2%mp|K(Vv%si3}ABvrWoRxUVcB;%Y1{@XC4V_uG$M~xVQ?pBD zlY88(J^?{EqGXzB<5x9JR(9;7qn2EzS~~Lvxy3xJ_iT9zQ;W!lvPCsa9E?%T;V23Q zB|KhYhE;&((pgp0xa-CqDBEn6GK9mef>A_%L_`Jblc%@}V#mbBChR*HEBzz@f{hl4 zE>l|~ym@*=4XhS+k2Ft`gavW;VUifgygF73-BhoFl zY^h_HpI_O+3D*O{)9p_>D};}9C*eqF z(=HlXTlr9SIvFv;6~&P_A>rc76;1^JflQPwvkP&k++|M1vgj-+HQ6K;{GD7W;%<*e z&U6}!WNg;7!`+JM#X9uMGIJ?qaRIc3%5)c+={2iLWIm|2?oBkL+wh()gt$-Q##pw_ znWdIEYfeHeZBT^X+xJ9#QwF*AM=>TAw3Ty0HG9CrMGPIB*_;SPVl|Wo7qI5c2o3^H!NCm{d z>dw+m=VjBb(k-~Ub*#B=pvdq!swNJ{cSODi3#M9B`s52xl#~tk9g@Rk0~~KM`Cg;~ zr?>{_MTyDQ61w*^6JJMGFdWy5=e1^~#NI5g08x4Iv})pIs#nQ5*OM>c=w{-@Z10sX KT#>-&HT-|P2?_TA literal 0 HcmV?d00001 diff --git a/resource/en/sys_ctrl/translate/sys_ctrl_en.po b/resource/en/sys_ctrl/translate/sys_ctrl_en.po new file mode 100644 index 00000000..5c61a8a5 --- /dev/null +++ b/resource/en/sys_ctrl/translate/sys_ctrl_en.po @@ -0,0 +1,273 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2024-05-16 09:54+0800\n" +"PO-Revision-Date: 2024-05-27 09:51+0800\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 3.4.4\n" +"X-Poedit-Basepath: ../../../../../src/sys/sys_ctrl\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: I18N_C;I18N\n" +"X-Poedit-SearchPath-0: .\n" + +#: BaseCfgParam.cpp:86 +msgid "未实现BASE应用信息加载逻辑" +msgstr "Not implemented BASE application infomation loading logic" + +#: BaseCfgParam.cpp:96 +#, c-format +msgid "加载配置文件:%s失败" +msgstr "Loading configuration file: %s failed" + +#: BaseCfgParam.cpp:116 +msgid "未实现应用信息加载逻辑" +msgstr "Application infomation loading logic is not implemented" + +#: StartCfgParam.cpp:46 +msgid "获取本机部署信息失败" +msgstr "Failed to obtain local deployment information" + +#: StartCfgParam.cpp:67 StopCfgParam.cpp:269 +#, c-format +msgid "获取应用%d信息失败" +msgstr "Failed to obtain application %d information" + +#: StartCfgParam.cpp:75 StopCfgParam.cpp:277 +#, c-format +msgid "获取%s应用的进程列表失败" +msgstr "Failed to obtain the process list of the %s application" + +#: StopCfgParam.cpp:38 +#, fuzzy +#| msgid "获取本机节点信息失败" +msgid "获取本地节点信息失败" +msgstr "Failed to obtain the local node information" + +#: StopCfgParam.cpp:132 +#, fuzzy +#| msgid "获取本机应用信息失败" +msgid "获取本地部署的所有应用信息失败" +msgstr "Failed to obtain information about the local application" + +#: StopCfgParam.cpp:189 +#, fuzzy +#| msgid "获取本机应用信息失败" +msgid "获取所有应用信息失败" +msgstr "Failed to obtain information about the local application" + +#: StopCfgParam.cpp:206 StopCfgParam.cpp:244 +#, c-format +msgid "打开内存表[%s]失败" +msgstr "Failed to open memory table [%s]" + +#: StopCfgParam.cpp:231 +msgid "查询应用下运行的进程列表失败" +msgstr "Failed to query the list of processes running under the application" + +#: StopCfgParam.cpp:256 +#, c-format +msgid "获取应用[%d]的启动顺序失败" +msgstr "Failed to get the startup sequence of application [%d]" + +#: SysCtrlApp.cpp:57 +msgid "进程已存在,不允许再次启动" +msgstr "The process already exists and is not allowed to start again" + +#: SysCtrlApp.cpp:167 +msgid "创建系统信息访问库失败" +msgstr "Failed to create system information access library" + +#: SysCtrlApp.cpp:195 +msgid "内存库未完全退出,请退出所有程序后再尝试启动" +msgstr "The memory library did not exit completely, please close all programs and then try to start again" + +#: SysCtrlApp.cpp:220 SysCtrlStop.cpp:40 SysCtrlStop.cpp:58 SysCtrlStop.cpp:82 +msgid "系统未启动" +msgstr "System does not start" + +#: SysCtrlStart.cpp:45 SysCtrlStop.cpp:143 +msgid "获取本机节点信息失败" +msgstr "Failed to obtain the local node information" + +#: SysCtrlStart.cpp:93 +msgid "打开内存表失败" +msgstr "Failed to open memory table" + +#: SysCtrlStart.cpp:109 +msgid "查询表记录失败" +msgstr "Query table record failed" + +#: SysCtrlStart.cpp:130 +msgid "系统已启动" +msgstr "System has started" + +#: SysCtrlStart.cpp:140 +msgid "启动失败" +msgstr "Startup failed" + +#: SysCtrlStart.cpp:145 +msgid "启动成功" +msgstr "Successful start" + +#: SysCtrlStart.cpp:153 +#, c-format +msgid "开始启动进程:%s" +msgstr "Start process:%s" + +#: SysCtrlStart.cpp:165 SysCtrlStop.cpp:240 +#, c-format +msgid "不支持的启动类型:%d" +msgstr "Unsupported startup type:%d" + +#: SysCtrlStart.cpp:176 SysCtrlStart.cpp:467 SysCtrlStop.cpp:199 +msgid "获取应用信息失败" +msgstr "Failed to obtain application information" + +#: SysCtrlStart.cpp:180 +#, c-format +msgid "开始启动 %s 应用" +msgstr "Start the %s application" + +#: SysCtrlStart.cpp:186 +#, fuzzy, c-format +#| msgid "应用%s启动失败" +msgid "%s 应用启动失败" +msgstr "Application %s failed to start" + +#: SysCtrlStart.cpp:191 +#, fuzzy, c-format +#| msgid "应用%s启动成功" +msgid "%s 应用启动成功" +msgstr "Application %s started successfully" + +#: SysCtrlStart.cpp:201 SysCtrlStart.cpp:237 +msgid "获取进程目录失败" +msgstr "Failed to obtain process directory" + +#: SysCtrlStart.cpp:218 +#, fuzzy, c-format +#| msgid "开始启动进程:%s" +msgid "开始启动进程 %s" +msgstr "Start process:%s" + +#: SysCtrlStart.cpp:222 +#, fuzzy, c-format +#| msgid "启动进程:%s失败.[%s %s]" +msgid "启动进程失败:%s.[%s %s]" +msgstr "Start process:%s failed.[%s %s]" + +#: SysCtrlStart.cpp:226 SysCtrlStart.cpp:261 +#, fuzzy, c-format +#| msgid "启动进程:%s成功" +msgid "启动进程成功:%s" +msgstr "Start process:%s success" + +#: SysCtrlStart.cpp:254 +#, fuzzy, c-format +#| msgid "启动进程:%s失败" +msgid "启动进程失败:%s" +msgstr "Start process:%s failed" + +#: SysCtrlStart.cpp:266 +#, c-format +msgid "启动应用:%s下的进程:%s失败" +msgstr "Start application: Process under %s : %s failed." + +#: SysCtrlStart.cpp:311 +msgid "查询进程启动结果失败" +msgstr "Query process startup result failed" + +#: SysCtrlStart.cpp:456 +msgid "节点名与IP不匹配,请检查节点配置" +msgstr "The node name does not match the IP,please check the node configuration" + +#: SysCtrlStart.cpp:481 +msgid "请先启动BASE应用" +msgstr "Please start the BASE app first" + +#: SysCtrlStart.cpp:494 +#, c-format +msgid "%s应用已启动" +msgstr "Application %s started" + +#: SysCtrlStart.cpp:514 +#, c-format +msgid "请检查%s应用的进程列表" +msgstr "Please check the process list of the %s app" + +#: SysCtrlStart.cpp:527 SysCtrlStop.cpp:137 +msgid "加载配置文件失败" +msgstr "Failed to load configuration file" + +#: SysCtrlStop.cpp:68 +msgid "系统停止失败" +msgstr "System stop failed" + +#: SysCtrlStop.cpp:73 +msgid "系统停止成功" +msgstr "System stopped successfully" + +#: SysCtrlStop.cpp:89 +#, c-format +msgid "获取应用%s信息失败" +msgstr "Failed to obtain application %s information" + +#: SysCtrlStop.cpp:104 +msgid "请先停止其它应用,再关闭BASE应用" +msgstr "Please stop other apps before closing the base app" + +#: SysCtrlStop.cpp:124 +msgid "获取本应用进程列表失败" +msgstr "Failed to obtain the application process list" + +#: SysCtrlStop.cpp:181 SysCtrlStop.cpp:332 +msgid "查询记录失败" +msgstr "Query record failed" + +#: SysCtrlStop.cpp:203 +#, c-format +msgid "开始停止 %s 应用" +msgstr "Stop the %s application" + +#: SysCtrlStop.cpp:211 +#, fuzzy, c-format +#| msgid "%s应用停止失败" +msgid "%s 应用停止失败" +msgstr "%s application failed to stop" + +#: SysCtrlStop.cpp:219 +#, fuzzy, c-format +#| msgid "%s应用停止成功" +msgid "%s 应用停止成功" +msgstr "%s application stopped successfully" + +#: SysCtrlStop.cpp:226 +#, c-format +msgid "开始停止进程:%s" +msgstr "Stop process:%s" + +#: SysCtrlStop.cpp:245 +#, fuzzy, c-format +#| msgid "停止进程:%s成功" +msgid "停止进程成功:%s" +msgstr "Stop process:%s succeeded" + +#: SysCtrlStop.cpp:249 +#, fuzzy, c-format +#| msgid "停止进程:%s失败" +msgid "停止进程失败:%s" +msgstr "Stop process:%s failed" + +#: SysCtrlStop.cpp:308 +msgid "设置退出标识失败" +msgstr "Failed to set exit flag" + +#: SysCtrlStop.cpp:369 +msgid "更新记录失败" +msgstr "Update record failed" diff --git a/resource/en/sys_login_api/translate/en.qm b/resource/en/sys_login_api/translate/en.qm new file mode 100644 index 0000000000000000000000000000000000000000..49b0ea6273b0294ead12b63de703ac4bde247550 GIT binary patch literal 1460 zcmZ`(Ur3Wt6hE7}RBE4KmW0^sxxlE%2P0A+MG}l&dT4HQuJrqC&hk;QKQkOIbivf1 z!O{|Rn$p%xN6=Fc(OWM;koWEz^oOE{@TuQ-7u%;?8M}Aq-gAEEoZs)*mTP3YPP`MwthJ3#C^E*i|Yu^$@XXU zEz!R7lwb#3Uhh;GW zny3{49vUDAsrVJZ-a}5hg);}N9zYp){jmMiC#(Ui8ocWZDJr*8A$B*(;`jOE(OfiK zFUizEE+BY-9T3=V>H@BY^*U^q$lQ%vAN9g^o6u`naE7g?d1RS~mRNd{C0^+(F&1CZ z*PhBU9iSHAsKE44Z=psTn|Q=u1|^l1Q9Jzm$Yb)IpJd^X#J7?z!FK?k+o;`7Zc|L+ zUiQg|B<9TS81(HD6&5+~5}b6QccbzfrtYhlzy-tl=*Ctmoqe8`HC;znP>vysSID)a zNE6(_JX~%nswWb1AWf*P0w%AKT$RIoY?8emE~>Jp9yaQPs{KW#_(V7xPfM6;glCUn zLN;#>aBj3!WUU(w52EFw3N?Iofsbvn;4)u~^XO7;csf6ll57poU6YXI5Yz8R&E5DK zN(Hck+Cm4_$f9Rv^w{`+HW$YAgiQJqbQuL3PsafW6@VHBtpJEqA4%-3)NvEI@n#KXJTwILe1O~ehAQ)rEcpWOhDU-j + + + + CLoginDlg + + + CLoginDlg + Login + + + + 账号 + Account + + + + 密码 + Password + + + + 用户组 + User group + + + + 姓名 + Name + + + + + 登录 + Login + + + + 取消 + Cancel + + + + 未找到此普通权限 + The permission was not found + + + + 未进行密码验证 + No password verification + + + + + + + + 提示 + Tip + + + + 用户信息错误! + User infomation error! + + + + 密码不能为空! + Password can not be blank! + + + + 密码错误! + Wrong password! + + + + 不具备权限! + Does not have this permission! + + + + 用户已失效! + User has expired! + + + + + 警告 + Warning + + + + 创建数据库对象失败! + create db object failed! + + + + 打开数据库失败! + open db failed! + + + diff --git a/resource/en/sys_startup/translate/en.qm b/resource/en/sys_startup/translate/en.qm new file mode 100644 index 0000000000000000000000000000000000000000..3445f71d1d7536f8de5a666272d084bd9ab141a7 GIT binary patch literal 19968 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 literal 0 HcmV?d00001 diff --git a/resource/en/sys_startup/translate/en.ts b/resource/en/sys_startup/translate/en.ts new file mode 100644 index 00000000..24ffd86c --- /dev/null +++ b/resource/en/sys_startup/translate/en.ts @@ -0,0 +1,1066 @@ + + + + + AppMngForm + + + Form + Form + + + + 节点应用 + Node Application + + + + 状态 + Status + + + + 主/备 + Master/Slave + + + + + 重启 + Restart + + + + 刷新 + Refresh + + + + 启动 + Start up + + + + 停止 + Stop + + + + 升主 + to Master + + + + 降备 + to Slave + + + + + + + 验证 + Ok + + + + + + + 权限验证 + Permission to verify + + + + + 运行中 + Active + + + + + 主 + Master + + + + + 备 + Slave + + + + + + + 异常 + Abnormal + + + + + 已停止 + Stopped + + + + + 未知 + Unknown + + + + AutoStart + + + Dialog + Dialog + + + + 开机自启动 + Auto start + + + + 系统开机自启动 + System auto start + + + + HMI 开机自启动 + HMI auto start + + + + 桌面模式(适合调试) + Desktop mode (suitable for debugging) + + + + 大屏模式(内存占用小) + Large screen mode (low memory usage) + + + + 本次设置将在下次重启生效 + The settings will take effect after the next restart + + + + 自启动设置 + Auto start setting + + + + ButtonForm + + + Form + Form + + + + 验证 + Ok + + + + 权限验证 + Permission to verify + + + + 提示 + Tips + + + + 设置系统开机自启动成功... + Setup system auto start successfully... + + + + 设置系统开机自启动失败...错误:%1 + Setup system auto start failure... Error:%1 + + + + 注销系统开机自启动成功... + The system has been successfully booted... + + + + 注销系统开机自启动失败......错误:%1 + Logout system startup failure... Error:%1 + + + + 设置HMI开机自启动成功... + Set HMI auto start successfully... + + + + 设置HMI开机自启动失败...错误:%1 + Set HMI auto start failure... Error:%1 + + + + 注销HMI开机自启动成功... + Logout HMI startup since startup successful... + + + + 注销HMI开机自启动失败...错误:%1 + Logout HMI startup self-start failure... Error:%1 + + + + 设置桌面模式成功 + Desktop mode set successfully + + + + 设置桌面模式成功...错误:%1 + Desktop mode set successfully... Error: %1 + + + + 设置大屏模式成功 + Large screen mode set successfully + + + + 设置大屏模式失败...错误:%1 + Failed to set large screen mode... Error: %1 + + + + DbCheck + + + 数据库检测 + Database detection + + + + + 连接状态 + Connection Status + + + + 同步状态 + Synchronization Status + + + + 同步状态: + Synchronization Status: + + + + 最大ID主机: + Max ID Host: + + + + 服务状态: + Service Status: + + + + IP漂移主机: + IP Drift Host: + + + + 读写状态 + Read/Write Status + + + + 模型(读): + Model (Read): + + + + 模型(写): + Model (Write): + + + + 历史(读): + History (Read): + + + + 时序库状态 + Time Series Database Status + + + MySQL状态 + MySql + + + + 节点名/IP + Node Name/IP + + + 模型(写) + Model(Write) + + + 模型(读) + Model(Read) + + + 历史(读) + His(Read) + + + InfluxDB状态 + InfluxDB + + + + 正在刷新,无需再次提交刷新! + Refreshing now, no need to submit refresh again! + + + + 正在刷新,请稍后! + Refreshing, please wait a moment! + + + + 查询成功! + Query successful! + + + + %1 + %1 + + + + + + + 未知 + Unknown + + + + + + + 正常 + Connected + + + + + 同步ID相差:%1 + Synchronization ID difference: %1 + + + + 读取失败:%1 + Read failed: %1 + + + + + 未启用 + Not enabled + + + + + 无 + None + + + + 服务未开启:%1 + Service not started: %1 + + + + 刷新 + Refresh + + + + + 异常 + Not Connected + + + 获取域信息失败 + Faild to obtain domain infomation + + + 获取数据库信息失败 + Faild to obtain database infomation + + + + (首链接) + (First Link) + + + + + + + + + + + - + - + + + + DbCheckThread + + + UDP绑定失败,端口号【%1】 + UDP binding failed, port number 【%1】 + + + + + 创建系统信息访问库失败 + Failed to create system information access library + + + + 获取域信息失败 + Failed to obtain domain information + + + + 获取数据库信息失败 + Failed to obtain database information + + + + 获取节点信息失败 + Failed to obtain node information + + + + [%s]数据库类型错误!参数错误,直接默认为数据库状态不正常 + [%s] Database type error! Parameter error, defaulting to database status as abnormal + + + + DogCheck + + + Dialog + Dialog + + + + 加密狗状态: + Supper Dog Status: + + + + 1、请将操作系统信息(re_code.txt)发给系统提供商,获取授权文件 + 1. Please send the operating system information (re_code.txt) to the system provider to obtain the authorization file. + + + + 拷贝操作系统信息 + Copy operating system information + + + + 2、获取授权文件后,进行系统激活 + 2. After obtaining the authorization file, activate the system. + + + + 导入授权文件 + Import authorization file + + + + 加密狗检测 + Supper Dog Check + + + + + + + 提示 + Tips + + + + 选择授权文件 + Select the authorization file + + + + txt (*.txt) + txt (*.txt) + + + + + 重新检测 + Recheck + + + + 异常,错误码[%1] + Abnormal,Error Code[%1] + + + + + 正常 + Normal + + + + MainWindow + + + 应用管理 + Application + + + + 进程管理 + Process Info + + + + 工具箱 + Toolbox + + + + 版本 + Version + + + + + 提示 + Tips + + + + 系统启动失败,请检查所有配置工具和人机界面是否已经全部退出! + System failed to start,please check whether all configuration tools and human interface have been exited! + + + + 错误 + Error + + + 未发现系统模型配置文件,是否打开系统建模工具导出模型配置? + The system model configuration file is not found. Do you open the system modeling tool to export the model configuration? + + + + 开始停止系统 + Stop system + + + + 开始启动进程:%1 + Start process:%1 + + + + + 启动进程:%1失败 + Start process:%1 faild + + + + 启动进程:%1成功 + Start process:%1 success + + + + 开始停止进程:%1 + Stop process:%1 + + + + + + 停止进程:%1失败 + Stop process:%1 faild + + + + + + 停止进程:%1成功 + Stop process:%1 success + + + + 强制停止进程:%1 + Kill process:%1 + + + + 显示 + Display + + + + 退出 + Exit + + + + 系统模型配置信息异常,是否打开系统建模工具检查配置并导出? + There is an exception in the system model configuration information. Do you want to open the system modeling tool to check the configuration and export it? + + + + 加密狗退出 + Supper Dog Exit + + + + ProcMngForm + + + Form + Form + + + + 节点应用进程 + Application process + + + + 进程名 + Process name + + + + 所属应用 + Application + + + + 状态 + Status + + + + CPU + CPU + + + + 内存(MB) + Memory (MB) + + + + 主/备 + Master/Slave + + + + + 重启 + Restart + + + + 刷新 + Refresh + + + + 启动 + Start up + + + + 停止 + Stop + + + + 升主 + to Master + + + + 降备 + to Slave + + + + 强制停止 + Kill + + + + + + + 验证 + Ok + + + + + + + 权限验证 + Permission to verify + + + + + 运行中 + Active + + + + + + + 异常 + Abnormal + + + + + 主 + Master + + + + + 备 + Slave + + + + + 已停止 + Stopped + + + + + 未知 + Unknown + + + + QObject + + + + + + 已设置服务自启动,若需重新设置,请先取消! + The service has been set since the start, if you need to reset, please cancel first! + + + + + + + 设置可执行权限失败! + Failed to set executable permissions! + + + + + + + + + + 文件不存在! + The file does not exist! + + + + + + 服务配置文件不可写,请确认是否具有权限! + The service profile cannot be written, please confirm if you have permission! + + + + + + 写入服务配置文件失败! + Write service profile failed! + + + + 取消服务开机自启动失败! + Failed to cancel the service from starting automatically on boot! + + + + 设置合成器服务开机自启动失败! + Failed to set the compositor service to start automatically on boot! + + + + + + 设置sys_startup服务开机自启动失败! + Failed to set the sys_startup service to start automatically on boot! + + + + 取消rqeh6000_compositor服务开机自启动失败! + Failed to cancel the rqeh6000_compositor service from starting automatically on boot! + + + + 取消rqeh6000_startup服务开机自启动失败! + Failed to cancel the rqeh6000_startup service from starting automatically on boot! + + + 调用系统重新加载配置失败! + Call system reload configuration failed! + + + + 设置服务开机自启动失败! + Setup service startup auto startup failed! + + + + 未设置服务自启动,无需取消! + Do not set the service to start, no need to cancel! + + + 删除服务配置文件失败,请确认是否具有权限! + Failed to delete service profile, please confirm if you have permissions! + + + + + 已设置HMI自启动,若需重新设置,请先取消! + HMI has been set to start, if you need to reset, please cancel first! + + + + 启动器文件不可写,请确认是否具有权限! + Initiator file cannot be written, please confirm whether you have permission! + + + + 删除启动器文件失败,请确认是否具有权限! + Failed to delete starter file, please confirm if you have permission! + + + + 未设置HMI自启动,无需取消! + HMI self-start is not set, no need to cancel! + + + + + + 打开服务管理器失败,请确认是否具有权限! + Failed to open service manager, please confirm if you have permission! + + + + 注册服务失败,请确认是否具有权限! + Registration service failed, please confirm if you have permission! + + + + 注销服务失败! + Logout service failed! + + + + 停止服务超时! + Stop service timeout! + + + + 获取服务状态失败! + Failed to get service status! + + + + + 启动文件无法写入 + Startup file cannot be written + + + + 警告 + Warning + + + + 正在运行 + System still in running + + + + StartUpForm + + + Form + Form + + + + + 系统启动 + System startup + + + + + 系统停止 + System to stop + + + + 验证 + Ok + + + + 权限验证 + Permission to verify + + + + 退出系统前,请将所有配置工具和人机界面退出! + Before exiting the system, please exit all configuration tools and human interface! + + + + StatusForm + + + Form + Form + + + + 加密狗状态: + Supper Dog Status: + + + + + + + 正常 + Normal + + + + 本地网络状态: + Local Network Status: + + + + + 异常 + Abnormal + + + + 未检测 + Unchecked + + + + VersionForm + + + Form + Form + + + + 版本信息 + Version + + + + 主程序 + Main + + + + 数据库 + Db + + + + Web + Web + + + + 主程序路径 + MainPath + + + + 数据库路径 + DbPath + + + + 无版本信息 + No Version Information + + + + + + 已安装 + Installed + + + + + + 未安装 + Not Installed + + + 无主程序路径 + No MainPath + + + + 无数据库路径 + No DbPath + + + diff --git a/resource/en/workBench/translate/en.qm b/resource/en/workBench/translate/en.qm new file mode 100644 index 0000000000000000000000000000000000000000..7b183a4f805adb6491b180a271495506974c42bc GIT binary patch literal 22767 zcmd5^34E2+mA_ed*<6{rOb4j&N!{DqhtGXEBW4gDQ(eetvddG%>Uf;?cetv4~PDKH9x$0 zFW)`)+_Rr^&;6#Hs?7YwrM=r;%^q@Y-hnf37YUK@PeO=sLZloNB6bzVLLsK#FU0uo z3o-XaA?`>M;?mEAh^gQ)|9e7wkS;{pY>c;J?pJvn|C)$@qXnM@k9|h)IQ%^x^Zu2` z@ke+p9L8hOt2|D7Ph`||3o)obWYmra4*xAOtNRKu>RmDB9M-sDnz(V^Z9*iy&132B z#f@L=5@PsbaZ}t|LS%m~ZhQA8to|U66M+7<147(1R8;0A2{B=pSUDKu@I&HU_9H_0 z2a2~o^9k{l+r@7WP7>l9AB*3WgB~%hJmz@5Bh8I&h4B3> z@zOmbg&6uq;wLW;ggktd_=OkZoAGhtW&bCD`)pFe1Al-X>`O{`5_rxSn3R$Y`I}n7 zZimX{z0o|#F#H$wiiI+H%$ ze;NCll=S)L5kic7J?V=o>~Gww$=MGNg`WL7Is1`X?58$4KlP77eEpr|Te{B+QP`e5 zD|;sFMKg~xJChGT4fuVZN&c^r642d~{N97vcz$B?2Zx^oAD>T2FP#kdO(~i47J|vx~ebe`|sX2_ml~7>ojlh z1MF|a&r@Uec_0t-Qu}-ugL(O>Ntdzzkt0*bUB+kchpG2^e*wC^mD=4OdNh1e>Yw)A z13mYrellbcg-h1SKU~iVB z^~{5v6hG$Co6O^cx6%Uh$Zr0P$Nbc^-dQ2&%?=*3debhxGaYs)kH`FJX`dF}06X-P zv`;_$T!_@)@;Kxj9&@haG51YhTsqdf`*mO3IoOvwZt=yxhUZ7e`#dvOK|UIJyrG{j zVe>Y?|D4D4SRN-f`;u0`dWJ)mpiaNmHwH)GyUcud{L zWB$85PR;WTyo`14dCixZjps6c#N*Hk9*e)`%ltFwmv_By$giM(!;ble{N@MHi)0@2 zKJpEn`V{2+O<&d~==rquKL6QH$jt;EM^y4Ssh@9jS{3BL>l^c}quAFMJl^n>FYk$V zz~ADVcnKp2vbWeUpFlm=L82zNs%gg6DSfm|Vl-h&?<``ez=C z4*9<6J1)d+lYCFlE(1OMzOK*Thh3cL``IYaci8p5*F_rS@O57(7jiUxhVO%0Hh@pl zAUv}kjRU6>#T}wn)QcsF_#hyQBL0rr`XveYCAqM!Zbr=l`WQoxdc_P;CYFi@Q6=j2 z$K!fVb-O*CX?|La7qdk*WoZ^qFytz})9O{Gh;%CJ&{@QY;@^x8U=4IOT4CA;iB zF3i5uw0(;@Y^GAjDM>l`Vt4|ii$YN@YM7CraGQcrTWSMIiK2{J$2{{VFZNTl{Si7_m|Z<_$dcMDMP)-e)(4I#;=Y z^r{qX05zBD(>%cqCjyPG6Z~Q(R;|QZe(bsqKh;>X0=sTtd~_h*(1z8))vqXBTZ3C& z8RG?j3OUUzmPw&=ZJ`4jdrlp7!zL=+XU5nDz={6-@rH@ksJiWVG!U#gV zxJN8DL61PdV(c3{2UQjr6N(p=Ro5;cbdm~}HPp^-D64OfT0BHdht!vVdSxIv>6l;Y zv~@fErq3wxE2kR+d%HsGp2fyg*|q`e4+@3{;=3|{;b8wtxqcO-Dl$$3f-iLkyW6h} zG{+4qxy>qUn8c*UL@J-Y!O*d@!86BPXcoyx7A+7;~Rq-)C%bEHXIEQ+L}RG4Bx1W-qM&g@lMWjN?I zI}J-xI5QvS(i{(af(MR;jvWrSXuQRK#ZC@z=yNwhLWE`n?VN=C*HGepL3u^6q( zUrKK8)7yKuoDFO`GMd)0Opg`g^ao?cIsQBZzPuDrivgcvFILoAxz=QTV&9U|!0FY& zXSxyC!lz$4z1smOiYVHGR~8%*g@F`8)Jx-&E93Aon4ZzXSlX*>TC23am>cTs9zEHy zY7su)nE=AE5X+MfJvL1557{A&w?=--bv65&o3AuupS)q&Qw;NdO@4{|_Z+He`%2e}#wttr5!bvQl-UvyFO1-88qXgQ{I zZ3!G|4E#&816-m+8mQ`1;sQJNJ081H;YmiPiYPAFZiz#|M- zI0Ib)fGk4OAzmb|hG_N;>}^yIKT}d1UMq;TgxjOQj^hvdBpkd7$O_ z;bIn4gJ?nlhnvI5))}7~Xg?C_JjgyF+aUr&kcn_ER}E0PFyABuBz6`966iRf>}$?d z*6wmKAcJi%s1)EZK`I1y6Ex3SJ^%(t4}cFbdbt>@{zjiE{;I@hEo)i^I#Vu8;y`9e zFG1jQ8DLQ4T_X%~FrHWi}B-|+f zr5&@{E|+T(K4ti~1Un!Fs{w`v7K3b9ggQ?KJCM9?axPnL;WcfB79=~pKyH{KbV8yM z-}oU9l%n`SG;-a9ghnVDDMe{e1KdY+38L~a*PU`0EtVJ}&dyGy?df256RJMim+cM_ z%7|nc2_hFiEE1e)Dk01Su0*2oGf2qBn?%+RU3PICkU0o$ z7!#GHLo(uLH*3=XJfW{n&ad2GTpH}&tQ^~|?OIk~slV zrYBfpNnI&Suf_(n4YIse;(Mz%WLqyo0zl$)jEt;X$*uIE5liRlJ~DW`8@7w1^lYVd zHU7XKAmPD1FM|uc-8&Ip_MGZ6=E&k#weeqAV2iJ+2Gd$Uohz+TB5(5}fko0AgS z<$P!&74YZ@O+?B}$)q3jScIJs^`byyMy8YW@;D) z-rvq>TIK`8MjS2T4*281@9Bvoi{XDlKvepghB+qoSXf$JFoom)|$Q4|Fl zBuZS>jJ$j%FVD5jDAxXi$d?tLQj4D;Z&8Ew43kU-niPcvgY`W+@yW%kD)Ai%5$_-m zoLzx`qa}2544T=u!ed85ffenWRFu`vDjV8d&Zrkk@wKN2l(NAK>M}A124xl8n)1Th zz?K%IeP*$}bh@d&>N^#+l~s8SD;h4HUaz!n4tDS2N5~7G-J@(<3-wg_yr~H_?7;SQ zJ>4fr#1o5a7Z|zS_r*j>-9jjqW@ya#6E7*2xQbm!%StLq3i_zz2dT0K!9+uSzj+gB zzfvy(CUoJ_X&dMEpq#C4?_6WxWqDj<-NrzGCzeqVHU=9~8K^Ii0!sOF#}L6}f@+;z z>?+>GR0>Vl5^3m@^;rax5MiijO@7bHya7tn{@z`Ol}+tTbVI?dtB!=nUIL-jT#(s0 zkq;ohkuT=zd+4Who>tZz(LB(qheqVjbuu)^1~qbg>tmQ4-(ET`4=k)$PPDMKY|Yld=AnG!Z%nG6T&g zLoYw&R7vNqC^4eC8rvjt{S0rdG%DbM4TB#o~2ev+%r&nK9frJQ=U*eQh zOZuvyCbHjTX{G#eD>-neLlLYrL5II!~KI1ERx0XM!}#(z5b z22ER0Rk5t0th~BvDOs4R6;=K*dF5qnXHrUP>XtQVB|gi zd`X?OP}Z5S+gGe8I%Z^o{~Q`n^{yH}Y|V}OL8=-A9C!{PzGQ;~$PjR|5sM zZ5U9%V#qV)mxK!ijSEbU--i`gY?VD{gX?8$fdlmIQGg~rC*`3NH)BfUQ<#VL5$d4%XP zFkEj{uq?{m3SlQlIJ$M)TExB+w+U-e0U+bY@eK#De27QFLvEPMFQor2%?glWEw`i~ zk2HzCS&rWtKq!J_6r4!vsrE?U(n`imql%KJoY|tRZ{el~_77Z0QJU5TT4W_|&554w z?fj<#(tfvXMRc5Q6RyFzw;R|Mx>qLkp)xFQo%%g$#3&Gh&qcos(TF8x=V-2$8Hded zLY+sLnt|P`;pIb5oN*=Pg~rw4h#5uCh}+)79+tU1JVwR|TxH|LN;^T92mBzD79Sf$ z;Q_3$NDzV@%{b9FBJJcEWs7R&EUKxjT`sFIR0Y>+c<#_Gak6fU>??4fOmwoZ;2!W% zqXGq7hNtu?8}=)mYlF=@dK(*+b@DL74vUU>$ZT_I${k-fYRE2^D5x}KGJ(@c;093(NW&7>0n@r=H<(%C8(=a;SXz16 zBD`jZT}smlo7lQRjA*~?@{)%1f@2tJQ8a2^p1{tt>Uo)c%3!tHN)Z7?_EcV!f+`GC z?Bj!DmeWh8W$oGy=htAfxkRUlrP=JWnJ0RWg$pr-%%Jx-6GY}>5x4oSF;dLQ9!@}7M1bI;u2nb{6*a;WQEQBDB9i$>ujA{53pEr z^BCKfu?UzbCulzsSdZSa^}TCa&~b&Md1cK><;jgbU0pbw4sP4n`_w_zYn^;C*xjnE z>F9l;g9$0aMLQWuTMRNL!)eHk>8N;BROCV~@)ARbk?d9tH_SAkz0uC=Knbm2Y7K%- z>Itfl7va)JWZDx9XE8Pp5GdCTf0)8aICGB!jd1JJ3S4_)E;GLgE1E}9m=VZFk`hfa zh!RG*g#r{q)@Q5rC3#ZETvcn6vj21}b2G4h3(S_vi|#Hum6IG{kx+%IVpGFQcqyJp;g46y;BxV%=19ZuNnxUhM414I4H#C1xHs7A_lL$1J5W!ErmzToK} zDlfE#*1Z&1zcaXJryI0Hhx7G>_qn>KHVGAbUOFkn8Jn>S27-_Sr}u8_CL8rDeUgXE zRBn$)i15>A)K)H1Qx0LQFI_W~Rbr$O>KkfV~Q5yM+A1~{fgbu+**D^ZKb z^xb=v(?;YKhF@3c#t*D-RF3a6y73*WM$w4km~#!%P6te{BsIlJ<_<8^l?2C(k&tWm zu@@?>I`trEpKpCIX*5b;^DAHBOqEX#( zaLfvu;X0l)r?*-qKx@dNxQyI3_s1LYr<#0n>s08(8uW{)M>Gku?kRt`s)8>>Ot$oJ z*nu+x)xsZWX%5hhrLs}~#n}=s#c_=J@XBr34N)AL8IeC%Jv21N0ug&AphfwdjZm|s z5knd=JD;am@9!Afn4%uN$&5|e)nVNOuJD{>SEhBqU=YDXZa9=I|k@mf=Iazc?r&Iv@UpKXE|sYK<6+s$n|Q2+YWZ) z@Q$J>T7~QZ`6B(m62I|Yw6h`VexW>!d)UZ()TmuD)|}1CDSO_gHBm*&vs={sO5+wC zM74H89_i@!>KHafHGD*DZfe&AE{d({)+Lh>V%b55Ti~T_tQ}-*ESk4Lzsllv#ewe} zutPQ!fkfXb-1fFSs<@IkQM&9@6N>aT;p60;U>kxm1sCn~+W`8_AfjdS5%lWuu@*nT z1Xk8Gv23{sP=}*@sTr;CJEr78yBlMuhgQ$}d+)zM-@j@%wcB4`mINDJt$>lm+BKhR z51fqEyRy)#KUQIgR%@nkD$08d%H$6APU{W0TE&^5v)NFX2xrG8al^qMHJ0e7$8JKj zTZe9^mEAdA3w!is=_%Wt&93kNVTit|8wT33^G+KdlW2C=PbtjD;)Y;5Oi;pWXr-d!{ZdG@*?k4-(RO6i(iXe)DH7$d6kXp#1vg>m3A!_ zHUb2r{OwdTZ5Ew){yk0w3@YEI7Weq3_WBko_){0=m8$)w+J1_i2H~?r`;!s4m5gT_ zmMztpm1gO(ver|$xr)r5eO6TE6#JwM`Jx4*>TW6Dz_?TOo3ByXXZF``^%Np#CDUzr zQ31`>8#?WC$4Gm|xe>iHfi!Em%wVYQKigztjDDtmfxXWwdtV5iK|}0bHZiiR$qxI9 z9c}grU#_Rk4u#H$4Ke3UP#{?+BWB~}2R`kz$Nb6+8~?2pcRxIun;%pmS>Fg@gOmw! zn%i3V_5l=A&xlg}Xm9E1J`+0Gshs@*$yMs?l}j6{mdvhd&;>FVVCZHjB_~?=PuZvA zjK~C*d-M39B@EaID&c~J2X3QEl* zUi$M%=rl6U0$gxP*QTJZMPAXMt52UAk+M_~r!zTg8TPtUnyfvvBE!IONE(S)N} zTXPJcy-C5^C`aKC)gdT<(e5+Qp|Z7>Jd`^~*zM%yQJO9Ewl*(OEvh*2X zgLI#TZ@`#~4xAHfIixvOt;HNN3=}LF6~bXgi_3=gY~aUlH$f{*=uD^D2=BrwQb~hq zB+ry?)44O}bB3ky@dBaFqoIyQ^+KZyK(Ev+%7`mW-LFYXJI;xp4?k_7tlNaw94`O_ z4>U$poE+2Abc57I6HO@j%n-vPHpBvy!yPi~L?q(`Nkxytr!dkm1WBQGtgFFsgCx&a zBSOlMo8y?1f&+_tqSp=`TOT^KCJY+UxltF+(hD3kdE~H-@+4|Tuov;@=!fK&j;NQ& zLN7Hc087(hP&SwJ=teNtF6Fjy(<88{Bh=D{OCDkH&yyD%NxaA_Y9ys=&{XNu2&*#4 z#P3W#-cygS_qQ^I!!v#Y!VT&r)$XrQqb#wDlP1Hv>)-13QR{Hm9lZ-Ne8YNuyOs55|eD4pgM-}(^ zh^lMcnlD7a#L0l##H)kypqmfS!cfS7KnR7=4TN72btC$?&xNH|6Z*MK_afmWrJ+c| zaF`y{VqtQ_Z2BMW1vxJJ`UiPOjtgdK!XnGMpn0PZ*epjk8O2uYJI$R6UOs+_7`ddO zS%KUM-Bz%?3@_AtJbYY6$IFx0 UtS=3U`Xx9voSG2-$Hv6`9|c*p8vp + + + + AppMngForm + + + Form + Form + + + + 节点应用 + Node Application + + + + 状态 + Status + + + + 主/备 + Master/Slave + + + + + 重启 + Restart + + + + 刷新 + Refresh + + + + 启动 + Start up + + + + 停止 + Stop + + + + 升主 + to Master + + + + 降备 + to Slave + + + + + + + 验证 + Ok + + + + + + + 权限验证 + Permission to verify + + + + + 运行中 + Active + + + + + 主 + Master + + + + + 备 + Slave + + + + + + + 异常 + Abnormal + + + + + 已停止 + Stopped + + + + + 未知 + Unknown + + + + AutoStart + + + Dialog + Dialog + + + + 开机自启动 + Auto start + + + + 系统开机自启动 + System auto start + + + + HMI 开机自启动 + HMI auto start + + + 桌面模式(适合调试) + Desktop mode (suitable for debugging) + + + 大屏模式(内存占用小) + Large screen mode (low memory usage) + + + 本次设置将在下次重启生效 + The settings will take effect after the next restart + + + + 自启动设置 + Auto start setting + + + + ButtonForm + + + Form + Form + + + + 验证 + Ok + + + + 权限验证 + Permission to verify + + + 提示 + Tips + + + + 设置系统开机自启动成功... + Setup system auto start successfully... + + + + 设置系统开机自启动失败...错误:%1 + Setup system auto start failure... Error:%1 + + + + 注销系统开机自启动成功... + The system has been successfully booted... + + + + 注销系统开机自启动失败......错误:%1 + Logout system startup failure... Error:%1 + + + + 设置HMI开机自启动成功... + Set HMI auto start successfully... + + + + 设置HMI开机自启动失败...错误:%1 + Set HMI auto start failure... Error:%1 + + + + 注销HMI开机自启动成功... + Logout HMI startup since startup successful... + + + + 注销HMI开机自启动失败...错误:%1 + Logout HMI startup self-start failure... Error:%1 + + + 设置桌面模式成功 + Desktop mode set successfully + + + 设置桌面模式成功...错误:%1 + Desktop mode set successfully... Error: %1 + + + 设置大屏模式成功 + Large screen mode set successfully + + + 设置大屏模式失败...错误:%1 + Failed to set large screen mode... Error: %1 + + + + CheckBoxDialog + + + 工作台 + WorkBench + + + + 确认 + Confirm + + + + 取消 + Cancel + + + + DbCheck + + + + 数据库检测 + Database detection + + + + + 连接状态 + Connection Status + + + + 同步状态 + Synchronization Status + + + + 同步状态: + Synchronization Status: + + + + 最大ID主机: + Max ID Host: + + + + 服务状态: + Service Status: + + + + IP漂移主机: + IP Drift Host: + + + + 读写状态 + Read/Write Status + + + + 模型(读): + Model (Read): + + + + 模型(写): + Model (Write): + + + + 历史(读): + History (Read): + + + + 时序库状态 + Time Series Database Status + + + MySQL状态 + MySql + + + + 节点名/IP + Node Name/IP + + + 模型(写) + Model(Write) + + + 模型(读) + Model(Read) + + + 历史(读) + His(Read) + + + InfluxDB状态 + InfluxDB + + + + 正在刷新,无需再次提交刷新! + Refreshing now, no need to submit refresh again! + + + + 正在刷新,请稍后! + Refreshing, please wait a moment! + + + + 查询成功! + Query successful! + + + + %1 + %1 + + + + + + + 未知 + Unknown + + + + + + + 正常 + Connected + + + + + 同步ID相差:%1 + Synchronization ID difference: %1 + + + + 读取失败:%1 + Read failed: %1 + + + + + 未启用 + Not enabled + + + + + 无 + None + + + + 服务未开启:%1 + Service not started: %1 + + + + 提示 + Tips + + + + 正在查询,是否终止查询? + Query in progress, do you want to stop the query? + + + + 刷新 + Refresh + + + + + 异常 + Not Connected + + + 获取域信息失败 + Faild to obtain domain infomation + + + 获取数据库信息失败 + Faild to obtain database infomation + + + + (首链接) + (First Link) + + + + + + + + + + + - + - + + + + DbCheckThread + + + UDP绑定失败,端口号【%1】 + UDP binding failed, port number 【%1】 + + + + + 创建系统信息访问库失败 + Failed to create system information access library + + + + 获取域信息失败 + Failed to obtain domain information + + + + 获取数据库信息失败 + Failed to obtain database information + + + + 获取节点信息失败 + Failed to obtain node information + + + + [%s]数据库类型错误!参数错误,直接默认为数据库状态不正常 + [%s] Database type error! Parameter error, defaulting to database status as abnormal + + + + DogCheck + + Dialog + Dialog + + + 加密狗状态: + Supper Dog Status: + + + + 激活状态: + Active State: + + + + 1、请将操作系统信息(re_code.txt)发给系统提供商,获取授权文件 + 1. Please send the operating system information (re_code.txt) to the system provider to obtain the authorization file + + + + 拷贝操作系统信息 + Copy operating system information + + + + 2、获取授权文件后,进行系统激活 + 2. After obtaining the authorization file, activate the system + + + + 导入授权文件 + Import authorization file + + + + 授权检测 + 加密狗检测 + Supper DogCheck + + + + + + + 提示 + Tips + + + + 删除原文件失败 + Failed to delete the original file + + + + 选择授权文件 + Select the authorization file + + + + txt (*.txt) + txt (*.txt) + + + + 文件不存在 + The file does not exist + + + + 导入失败![%1] + Import failed! [%1] + + + + 导入成功! + Import successful! + + + + + 重新检测 + Recheck + + + + 异常,错误码[%1] + Abnormal,Error Code[%1] + + + + + 正常 + Normal + + + + InputDialog + + + 确定 + Confirm + + + + 取消 + Cancel + + + + 数据填写: + dataFilling: + + + + 请选择图片 + Please select an image + + + + 请选择执行文件 + Please select an executable file + + + + 选择图片 + selectImage + + + + 选择执行文件 + selectExecution + + + + Images (*.png *.jpg *.bmp) + + + + + 新增快捷方式 + Add a shortcut + + + + Executables (*.exe *.bat) + + + + + 警告 + Warning + + + + 请填写相应数据! + Please fill in the indispensable data! + + + + LocalStateForm + + + Form + Form + + + + + (主) + (Primary) + + + + + (备) + (Backup) + + + + + + + (未知) + (unknown) + + + + + (停止) + (stop) + + + + 提示 + Tips + + + + + 停止 + Stop + + + + + + 重启 + Restart + + + + 该应用暂不能切换成其他状态。 + The server can't be switched to another state at the moment. + + + + 当前应用状态是否切换成其他状态? + Whether the current application state is switched to another state? + + + + + 验证 + Ok + + + + + 权限验证 + Permission to verify + + + + MainWindow + + 应用管理 + Application + + + 进程管理 + Process Info + + + + 系统管理 + System +Management + + + 工具箱 + Toolbox + + + 版本 + Version + + + + + + 提示 + Tips + + + + 系统启动失败,请检查所有配置工具和人机界面是否已经全部退出! + System failed to start,please check whether all configuration tools and human interface have been exited! + + + + 错误 + Error + + + 未发现系统模型配置文件,是否打开系统建模工具导出模型配置? + The system model configuration file is not found. Do you open the system modeling tool to export the model configuration? + + + + 开始停止系统 + Stop system + + + + 开始启动进程:%1 + Start process:%1 + + + + + 启动进程:%1失败 + Start process:%1 faild + + + + 启动进程:%1成功 + Start process:%1 success + + + + 开始停止进程:%1 + Stop process:%1 + + + + + + 停止进程:%1失败 + Stop process:%1 faild + + + + + + 停止进程:%1成功 + Stop process:%1 success + + + + 强制停止进程:%1 + Kill process:%1 + + + + 缩小至托盘 + Minimize to tray + + + + 退出程序 + Exit the program + + + + 确认退出? + Confirm exit? + + + 已激活 + Actived + + + + 显示 + Display + + + + 退出 + Exit + + + + 系统状态 + System +State + + + + 系统进程 + System +Process + + + + 系统工具 + System +Tool + + + + 系统设置 + System +Design + + + + 系统模型配置信息异常,是否打开系统建模工具检查配置并导出? + There is an exception in the system model configuration information. Do you want to open the system modeling tool to check the configuration and export it? + + + 未检测 + Unchecked + + + 未激活 + Not Active + + + + 加密狗退出 + Supper Dog Exit + + + + ModifyButtonForm + + + Form + Form + + + + 确认 + yes + + + + 编辑快捷键 + Edit Shortcut Keys + + + + ProcMngForm + + + Form + Form + + + + 节点应用进程 + Application process + + + + 进程名 + Process name + + + + 所属应用 + Application + + + + 状态 + Status + + + + CPU + CPU + + + + 内存(MB) + Memory (MB) + + + + 主/备 + Master/Slave + + + + + 重启 + Restart + + + + 全部 + All + + + + 刷新 + Refresh + + + + 启动 + Start up + + + + 停止 + Stop + + + + 升主 + to Master + + + + 降备 + to Slave + + + + 强制停止 + Kill + + + + + + + 验证 + Ok + + + + + + + 权限验证 + Permission to verify + + + + + 运行中 + Active + + + + + + + 异常 + Abnormal + + + + + 主 + Master + + + + + 备 + Slave + + + + + 已停止 + Stopped + + + + + 未知 + Unknown + + + + QObject + + + + + + 已设置服务自启动,若需重新设置,请先取消! + The service has been set since the start, if you need to reset, please cancel first! + + + + + 设置可执行权限失败! + Failed to set executable permissions! + + + + + + 文件不存在! + The file does not exist! + + + + 服务配置文件不可写,请确认是否具有权限! + The service profile cannot be written, please confirm if you have permission! + + + + 写入服务配置文件失败! + Write service profile failed! + + + + 取消服务开机自启动失败! + Failed to cancel the service from starting automatically on boot! + + + 设置合成器服务开机自启动失败! + Failed to set the compositor service to start automatically on boot! + + + 设置sys_startup服务开机自启动失败! + Failed to set the sys_startup service to start automatically on boot! + + + 取消rqeh6000_compositor服务开机自启动失败! + Failed to cancel the rqeh6000_compositor service from starting automatically on boot! + + + 取消rqeh6000_startup服务开机自启动失败! + Failed to cancel the rqeh6000_startup service from starting automatically on boot! + + + 调用系统重新加载配置失败! + Call system reload configuration failed! + + + + 设置服务开机自启动失败! + Setup service startup auto startup failed! + + + + 未设置服务自启动,无需取消! + Do not set the service to start, no need to cancel! + + + 删除服务配置文件失败,请确认是否具有权限! + Failed to delete service profile, please confirm if you have permissions! + + + + + 已设置HMI自启动,若需重新设置,请先取消! + HMI has been set to start, if you need to reset, please cancel first! + + + + 启动器文件不可写,请确认是否具有权限! + Initiator file cannot be written, please confirm whether you have permission! + + + + 删除启动器文件失败,请确认是否具有权限! + Failed to delete starter file, please confirm if you have permission! + + + + 未设置HMI自启动,无需取消! + HMI self-start is not set, no need to cancel! + + + + + + 打开服务管理器失败,请确认是否具有权限! + Failed to open service manager, please confirm if you have permission! + + + + 注册服务失败,请确认是否具有权限! + Registration service failed, please confirm if you have permission! + + + + 注销服务失败! + Logout service failed! + + + + 停止服务超时! + Stop service timeout! + + + + 获取服务状态失败! + Failed to get service status! + + + + + 启动文件无法写入 + Startup file cannot be written + + + + 警告 + Warning + + + + 正在运行 + System still in running + + + + StartUpForm + + + Form + Form + + + 系统启动 + System startup + + + 系统停止 + System to stop + + + + 验证 + Ok + + + + 权限验证 + Permission to verify + + + + 退出系统前,请将所有配置工具和人机界面退出! + Before exiting the system, please exit all configuration tools and human interface! + + + + StatusForm + + + Form + Form + + + + 激活状态: + 加密狗状态: + Active State: + + + + + + 正常 + Normal + + + + 本地网络状态: + Local Network Status: + + + + 异常 + Abnormal + + + + 未检测 + Unchecked + + + + 未激活 + Not Active + + + + 已激活 + Actived + + + + 系统运行中 + System Running + + + + 系统已停止 + System Stopping + + + 系统禁止运行中 + System Not Running + + + + SystemSetForm + + + Form + Form + + + + 设置 + Setting + + + + 修改 + Modify + + + + 开机时启动工具(推荐) + Startup tool on boot (recommended) + + + + 英文 + English + + + 切换中英文: + Switch Language: + + + 常用工具添加或删除: + Add or remove common tools: + + + + 基本: + Basic: + + + + 切换语言: + Switch Language: + + + + 中文 + Chinese + + + + 工具设置 + Tool Setttings + + + + 快捷工具栏设置: + Quick Toolbar Settings: + + + + 基础设置 + Basic Settings + + + + 法语 + French + + + + 确认修改 + Confirm Changes + + + + 基础信息 + Information + + + + 基础信息: + Basic Information: + + + + 备份路径 + 备用路径 + Backup Path + + + + 数据库路径 + DbPath + + + + 主程序 + Main + + + + Web + Web + + + + 数据库 + Db + + + + 版本信息 + Version + + + + 授权信息 + Licence Information + + + + 授权激活 + Authorisation Activation + + + + 主程序路径 + MainPath + + + + + 未检测 + Unchecked + + + + 未激活 + Not Active + + + + 已激活 + Actived + + + + 设置系统开机自启动成功... + Setup system auto start successfully... + + + + 设置系统开机自启动失败...错误:%1 + Setup system auto start failure... Error:%1 + + + + 注销系统开机自启动成功... + The system has been successfully booted... + + + + 注销系统开机自启动失败......错误:%1 + Logout system startup failure... Error:%1 + + + + 无版本信息 + No Version Information + + + + + + 已安装 + Installed + + + + + + 未安装 + Not Installed + + + + 暂无 + Not Available + + + + 无数据库路径 + No DbPath + + + + 切换成功!请重启该软件 + Switching successful! Please restart the software + + + + 切换失败..请稍后再试 + Switching failed... Please try again later + + + + VersionForm + + Form + Form + + + 版本信息 + Version + + + 主程序 + Main + + + 数据库 + Db + + + Web + Web + + + 主程序路径 + MainPath + + + 数据库路径 + DbPath + + + 无版本信息 + No Version Information + + + 已安装 + Installed + + + 未安装 + Not Installed + + + 无主程序路径 + No MainPath + + + 无数据库路径 + No DbPath + + + + menuForm + + Form + Form + + + 系统状态 + 系统 +状态 + System +State + + + 系统进程 + System +Process + + + 系统管理 + System +Manage + + + 系统工具 + System +Tool + + + 系统设置 + 系统设计 + System +Design + + + + titleBarForm + + Form + Form + + + diff --git a/resource/en/workBench/workBench.json b/resource/en/workBench/workBench.json new file mode 100644 index 00000000..eb773bd3 --- /dev/null +++ b/resource/en/workBench/workBench.json @@ -0,0 +1,176 @@ +{ + "buttoninfo": { + "count": 20, + "num0": { + "cmd": "hmi_explorer.bat", + "icon": "../../resource/zh/workBench/buttonForm/MonitInterface.png", + "param": "", + "desc": "HMI" + }, + "num1": { + "cmd": "DogCheck", + "icon": "../../resource/zh/workBench/buttonForm/DogCheck.png", + "param": "", + "desc": "Supper\nDog Check" + }, + "num10": { + "cmd": "debug_tool.exe", + "icon": "../../resource/zh/workBench/buttonForm/EngineeringDebug.png", + "param": "", + "desc": "Debug\ntool" + }, + "num11": { + "cmd": "sys_command-platform.bat", + "icon": "../../resource/zh/workBench/buttonForm/PlatformTerminal.png", + "param": "", + "desc": "Platform\nterminal" + }, + "num12": { + "cmd": "sys_command.bat", + "icon": "../../resource/zh/workBench/buttonForm/ProductTerminal.png", + "param": "", + "desc": "Product\nterminal" + }, + "num13": { + "cmd": "push_debug.exe", + "icon": "../../resource/zh/workBench/buttonForm/push_debug.png", + "param": "", + "desc": "Push\ndebug" + }, + "num14": { + "cmd": "file_sync_tool.exe", + "icon": "../../resource/zh/workBench/buttonForm/FileSync.png", + "param": "", + "desc": "File\nsync tool" + }, + "num15": { + "cmd": "ReportEdit.exe", + "icon": "../../resource/zh/workBench/buttonForm/ReportEdit.png", + "param": "", + "desc": "Report\nEdit" + }, + "num16": { + "cmd": "NetMonite.exe", + "icon": "../../resource/zh/workBench/buttonForm/NetMonite.png", + "param": "", + "desc": "Network\nMonitor" + }, + "num17": { + "cmd": "tsdb_data_manager.exe", + "icon": "../../resource/zh/workBench/buttonForm/DatabaseCheck.png", + "param": "", + "desc": "TSDB\nManagement" + }, + "num18": { + "cmd": "tsdb_data_export.exe", + "icon": "../../resource/zh/workBench/buttonForm/DatabaseCheck.png", + "param": "", + "desc": "TSDB\nExport Management" + }, + "num19": { + "cmd": "Custom", + "icon": "../../resource/zh/workBench/buttonForm/add.png", + "param": "custom", + "desc": "Custom\nApplication" + }, + "num2": { + "cmd": "DbCheck", + "icon": "../../resource/zh/workBench/buttonForm/DatabaseCheck.png", + "param": "", + "desc": "Database\ndetection" + }, + "num3": { + "cmd": "AutoStart", + "icon": "../../resource/zh/workBench/buttonForm/SysStart.png", + "param": "", + "desc": "Self-starting\nsettings" + }, + "num4": { + "cmd": "model_system_config.exe", + "icon": "../../resource/zh/workBench/buttonForm/SystemModeling.png", + "param": "", + "desc": "System\nmodeling" + }, + "num5": { + "cmd": "model_studio.exe", + "icon": "../../resource/zh/workBench/buttonForm/DevModeling.png", + "param": "", + "desc": "Device\nmodeling" + }, + "num6": { + "cmd": "hmi.exe", + "icon": "../../resource/zh/workBench/buttonForm/PictureConfiguration.png", + "param": "", + "desc": "Graphic\ndesign" + }, + "num7": { + "cmd": "db_manager.exe", + "icon": "../../resource/zh/workBench/buttonForm/EngineeringManagement.png", + "param": "", + "desc": "Project\nmanagement" + }, + "num8": { + "cmd": "fbd_designer.exe", + "icon": "../../resource/zh/workBench/buttonForm/LogicProgramming.png", + "param": "", + "desc": "FBD" + }, + "num9": { + "cmd": "camera_statistics.exe", + "icon": "../../resource/zh/workBench/buttonForm/preset_config.png", + "param": "", + "desc": "Preset\nconfig" + } + }, + "page1": [ + "num0", + "num10", + "num4", + "num5", + "num6", + "num7", + "num8" + ], + "page3": { + "count": 3, + "group0": { + "value": [ + "num0", + "num1", + "num2", + "num3", + "num19" + ], + "desc": "Operational monitoring" + }, + "group1": { + "value": [ + "num4", + "num5", + "num6", + "num7", + "num8", + "num15" + ], + "desc": "Modeling configuration" + }, + "group2": { + "value": [ + "num10", + "num11", + "num12", + "num14", + "num19" + ], + "desc": "System debugging" + } + }, + "restartpng": "../../resource/zh/sys_monitor/restart.png", + "startbarbodercolor": "#ccf4d3", + "startbarwatercolor": "#00ca21", + "startpng": "../../resource/zh/sys_startup/start.png", + "stopbarbodercolor": "#ffe1d9", + "stopbarwatercolor": "#ff6840", + "stoppng": "../../resource/zh/sys_startup/stop.png", + "sysicon": "../../resource/zh/sys_startup/sys_startup.ico" +} diff --git a/resource/fr/apc_if_srv/translate/apc_if_srv_en.mo b/resource/fr/apc_if_srv/translate/apc_if_srv_en.mo new file mode 100644 index 0000000000000000000000000000000000000000..ab27d48f4f73b306b816509256e0ee1c8d162e0d GIT binary patch literal 2176 zcmc&#TW=dh7#*P8jCkRhhe;$WiSRm39HihV4>&hjq=|vF;-V5wcgOb9^{$znP4QcT z8pVZ}KucTNa!DXj3y7FYDNS(Uogcs>FJw2)Q{WE(XT4715(ot$vD(jPzS*7gU3TX9 z$A=D`Be+7ahhYZnL0A>$Uq8cq{}^Inx{`d|;(!dMAXMr`~3&7-^gy_H}U=sMi zU4#q($ABw%=M2#2>%E(hao{j83p@|Z0DlD*fczdpiohQln7)^g=iq&9fR4Z= z2t^LTFh%fsy_WldI~OPk!Uh-h7T(xcUv`&2uU%Uqsjl8JYB{ptNGiE4x2u;zbRwtQ z6t^u@nqxv!EsaNMi0Y=K{q*^;c8o@-Ek)h2kA;Z$`W3fyee?3Fw>alcSGV4M&-?P+ zc6C0O_pX<`naakEPp6oeoMMKk(e!|-7l3P0CUH)Qo{kzt1SGd)Cf2CIW0GYU@&o;h!)m{E*^U^7I?b=V% zGwz#LYgbOWrHh~n23vDwce#v;YL&0O52vwqYqq?3bJb7vKxX&mS@(1qJpq;9nSDIo zg_R)0cD0lmL`TEj;qB__gXkC6yz(kC4c6@~n%~Vkn2UpGzPZe%ShrP3?c1~N+`9MG zYn!jEwIZ+9;JZDZ+L~Lq&0g%I@D{6Xbz$qRi?vGS&pFbLlybZEPg{;q z`9P3;;qk)+%JauCX@em}M@(_r2JLC1j>(Q2 zoJxznnEa-z4|0TcQ@LOU~D?^cUJ+1Z~4eHn*Il@#Gdkd$+uhys8tFbP2 zw^r&4U_9K^pNx)1>;(EpHAgZyc-U}U2-Jsk8-H_ow9OGb@0VY&@SoNOX>0qxsDB4+ C;ZRZl literal 0 HcmV?d00001 diff --git a/resource/fr/apc_if_srv/translate/apc_if_srv_en.po b/resource/fr/apc_if_srv/translate/apc_if_srv_en.po new file mode 100644 index 00000000..6d9682d9 --- /dev/null +++ b/resource/fr/apc_if_srv/translate/apc_if_srv_en.po @@ -0,0 +1,76 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2024-05-30 09:30+0800\n" +"PO-Revision-Date: 2024-05-30 09:30+0800\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.4.4\n" +"X-Poedit-Basepath: ../../../../../src/application/apc_if_srv\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: I18N;I18N_C\n" +"X-Poedit-SearchPath-0: .\n" + +#: CApcIfSrv.cpp:142 +#, c-format +msgid "" +"I18N output test:\n" +" This is src hardcode. \n" +" int = [%d] , str = [%s]\n" +msgstr "" +"I18N output test:\n" +" This is English(Great Britain). \n" +" int = [%d] , str = [%s]\n" + +#: CThreadAnalog.cpp:301 +msgid "控制目标值非法,控制消息中var_value不是DOUBLE或dValue未填充!" +msgstr "" +"Control target value is illegal,the var_value in control message is not " +"DOUBLE or dValue is not filled!" + +#: CThreadAnalog.cpp:373 CThreadDigital.cpp:341 CThreadLocalCurve.cpp:782 +msgid " 提交失败" +msgstr "Commit failed" + +#: CThreadDigital.cpp:271 +msgid "控制目标值非法,控制消息中var_value不是INT32或nValue未填充!" +msgstr "" +"Control target value is illegal,the var_value in control message is not " +"INT32 or nValue is not filled!" + +#: CThreadLocalCurve.cpp:231 +msgid "计划曲线\"%1%\"查询不到今天的年、周规则或规则重复,请检查配置!" +msgstr "" +"Plan curve '%1%' unable to query today's year rule and week rule,or rule " +"duplication,please check configuration!" + +#: CThreadLocalCurve.cpp:247 +msgid "" +"计划曲线\"%1%\"根据年规则ID = %2%,周规则ID = %3%,查询不到日规则,请检查配" +"置!" +msgstr "" +"Plan curve '%1%',according to the year rule = %2% and week rule = %3% unable " +"to find day rule,please check configuration!" + +#: CThreadLocalCurve.cpp:270 +msgid "计划曲线\"%1%\"查询不到当前值或值重复,请检查日规则(ID = %2%)配置!" +msgstr "" +"Plan curve '%1%' unable to query current value or value duplication,please " +"check the configuration of day rule(ID = %2%)!" + +#: CThreadLocalCurve.cpp:299 +msgid "计划曲线\"%1%\"输出测点\"%2%\"格式错误,请检查配置!" +msgstr "" +"Plan curve '%1%',format error of output measurement point'%2%',please check " +"configuration!" + +#: CThreadLocalCurve.cpp:312 +msgid "计划曲线\"%1%\"输出测点\"%2%\"不是AI量,请检查配置!" +msgstr "" +"Plan curve '%1%',format error of output measurement point'%2%',please check " +"configuration!" diff --git a/resource/fr/app_bio_identify_srv/translate/app_bio_identify_srv_en.mo b/resource/fr/app_bio_identify_srv/translate/app_bio_identify_srv_en.mo new file mode 100644 index 0000000000000000000000000000000000000000..c8fe72767d2f47a5ee7431ea11dc8e092192d4eb GIT binary patch literal 1192 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 + + + + QObject + + + 数据库连接未打开 + Database connection not open + + + + + 获取表 + Get the table + + + + + 列信息失败 + Column information failed + + + + 无法查询表 + The table could not be queried + + + + 开始备份表: + Start backing up the table: + + + + 无法备份该表: + The table could not be backed up: + + + + 完成备份表: + Complete the backup table: + + + + kbd_dbms::CHisMngApi + + + 开始转储 + Start dump + + + + kbd_dbms::CHisMngApiImp + + 的列数量 + Number of columns + + + + 错误,未处理的数据类型: + Error, unprocessed data type: + + + + 该服务器备份服务未开启,请配置 + 该服务器备份服务未开启,请配置 + The server backup service is not turned on, please configure + + + + 备份历史数据失败,检查iscs6000是否正确配置 + 备份历史数据失败,请检查rqeh6000是否正确配置 + Failed to back up historical data, please check if rqeh6000 is configured correctly + + + + 备份历史数据失败,检查网络是否正常连接以及备份服务8088端口是否开启 + 备份历史数据失败,请检查网络是否正常连接以及备份服务8088端口是否开启 + Backup history data failed, please check if the network is properly connected and if port 8088 of the backup service is on + + + + + 数据库不能连接 + The database cannot be connected + + + + + 表 + Table + + + + + 删除分区 + Delete a partition + + + + + + 失败 + Failed + + + + 成功 + Success + + + + 路径不可写 + Path is not writeable + + + + 备份历史事件出错 + Backup history event error + + + + + + 无法连接influxDB + Unable to connect to influxDB + + + + 无法导出历史事件关系库 + The Historical Event Relationship Library cannot be exported + + + + 无法导出时序库内容 + Time Database was unable to be exported + + + + + 开始导出关系库历史事件 + Start exporting history events of relation database + + + + + 导出关系库历史事件错误 + cannot export history events of relation database + + + + + 关系库历史事件导出完成 + history events of relation history export completed + + + + 开始导出时序库历史事件 + Start exporting time-series library history events + + + + + 导出时序库历史事件错误 + Export history events of Time-series database failed + + + + 时序库历史事件导出完成 + Export history events of Time-series database completed + + + + 开始导出时序库采样数据 + start export sample points of time-series database + + + + 导出时序库采样数据错误 + Export sample points of time-series database failed + + + + 时序库采样数据导出完成 + Export sample points of time-series database done + + + + + 开始导入关系库历史事件 + Start import history events of relation database + + + + + 导入关系库历史事件错误 + Import history events of relation database failed + + + + + 关系库历史事件导入完成 + Import history events of relation database done + + + + 开始导入时序库历史事件 + Start import history events of time-series database + + + + 时序库历史事件导入完成 + Import history events of time-series done + + + + + 开始导入时序库采样数据 + Import sample points of time-series database + + + + 导入时序库采样数据错误 + Import sample poins of time-series database failed + + + + 时序库采样数据导入完成 + Import sample points of time-series database done + + + + + 删除 + delete + + + + + + 旧数据失败 + old data failed + + + + 的行数量 + Number of rows + + + + + 停止转储 + Stop dump + + + + 数据库测试连接失败 + Database test connection failed + + + + 时序库不存在 + Time-series database does not exist + + + + 查询数据库错误 + query db error + + + + 开始导出时序库历史 + Start exporting time-series database history + + + + + 导出时序库历史错误 + Error exporting time-series database history + + + + + 时序库历史导出完成 + Time-series database history export completed + + + + 导入时序库数据错误 + Error importing time-series database data + + + + 时序库数据导入完成 + Time-series database data import completed + + + + 通过分区删除 + Delete by partition + + + + 通过时间删除 + Delete by time + + + + 优化 + Optimize + + + + 表空间失败 + Tablespace failed + + + + 旧数据成功 + Old data successfully + + + + + 清空关系库历史事件失败 + Failed to clear history events of relational database + + + + + 清空时序库失败 + Failed to clear time-series database + + + + + 清空时序库成功 + Successfully cleared time-series database + + + + 开始清空(truncate)表 + Start truncating table + + + + + 清空表 + Truncate table + + + + + 完成 + Completed + + + + + 无法对目录 + Cannot operate on the directory + + + + + 进行读操作,请检查操作用户权限,备份失败 + Please check the operation user permissions to perform read operations, backup failed + + + + 无法初始化influx数据库连接条件,请检查软件依赖是否安装正确 + Unable to initialize the influx database connection condition, check that the software dependency is installed correctly + + + + 数据库连接失败 + Database connection failed + + + + 无法删除influxDB数据库: + The influxDB database could not be deleted: + + + + 无法销毁influx数据库连接资源 + Could not destroy the influx database connection resource + + + + 开始导入数据文件 + Start importing data files + + + + 打开导入文件失败 + Failed to open import file + + + + 导入历史事件失败 + Failed to import history events + + + + 导入已完成: + Importing done: + + + + 删除旧历史记录失败 + Failed to delete old history + + + + 删除旧历史记录成功 + Removing old history successfully + + + + 导入历史记录备份失败 + Import history backup failed + + + + 导入历史记录备份成功 + Import history backup successful + + + + + 导入采样数据备份失败 + Importing sampledata backup failed + + + + + 导入采样数据备份成功 + Import edited data backup successfully + + + + 开始导入历史事件 + Start importing history events + + + + 导入历史事件备份失败 + failed to import history events backup + + + + 导入历史事件备份成功 + Import history events backup successfully + + + + 开始导入采样数据备份 + Start importing sample data backups + + + + 开始清理表 + Start cleaning up the table + + + + + 清理表 + Clean up the table + + + + 导出历史失败 + Export history failed + + + + 删除历史失败 + Failed to delete history + + + diff --git a/resource/fr/db_manager/en.qm b/resource/fr/db_manager/en.qm new file mode 100644 index 0000000000000000000000000000000000000000..ff5fabc79a0337917ba0fcdd40800fae30a044ec GIT binary patch literal 56950 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 U>=Zzn1S;zlaWyVsN=-@me@x@_H~;_u literal 0 HcmV?d00001 diff --git a/resource/fr/db_manager/en.ts b/resource/fr/db_manager/en.ts new file mode 100644 index 00000000..fca3e83c --- /dev/null +++ b/resource/fr/db_manager/en.ts @@ -0,0 +1,2853 @@ + + + + + CExportZipWorker + + + 创建日志导出文件失败,请检查以下文件是否被占用或被其他文件打开: + cannot export log file, please check if other is using log folder + + + + 读取日志路径失败 + cannot read log folder + + + + 读取日志文件失败 + cannot read log file + + + + 创建文件失败 + cannot create log file + + + + 导出日志成功,路径: + exported file: + + + + CLogMngWidget + + + Form + Form + + + + 全部 + all + + + + 刷新 + refresh + + + + 导出日志 + export + + + + + log文件夹不存在 + log folder does not exist + + + + 请出建模信息 + please export system model info first + + + + 提醒 + notification + + + + 请先选择导出类型 + please choose export type + + + + 保存文件名 + filename + + + + zip (*.zip) + zip (*.zip) + + + + CStationReuseForm + + + Form + Form + + + + 步骤1:请选择源/目标数据服务、数据库 + Step 1: Please select the source/target data service and database + + + + --请选择源数据源 + --Please select the source data source + + + + +新增加源数据源 + +Add new source data source + + + + 源数据库服务 + Source database service + + + + 源数据库 + Source database + + + + --请选择目标数据源 + --Please select the target data source + + + + +新增目标数据源 + +Add new target data source + + + + 目标数据库 + Target database + + + + 目标数据服务 + Target data service + + + + 步骤2:请选择源/目标厂(车)站 + Step 2: Please select the source/target factory (vehicle) station + + + + 源厂(车)站 + Source factory (vehicle) station + + + + 目标厂(车)站 + Target factory (vehicle) station + + + + 步骤3:请选择需复用专业 + Step 3: Please select the professional field for reuse + + + + 全部专业 + All professions + + + + 防淹门 + Floodgate + + + + 广播系统 + Broadcast system + + + + 电力监控 + Power monitoring + + + + 时钟系统 + Clock system + + + + 通用 + General + + + + 列车监控 + Train monitoring + + + + 基础 + Basic + + + + 门禁系统 + Access Control System + + + + 售检票 + Ticketing and Inspection + + + + 环控系统 + Environmental Control System + + + + 安防系统 + Security and Protection System + + + + 公共 + Public + + + + 集中告警 + Centralized Alarm + + + + 乘客信息 + Passenger Information + + + + 屏蔽门 + Screen Door + + + + 火灾报警 + Fire Alarm + + + + 闭路电视 + Closed-Circuit Television + + + + 步骤4:执行复用 + Step 4: Execute Reuse + + + + 执行 + Execute + + + + + 请下拉选择数据源 + Please select the data source from the dropdown + + + + 选择厂站复用源数据源 + Please select the source data source for station reuse + + + + 选择厂站复用目标数据源 + Please select the target data source for station reuse + + + + 提示 + Hint + + + + 请确保源数据库和目标数据库的所有表结构一致,否则会出错! + Make sure that all the table structures of the source and target databases are consistent, otherwise an error will occur! + + + + + + + + + + + + 警告 + warning + + + + 未选择源数据服务 + No source data service selected + + + + 未选择源数据库 + No source database selected + + + + 未选择目标数据服务 + No target data service selected + + + + 未选择目标数据库 + No target database selected + + + + 源数据服务未连接 + Source data service is not connected + + + + 目标数据服务未连接 + Target data service is not connected + + + + 源和目标不能相同 + The source and target cannot be the same + + + + 未选择源车站 + No source station selected + + + + 未选择目标车站 + No target station selected + + + + ConnDig + + + Dialog + Dialog + + + + 用户 + Username + + + + 密码 + Password + + + + IP地址 + IP Address + + + + 端口 + Port + + + + 数据库类型 + Database Type + + + + 数据库名称 + Database Name + + + + 连接 + Connect + + + + 取消 + Cancel + + + + 连接数据库 + Connect Database + + + + MySQL + MySQL + + + + OpenGauss + OpenGauss + + + + Oracle + Oracle + + + + KingBase + KingBase + + + + 未知的数据库服务类型! + unknown database type! + + + + 连接数据库服务%1成功! + succeed to connect database service%1! + + + + 数据库服务%1不存在%2数据库! + Database %2 did not exist in database service %1! + + + + 连接数据库服务%1失败! + fail to connect database service %1! + + + + QObject + + 全部备份 + All of Backup + + + 部分备份 + partial backup + + + + + + + + 打开服务管理器失败,请确认是否具有权限!建议以管理员权限打开 + cannot open Service Manager, pleasure ensure that you have sufficient permission + + + + 未设置服务自启动,请先设置服务自启动 + the service is not automatic startup, please make service startup + + + + + 未设置服务自启动,无需取消! + the service is not automatic startup, there is no need to cancel it! + + + + + 停止服务超时! + timeout to stop serivce! + + + + + 获取服务状态失败! + cannot get the state of the service! + + + + 文件不存在! + cannot find file! + + + + 注册服务失败,请确认是否具有权限!建议以管理员权限打开 + cannot register service,pleasure ensure that you have enough permissions + + + + 已添加并设置服务自启动 + the service is automatic startup at boot + + + + 已设置服务自启动,若需重新设置,请先取消! + the service is automatic startup at boot, if you want to reset it, please be first to cancel startup at boot! + + + + 注销成功! + unregister service! + + + + 注销服务失败! + fail to unregister service! + + + + 全量备份 + full backup + + + + 增量备份 + addtional backup + + + + db_compare + + + 合并出错,%1 + cannot merge %1 + + + + 配置出错,跳过,%1 + some error in config, continue $1 + + + + 删除表:%1数据失败 + failt to delete the data of table: %1 + + + + db_exportType + + 删除表语句 + delete statement + + + 创建表语句 + create statement + + + 插入数据语句 + insert statement + + + 创建触发器、存储过程、函数语句 + create trigger, procedure, function statement + + + 确定 + ok + + + 取消 + cancel + + + 导出类型选择 + choose export type + + + + db_restore + + 删除表语句 + delete statement + + + 创建表语句 + create statement + + + 插入数据语句 + insert statement + + + 创建触发器、存储过程、函数语句 + create trigger, procedure, function statement + + + 确定 + ok + + + 取消 + cancel + + + + db_set + + + Dialog + Dialog + + + + 数据库类型: + database type + + + + MySQL + MySql + MySQL + + + + openGauss + openGauss + + + + Oracle + Oracle + + + + KingBase + KingBase + + + + 显 示 名 称: + Display Name: + + + + localhost + localhost + + + + IP 地 址: + IP Address: + + + + 127.0.0.1 + 127.0.0.1 + + + + 端 口 号: + Port Number: + + + + 3306 + 3306 + + + + 用 户 名: + Username: + + + + root + root + + + + 密 码: + password + + + + ems@byd23 + ems@byd23 + + + relyez@2019 + relyez@2019 + + + + 测试连接是否正常 + Test if the connection is normal + + + + 不准选择空路径 + No empty paths allowed + + + + 提示 + Hint + + + + 警告 + Warning + + + + 请把信息填写完整 + Please fill in the information completely + + + + + 测试结果 + Test Result + + + + 连接成功 + Connection successful + + + + 连接失败: + Connection failed: + + + + import_his_backup_dialog + + + Dialog + Dialog + + + + 常规 + General + + + + 导入服务器: + Import Server: + + + + hostname + hostname + + + + 导入数据库: + Import Database: + + + + databaseName + databaseName + + + + 备份文件信息 + info + + + + 备份名称: + name + + + + + + + + + + + TextLabel + + + + + 备份类型: + type + + + + 备份日期: + date + + + + 来源数据库: + source + + + + 来源地址: + source address + + + + 转储截止日期: + dump enddate + + + + 备份信息: + 部分备份信息: + partial backup info + + + + 备注: + 注释: + comment + + + + 信息日志 + log + + + + 导入备份 : + import + + + + 时间 : + time + + + + 0 s + + + + + + 开始 + start + + + + 取消 + cancel + + + + 导入备份 + import backup + + + + + yyyy年M月d日h时m分s秒 + yyyy,M,d,h,m,s + + + + 提醒 + Alert + + + + 是否恢复备份?(如果是恢复全量备份则会覆盖原始数据!) + whether to restore the backup?(if you import the full backup, the data will be override) + + + + 关闭 + close + + + + 还原备份全部历史事件和采样数据完成 + succeed to import all history event and history data + + + + 还原备份全部历史事件和采样数据错误 + fail to import all history event and history data + + + + 还原备份转储完成 + fail to import backup + + + + + 导入SQL中可能有部分重复和错误,具体请参见日志 + there are some errors in import SQL, please dig into logs + + + + 还原备份转储错误 + fail to restore backup + + + + 导入部分转储完成 + completing import partial dump + + + + 导入部分转储错误 + fail to import partial backup + + + + new_his_backup_dialog + + + 新增备份 + new backup + + + + 常规 + common + + + + 服务器: + server + + + + 数据库: + databasename + + + + databaseName + + + + + hostname + + + + + 恢复时会覆盖原始数据,远程连接速度快 + Recovery will overwrite the original data, and the remote connection speed is fast + + + + 恢复时不会覆盖原始数据,远程连接速度慢 + Recovery will not overwrite the original data, and the remote connection speed is slow + + + + 备注: + Remarks: + + + 注释: + comment + + + + + 增量备份 + addtional backup + + + 恢复时不会覆盖原始数据,速度慢 + The original data will not be overwritten, it is slow + + + 历史事件 + historical events + + + 历史采样数据 + sample points + + + + + 全量备份 + full backup + + + 恢复时会覆盖原始数据,速度快 + The original data will be overwritten, it is fast + + + 增量备份高级选项 + advanced + + + + 时间 + time + + + + 开始时间 + start time + + + + + yyyy/M/d HH:mm + MM/dd/yyyy HH:mm + + + + 结束时间 + End Time + + + 设定与采样数据时间同步 + Sync with sampling data time + + + 按设定的时间区间备份,若时间总选项为否,则备份全部时间的数据 + Backup within the set time range; if the time option is not selected, backup data from all times + + + 历史数据 + Historical Data + + + 类型 + Type + + + 数字量变位 + Digital Quantity Change + + + 模拟量越限 + Analog Quantity Limit Exceeded + + + soe事件序列 + SOE Event Sequence + + + 人工操作 + Manual Operation + + + 按选中的类型备份,若类型总选项为否,则选择全部类型 + Backup according to the selected types; if no type is selected, backup all types + + + 采样数据 + Sampling Data + + + 设定与历史事件时间同步 + Set to synchronize with historical event time + + + 数字量 + Digital Quantity + + + 模拟量 + Analog Quantity + + + 累积量 + Accumulative Quantity + + + 混合量 + Mixed Quantity + + + + 信息日志 + Information Log + + + + 备份信息 : + Backup Information: + + + + TextLabel + TextLabel + + + + 时间 : + Time: + + + + 0 s + 0 seconds + + + + + 开始 + Start + + + + 取消 + Cancel + + + + 保存配置文件失败 + fail to save config file + + + + yyyy年M月d日h时m分s秒 + yyyy, M, d, h, m, s + + + 全部备份 + All Backup + + + 部分备份 + partial backup + + + ,历史事件 + ,his event + + + ( + ( + + + 从 + from + + + + 到 + to + + + + 全部时间 + all time + + + , + , + + + 模拟量变位 + ai + + + 数字量变位 + di + + + 系统信息 + sys_info + + + soe事件序列 + soe + + + 人工操作 + opearate + + + 全部类型 + all types + + + ) + ) + + + ,采样数据 + sample points + + + 模拟量 + ai + + + 数字量 + di + + + 累积量 + acc + + + 混合量 + mix + + + + ,从 + , from + + + + yyyy年MM月dd日hh:mm:ss + yyyy-MM-dd hh:mm:ss + + + + + 提醒 + alert + + + + 结束时间请先设置小于当前时间 + please set end time after start time + + + + 开始时间请先设置小于结束时间 + please set start time before end time + + + + 备份全部历史事件和采样数据完成 + complte + + + + 备份全部历史事件和采样数据错误 + fail + + + + 备份完成 + backup compelte + + + + 备份失败 + fail to backup + + + + 关闭 + close + + + + new_his_dump_dialog + + + Dialog + Dialog + + + + 常规 + common + + + + 转储服务器: + server + + + + hostname + hostname + + + + 转储数据库: + database + + + + databaseName + databaseName + + + + 转储截止日期 : + enddate + + + + 时间 : + time: + + + + 0 s + 0 s + + + + TextLabel + TextLabel + + + + + yyyy年M月d日h时m分s秒 + yyyy,M,d,h,m,s + + + + 手动转储 + manual dump + + + + + 开始 + start + + + + 取消 + cancel + + + + 关闭 + close + + + + 保存配置文件失败 + fail to save config file + + + + pj_manager + + + MainWindow + MainWindow + + + + + 工程管理 + Project + + + + 连接 + Connect + + + + 备份恢复 + backup/restore + + + + 系统升级 + upgrade + + + + 历史数据 + hisdata + + + + 操作方式 + Operation method + + + + + + 数据库 + database + + + + 简单模式 + easy mode + + + + 完整模式 + full mode + + + + 选择数据库:只备份/恢复数据库 + database mode: only backup/restore database + + + 选择简单模式:包括数据库,还有data目录和报表 + 选择简单模式:包括数据库,还有data目录下的所有文件 + easy mode: database, data dir and report files + + + 选择完整模式:包括数据库,还有data,common,platform目录和报表 + 选择完整模式:包括数据库,还有data,common,platform目录下的所有文件 + full mode: database,and directory:data,common,platform and report files + + + + 备份记录 + backup history + + + + + + 备份日期 + backup date + + + + + 备份目录 + backup directory + + + + + 备份 + backup + + + + 恢复 + restore + + + + 完整升级 + System + + + + + 开始 + start + + + + + 结束 + end + + + + 导入文件(包括工程数据组态图形趋势) + import file(include project data, configuration,image,trends) + + + + 典型工程 + Typical Projects + + + + 日志管理 + log management + + + + 选择简单模式:包括数据库,还有data目录和报表 + Choose Simple Mode: Includes database, data directory, and reports + + + + 选择完整模式:包括数据库,data,可执行文件和报表 + Choose Full Mode: Includes database, data, executable files, and reports + + + + 备份数据库 + Backup Database + + + + 导入数据库脚本 + import database scripts + + + + + 删除触发器、存储过程、函数 + delete trigger,procedure,functions + + + + + 升级数据库表结构 + upgrade the structures of database + + + + + 导入基础数据 + import basic data + + + + + 创建触发器、存储过程、函数 + create trigger,procedure,function + + + + 数据库升级 + Database + + + + 升级 + upgrade + + + + + 新增备份 + new backup + + + + + + 删除备份 + delete backup + + + + + 导入备份 + import backup + + + + 名 + name + + + + + 备份类型 + backup type + + + + + 备份大小 + backup size + + + 转储 + dump + + + 定时: + every + + + + 星期 + weekday + + + + 日 + sunday + + + + 一 + monday + + + + 二 + tuesday + + + + 三 + Wednesday + + + + 四 + Thursday + + + + 五 + Friday + + + + 六 + Saturday + + + + hh:mm + + + + 自动转储 + automatic dump + + + + 天前的数据 + day before + + + + 应用配置 + apply + + + + 自动转储服务管理 + automatic dump service management + + + + 启动服务 + start service + + + + 关闭服务 + close service + + + + 设置服务自启动 + enable auto start + + + + 关闭服务自启动 + disable auto start + + + + 开启状态: + isOpened + + + + + + 关闭 + close + + + + 是否自启动: + isAutoStart + + + + 否 + no + + + 手动转储 + manual dump + + + 提示:自动转储和手动转储的数据可在备份标签页(前页)查看 + results can be viewed in the previous page + + + + 请连接本地数据库 + please connect local database + + + 清理 + clean + + + + 全部删除 + delete all + + + + 将删除该数据库内的所有历史数据(事件,采样数据,趋势) + delete all historical event and sample points + + + + 部分删除 + partial clean + + + + 将删除选择日期之前的历史数据(事件,采样数据,趋势) + delete historical event and sample points before + + + + 开始清理 + start + + + + 表空间相关 + about tablespace + + + + 当前历史事件表占用磁盘总大小: + tables size about hisevents + + + + GB + + + + + + 查询 + get + + + + 自动清理 + Automatic Cleanup + + + + 服务配置管理 + Service Configuration Management + + + + 磁盘触发 + Disk Trigger + + + + 容量大于 + Capacity Greater Than + + + + + % + % + + + + 磁盘占用 + Disk Occupancy + + + + 0 + 0 + + + + 服务启动后总会检查磁盘容量 +大于上述容量设定值后仅执行清理过程 + The service will always check the disk capacity after starting. +Only perform the cleanup process after exceeding the set capacity value. + + + + 时间触发 + Time Trigger + + + + 触发 + Trigger + + + + 备份和清理 + Backup and Cleanup + + + + 仅清理 + Cleanup Only + + + + 处理 + Process + + + + 手动清理 + Manual Cleanup + + + + yyyy/M/d hh:mm:ss + MM/dd/yyyy hh:mm:ss + + + + 清理表空间 + Clean Table Space + + + + 产品 + Product + + + + 项目 + Project + + + + 开始部署 + Start Deployment + + + + + 数据库管理 + Database Management + + + + 数据库表 + Database Tables + + + + 厂站复用 + Station Reuse + + + + 厂站合并 + Station Merge + + + 数据合并 + Data Merge + + + + 步骤1:选择源数据库 + step 1:choose source database + + + + + 数据服务 + data services + + + + 步骤2:选择目标数据库 + step2: choose target database + + + + 步骤3:选择源位置 + step3: choose src location + + + + 步骤5:配置和执行 + step 5" config and execute + + + 步骤3:选择位置 + step 3: choose location + + + + + 位置 + location + + + + 步骤4:选择专业 + step4: choose applicaiton + + + + 专业 + applicaiton + + + 步骤5:执行 + step5: execute + + + + 执行 + execute + + + + 步骤5:选择目标位置 + step 5: choose destination location + + + + + + + + + + + + + + + + + + + + + + + + + + + + 提示 + notification + + + + + + + + + 错误 + error + + + + 文件 + file + + + + 帮助 + help + + + + 工程管理工具 + Project Management + + + + msgtab + msgtab + + + + + + + + + + + + + + + + + + + + + + + + + + + + 警告 + warning + + + + + 正在执行操作,请勿重新连接! + Operation in progress, do not reconnect! + + + + 新建备份 + new backup + + + + 输入备份名: + import the name of backup + + + + 恢复提醒 + notification + + + + 请确认连接的数据库所配置的所有系统已经离线,本工具只支持离线恢复,是否继续 + please check if the system is offline, continue + + + + + + 备份失败! + Backup failed! + + + + + + 备份完成! + The backup is complete! + + + + + + + 请在备份记录中选择一项备份的工程! + Please select a backup project in the backup record! + + + + + + 恢复失败! + Recovery failed! + + + + + + 恢复成功! + Restored successfully! + + + + 升级提醒 + notification + + + 升级操作将会对当前工程数据和数据库进线覆盖,请确认是否继续? + the upgrade operation will overwrite current data and database, continue? + + + + + 升级失败! + Upgrade failed! + + + + + 升级成功! + ugrade successed! + + + rqeh6000_table_struct.xml不存在 + rqeh6000_table_struct.xml does not exist + + + rqeh6000_func.sql不存在! + rqeh6000_func.sql does not exist! + + + + 请添加一个数据服务配置 + Please add a data service configuration + + + + 文件内容不是xml格式 + File content is not in xml format + + + + 打开配置文件 + Open configuration file + + + + 失败 + fail + + + + 连接数据服务 + connect database service + + + + 断开数据服务 + disconnect database service + + + + 修改数据服务配置 + modify config + + + + 删除数据服务配置 + delete config + + + + 导入基础数据 + import basic data + + + + 更新数据库结构 + update database structure + + + + 执行SQL脚本 + execute sql script + + + + 删除数据库 + delete database + + + + 数据库脚本管理 + Database script management + + + 创建触发器 + Create trigger + + + + 删除触发器 + delete trigger + + + + 更新触发器 + update trigger + + + + + 未知的节点类型 + Unknown node type + + + + 增加数据服务配置 + add database service config + + + + 连接数据库服务%1成功 + Connecting to Database Service %1 Successfully + + + + 连接数据库服务%1失败 + fail to connect database service %1 + + + + 未知的数据库服务类型 + Unknown database service type + + + 输入备份工程名: + Enter the backup project name: + + + + 断开数据库服务成功 + Successfully disconnected from the database service + + + + 增加数据配置 + Add data configuration + + + + 修改配置需要断开数据库连接,是否断开? + Modifying the configuration requires disconnecting the database connection, would you like to disconnect? + + + + 修改数据配置 + Modify data configuration + + + + 请先断开数据服务 + Please disconnect the data service first + + + + 导入基础数据将会清空原来表中的数据,是否导入? + Importing basic data will clear the data in the original table, would you like to proceed? + + + + 选择一个或多个文件 + Select one or more files + + + + 无法打开基础数据路径! + Cannot open the basic data path! + + + + + + + + 获取数据库操作对象失败 + Failed to obtain the database operation object + + + + 升级数据库将会修改表结构,确认升级? + Upgrading the database will modify the table structure, confirm the upgrade? + + + + + + + 数据库选择错误 + Database selection error + + + + 更新数据库结构失败 + Failed to update the database structure + + + + 更新数据库结构完成 + Database structure update completed + + + + 创建触发器完成 + Trigger creation completed + + + + 创建触发器失败 + Trigger creation failed + + + + 确认删除数据库? + Are you sure you want to delete the database? + + + + 请再次确认删除数据库? + Are you sure you want to delete the database? Please confirm again. + + + + 数据库删除成功! + database has been deleted! + + + + 数据库删除失败! + database delete faild! + + + + Open File + Open File + + + + Sql (*.sql) + SQL Files (*.sql) + + + + 开始初始化完整工程 + Starting full project initialization + + + + 表描述 + Table Description + + + + iscs6000_table_struct.xml读取失败 + iscs6000_table_struct.xml read faild + + + + yyyy-MM-dd hh:mm:ss + yyyy-MM-dd hh:mm:ss + + + + 检测到正在进行跨数据库恢复备份, +将只升级数据库和导入数据, +是否继续? + A cross-database recovery backup is in progress. +Only the database will be upgraded and data will be imported, +Do you want to continue? + + + + 保存配置文件失败 + Failed to save the configuration file + + + + 未选择源车站 + No source station selected + + + + 未选择源专业 + No source profession selected + + + + 未选择目标车站 + No target station selected + + + + 已有同名数据库,创建失败 + A database with the same name already exists, creation failed + + + + 数据库名不能为汉字 + The database name cannot be in Chinese characters + + + + 数据库名不能以数字开头 + The database name cannot start with a number + + + + 数据库名不能包含中划线 + The database name cannot contain a hyphen + + + + 数据库创建失败 + Database creation failed + + + + 无法切换到数据库 + Unable to switch to the database + + + + 模式创建失败 + Schema creation failed + + + + 部署提醒 + Deployment Reminder + + + + 请确认连接的数据库所配置的所有系统已经离线, +所部署的数据库将无法恢复,请注意备份, +是否继续? + Please confirm that all systems configured with the connected database are offline, +the deployed database cannot be recovered, please ensure you have a backup, +do you want to continue? + + + + + 新建数据库 + Create New Database + + + + + + 名称 + Name + + + + 数据库类型 + Database Type + + + + IP地址 + IP Address + + + + 端口号 + Port Number + + + + 用户名 + Username + + + + 密码 + Password + + + + 表名 + Table Name + + + + 行数 + Row Count + + + + 表备注 + 参数表 + Table Comments + + + + 表空间 + 非临时表 + Table Space + + + + 表属性 + Table Attributes + + + rqeh6000_table_struct.xml读取失败 + Failed to read rqeh6000_table_struct.xml + + + + 配置文件节点为空! + The configuration file node is empty! + + + + 升级操作将会对当前工程数据和数据库进行覆盖,请确认是否继续? + The upgrade operation will overwrite the current project data and database, please confirm if you want to continue? + + + + 请确保源数据库和目标数据库的所有表结构一致,否则会出错! + Please ensure that all table structures in the source and target databases are consistent, otherwise an error will occur! + + + + 未选择源数据服务 + No source data service selected + + + + 未选择源数据库 + The source database was not selected + + + + 未选择目标数据服务 + Target data service not selected + + + + 未选择目标数据库 + Target database not selected + + + + 源数据服务未连接 + The source data service is not connected + + + + 目标数据服务未连接 + Target data service is not connected + + + + 源和目标不能相同 + The source and target cannot be the same + + + 未选择车站 + No station selected + + + 未选择专业 + No major selected + + + + 专业ID不正确,ID值: + Professional ID is incorrect, ID value: + + + + 请先连接数据服务 + Please connect to the data service first + + + + 数据库名: + databaseName: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 提醒 + alert + + + + + 请先连接数据库 + please connect to database first + + + + + yyyy年M月d日h时m分s秒 + yyyy,M,d,h,m,s + + + + 请选择备份 + please choose backup + + + + 请确认是否删除备份 + please ensure that whether to delete backup + + + + 对象信息 + object info + + + + + 值 + value + + + + 备份名称 + backup name + + + + 路径 + path + + + + 来源数据库 + source database + + + + 来源主机地址 + source address + + + + 备注 + comment + + + + 转储截止日期 + enddate of dump + + + + 备份内容 + 部分备份信息 + partial backup info + + + + 显示对象信息 + display object info + + + + + 重命名 + rename + + + + + 修改备注 + modify comment + + + + 显示备份所在文件夹 + show containing folder + + + + 刷新 + refresh + + + + 是否删除备份 + Whether to delete backups + + + + 请先选择备份对象 + please choose backup object + + + + 重命名备份: + renanme backup + + + + 修改备份备注: + modify backup comment + + + + 表空间优化已完成 + optimize tablespace done + + + + 表空间优化失败 + fail to optimize tablespace + + + + 清理全部历史数据已完成 + clean all historical event and sample points done + + + + 清理全部历史数据失败 + fail to clean all historical data + + + + 清理历史数据已完成 + clean historical data done + + + + 清理历史数据失败 + fail to clean historical data + + + + 请确认是否删除? + please whether to delete + + + + 表 + Table + + + + 删除失败: + Deletion failed: + + + + 清空表: + Clear table: + + + + + + + 配置文件不存在,请导出 + The configuration file does not exist, please export it + + + + 服务已开启 + The service has been started + + + + 服务开启失败 + Failed to start the service + + + + 服务已启动 + The service has been launched + + + + 服务已关闭 + The service has been stopped + + + + 服务关闭失败 + Failed to stop the service + + + + 关闭服务成功 + Successfully closed the service + + + + 设置可执行权限失败! + Failed to set executable permissions! + + + + 文件不存在! + The file does not exist! + + + + 服务配置文件不可写,请确认是否具有权限!请以root用户打开db_manager程序, + The service configuration file is not writable, please confirm if you have the necessary permissions! Please run the db_manager program as the root user, + + + + 写入服务配置文件失败! + Failed to write to the service configuration file! + + + + 设置服务开机自启动失败! + Failed to set the service to start automatically on boot! + + + + 服务已注册并设置自启动 + The service has been registered and set to start automatically + + + + 服务已关闭自启动 + The service has been set not to start automatically + + + + 服务关闭自启动失败 + Failed to disable automatic start for the service + + + + + 开 + start + + + + + 关 + close + + + + + 开启 + open + + + diff --git a/resource/fr/db_manager_api/en.qm b/resource/fr/db_manager_api/en.qm new file mode 100644 index 0000000000000000000000000000000000000000..70b78bbd24fe8c0106bcdfb1fb421e50b582e18f GIT binary patch literal 38303 zcmdr#33ye-xpR|{kedxbkj;=tK#GwBM8p&k5D*ZNRRNKhkOTrD2}wY}s;m-r5D`TL z5fEGeskTS}DbH%Hb!nf^YU@|6HuolITNiBW?)(4qpE)yg&YW{@AmQmFUzptF-uajL z_xa~czh?{DzWnjF&9A0+JaOyJ<9`{%SbR2P{TDM<^cxz>Ut;XDZH(R6k;bBY7@uWq z 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 literal 0 HcmV?d00001 diff --git a/resource/fr/db_manager_api/en.ts b/resource/fr/db_manager_api/en.ts new file mode 100644 index 00000000..fa1fa176 --- /dev/null +++ b/resource/fr/db_manager_api/en.ts @@ -0,0 +1,1581 @@ + + + + + db_manager_api + + 导出数据库文件失败! + Failed to export database file! + + + 拷贝文件失败! + Copying files failed! + + + rqeh6000_table_struct.xml不存在! + rqeh6000_table_struct.xml doesn't exist! + + + rqeh6000_his_event_tables.sql不存在 + rqeh6000_his_event_tables.sql does not exist + + + 拷贝文件成功! + Copying files succeeded! + + + 导入数据库脚本失败! + Failed to import database script! + + + 部署失败! + Deployment failed! + + + 正在创建数据库表结构... + Creating database table structure ... + + + 数据库表结构创建出错! + Database table structure creation error! + + + 数据库表结构创建完成! + The database table structure is created! + + + 正在导入基础数据... + Importing basic data ... + + + 导入基础数据完成! + Importing basic data is complete! + + + 正在导入基础工程数据... + Importing basic engineering data ... + + + 导入基础工程数据完成! + Import of basic engineering data is complete! + + + 正在自动化本地单机部署... + Automating local stand-alone deployment ... + + + 自动化本地单机部署完成! + Automated local stand-alone deployment is complete! + + + 正在创建触发器、存储过程、函数... + Creating triggers, stored procedures, functions ... + + + 创建触发器、存储过程、函数成功! + Create trigger, stored procedure, function succeeded! + + + 导入数据库文件失败! + Failed to import database file! + + + 数据库文件database.sql不存在! + Database file database.sql does not exist! + + + 执行创建任务命令失败!,命令: + Failed to execute the create task command!, command: + + + rqeh6000_func.sql不存在! + rqeh6000_func.sql does not exist! + + + 导入 + Import + + + 下的基础数据失败! + Failed to import basic data! + + + 下基础数据导入完成... + Basic data import completed... + + + 下的Exl数据失败! + Failed to import Excel data! + + + 解压 + Unzip + + + 解压数据压缩包成功... + Successfully unzipped the data package... + + + 未知格式的文件 + File of unknown format + + + 开始删除触发器... + Starting to delete the trigger... + + + 删除触发器失败! + Failed to delete the trigger! + + + 触发器删除成功... + Trigger deleted successfully... + + + 导入excel文件成功... + Successfully imported Excel file... + + + 删除文件夹 + Deleting folder + + + 失败 + Failed + + + 成功 + Successful + + + 开始拷贝文件! + Starting to copy the file! + + + 删除触发器/存储过程/函数失败! + Failed to delete the trigger/stored procedure/function! + + + 更新数据库表结构失败! + Failed to update the database table structure! + + + 创建触发器失败! + Failed to create the trigger! + + + 更新触发器和存储过程失败! + Failed to update the trigger and stored procedures! + + + 删除文件失败! + Failed to delete the file! + + + 开始导入完整工程... + Starting to import the complete project... + + + 复制文件成功... + Successfully copied the file... + + + 开始创建数据库... + Starting to create the database... + + + 开始升级数据库表结构... + Starting to upgrade the database table structure... + + + 数据库表结构升级成功... + The database table structure was successfully upgraded... + + + 导入基础数据完成... + Import of basic data completed... + + + 开始创建数据库表结构... + Starting to create the database table structure... + + + 开始部署... + Starting deployment... + + + 部署成功... + Deployment successful... + + + 开始创建触发器等... + Starting to create triggers, etc... + + + 创建触发器等成功... + Successfully created triggers, etc... + + + 初始化完整工程完成... + Initialization of the complete project is complete... + + + 本地化部署-切换数据库失败! + Localization deployment - failed to switch databases! + + + 本地化部署-创建域信息失败! + Localization deployment - failed to create domain information! + + + 本地化部署-创建位置信息失败! + Localization deployment - failed to create location information! + + + 本地化部署-创建应用部署信息失败! + Localization deployment - failed to create application deployment information! + + + 本地化部署-创建机器节点失败! + Localization deployment - failed to create machine node! + + + 本地化部署-应用部署失败! + Localization deployment - application deployment failed! + + + 本地化部署-创建数据库节点失败! + Localization deployment - failed to create database node! + + + 本地化部署-部署数据库失败! + Localization deployment - database deployment failed! + + + + db_opt + + + 创建域成功... + Creating a domain successfully... + + + + 创建车站成功... + Successful station creation... + + + + 创建节点成功... + Creating node successfully... + + + 创建部署信息成功... + Creating deployment information successfully... + + + + 创建数据库节点成功... + Creating a database node successfully... + + + + 创建数据库域成功... + Creating a database domain successfully... + + + + 导出文件: + Export files: + + + + + 打开导出文件失败 + Failed to open export file + + + + 更新部署信息成功... + Successfully updated deployment information... + + + + 不能创建文件: + Cannot create file: + + + + sql执行失败: + + SQL execution failed: + + + + +错误原因: + Error reason: + + + + 导出数据库完成! + Database export completed! + + + + 切换数据库失败! + Failed to switch databases! + + + + + 数据库操作接口打开数据库失败! + The database operation interface failed to open the database! + + + + 请选择恢复工程数据导入选项!!!! + Please select the recovery project data import option!!!! + + + + + 删除触发器失败! + Failed to delete the trigger! + + + + 开始升级表结构... + Starting to upgrade the table structure... + + + + 升级表结构失败! + Failed to upgrade the table structure! + + + + 开始升级触发器... + Starting to upgrade the triggers... + + + + 升级触发器失败! + Failed to upgrade the triggers! + + + + 开始清空数据库表数据! + Start emptying the database table data! + + + + 清空表数据失败! + Emptying table data failed! + + + + 数据库表数据清空完成! + Database table data emptying is complete! + + + + 导入database.sql文件失败 + Failed to import the database.sql file + + + + 无法获取表: + Unable to obtain the table: + + + + 的列数据 + 's column data + + + + 文件: + File: + + + + 无法打开 + Unable to open + + + + 的数据...无法打开! + 's data... Unable to open! + + + + + + + + + + + 表: + Table: + + + + + 的数据...导入失败! + The data of the user... failed to import! + + + + 的数据...导入完成! + The data of the user... has been successfully imported! + + + + + + + + + 无法切换数据库 + Unable to switch databases + + + + Excel文件 + Excel File + + + + 打开不成功!原因: + Failed to open! Reason: + + + + 有问题! + There is a problem! + + + + 读取数据库结构定义文件失败! + Failed to read the database structure definition file! + + + + 处理数据库结构定义文件失败! + Failed to process the database structure definition file! + + + + 函数定义文件不存在! + The function definition file does not exist! + + + + db_manager_opt.xml不存在! + db_manager_opt.xml does not exist! + + + + + DOM setContent平台失败! + DOM setContent failed on the platform! + + + + + DOM setContent产品失败! + DOM setContent for product failed! + + + + 升级表结构文件不存在: + Upgrade table structure file does not exist: + + + + 配置文件节点为空: + Configuration file node is empty: + + + + 无法切换到数据库 + Unable to switch to the database + + + + 分隔符解析错误 + Separator parsing error + + + + 解析索引错误,列: + Index parsing error, column: + + + + 无法处理列 + Unable to process the column + + + + 字段: + Field: + + + + 无法删除 + Unable to delete + + + + 的主键! + the primary key! + + + + 无法获得数据库 + Unable to obtain the database + + + + 的所有表名! + names of all tables! + + + + 无法创建表 + Unable to create the table + + + + 无法处理表 + Unable to process the table + + + + 删除多余表失败 + Failed to delete the redundant table + + + + 导入表: + Importing table: + + + + 数据失败! + Data import failed! + + + + 恢复触发器失败! + Failed to restore the trigger! + + + + 开始导入触发器、存储过程、函数...! + Starting to import triggers, stored procedures, functions...! + + + + 导入触发器、存储过程、函数出错,出错语句: + Error importing triggers, stored procedures, functions, error statement: + + + + 导入触发器、存储过程、函数完成...! + Finished importing triggers, stored procedures, functions...! + + + + 升级表结构文件不存在! + Upgrade table structure file does not exist! + + + + + + 配置文件节点为空! + Configuration file node is empty! + + + + + + 获取表 + Get the table + + + + 的建表语句失败! + Table creation statement failed! + + + + 创建表失败,原因: + Creating a table failed for: + + + + +创建语句: + + +Create a statement: + + + + + + 创建成功! + Successful creation! + + + + 平台升级表结构文件不存在! + Platform upgrade table structure file does not exist! + + + + 无法删除表: + Unable to delete table: + + + + + 的所有字段失败! + All fields failed! + All fields failed! + + + + ,未知的索引类型: + , unknown index type: + + + + + 的字段: + Fields: + + + + 重新获取表 + Reacquire the table + + + + 创建主键失败!,原因: + Failed to create the primary key!, reason: + + + + 表 + Table + + + + 更新主键成功! + Successfully updated the primary key! + + + + + + 无法读取配置文件: + Unable to read the configuration file: + + + + 清空表 + Clear the table + + + + 失败,原因: + Failed, reason: + + + + 位置修改成功! + Position modification successful! + + + + 的添加字段语句失败! + Failed to add field statement! + + + + updateTableIndex函数内删除索引失败 + Failed to delete index in updateTableIndex function + + + + deleteIndex函数删除表索引失败 + DeleteIndex function failed to delete table index + + + + deleteIndex函数删除索引失败 + DeleteIndex function failed to delete index + + + + 打开SQL文件失败 + Failed to open SQL file + + + + 脚本运行出错! + The script has an error! + + + + 文件执行完成... + File execution completed... + + + + 删除触发器完成...失败 + Deleting trigger complete... Failed + + + + 删除触发器完成...成功 + Deleting trigger complete... Success + + + + 开始删除存储过程... + Start deleting stored procedures... + + + + 删除存储过程完成...失败 + Deleting stored procedure complete... Failed + + + + 删除存储过程完成...成功 + Deleting stored procedure complete... Success + + + + 删除函数完成...失败 + Deleting function complete... Failed + + + + 删除函数完成...成功 + Deleting function complete... Success + + + + 开始恢复触发器... + Start restoring triggers... + + + + 恢复触发器完成...失败 + Restoring trigger complete... Failed + + + + 恢复触发器完成...成功 + Restoring trigger complete... Success + + + + 恢复存储过程完成...失败 + Restoring stored procedure complete... Failed + + + + 恢复存储过程完成...成功 + Restoring stored procedure complete... Success + + + + 开始恢复函数... + Start restoring functions... + + + + 恢复函数完成...失败 + Restoring function complete... Failed + + + + 恢复函数完成...成功 + Restoring function complete... Success + + + + db_opt_kingbase + + + 未知的数据类型: + Unknown data type: + + + + 获取主键查询失败: + 获取主键查询失败: + + + + + + 无法切换数据库 + Unable to switch the database + + + + 读取数据库结构定义文件失败! + Failed to read the database structure definition file! + + + + + 开始导入数据文件... + Start importing data files... + + + + + 打开导入文件失败 + Failed to open import file + + + + + + + + + + Sql文件 + SQL File + + + + + + + + + + 行 + Line + + + + + + + + + + 出错SQL语句: + Error SQL statement: + + + + + + + + + + +出错原因: + +Error SQL statement: + + + 出错原因: + Error SQL statement: + + + + + 导入数据文件完成...! + Import ing data file is done...! + + + + + + 表: + Table: + + + + + + 的字段: + Fields of: + + + + 类型修改失败! + Type modification failed! + + + + 类型修改成功! + Type modification failed! + + + + 无法添加列 + Unable to add a column + + + + 删除成功! + The deletion was successful! + + + + db_opt_mysql + + + 未知的数据类型: + Unknown data type: + + + + sql执行失败: + + SQL execution failed: + + + + +错误原因: + + + + + + + + + 表: + Table: + + + + + + + + 的字段: + Fields of: + + + + 删除成功! + The deletion was successful! + + + + 无法添加列 + Unable to add a column + + + + 类型修改失败! + Type modification failed! + + + + 类型修改成功! + Type modification was successful! + + + + 修改失败! + Modification failed! + + + + 添加失败! + Addition failed! + + + + 开始导入数据库文件... + Starting to import database files... + + + + + 打开导入文件失败 + Failed to open the import file + + + + + 分隔符解析错误 + Delimiter parsing error + + + + 删除主键失败!,原因: + Failed to delete the primary key!, for reasons: + + + + 无法切换数据库 + Unable to switch databases + + + + 开始导入数据文件... + Starting to import data files... + + + + 出错SQL语句: + Error SQL statement: + + + + 出错SQL语句: + 出错原因: + Error reason: + + + + 导入数据文件完成...! + Import ing data file is done...! + + + 错误,未处理的数据类型: + Error, unprocessed data type: + + + + 获取主键查询失败: + Failed to retrieve the primary key: + + + 文件名解析失败: + File name resolution failed: + + + 打开导入文件失败: + Failed to open import file: + + + 未找到对应的表: + The table for the corresponding was not found: + + + + db_opt_opengauss + + + 未知的数据类型: + Unknown data type: + + + + 获取主键查询失败: + 获取主键查询失败: + + + + + 无法切换数据库 + Unable to switch databases + + + + + 开始导入数据文件... + Start importing data files... + + + + + 打开导入文件失败 + Failed to open import file + + + + + + + + + + Sql文件 + SQL File + + + + + + + + + + 行 + Line + + + + + + + + + + 出错SQL语句: + Error SQL statement: + + + + + + + + + + +出错原因: + +Error SQL statement: + + + + + 导入数据文件完成...! + Import ing data file is done...! + + + + + + 表: + Table: + + + + + + 的字段: + Fields of: + + + + 类型修改失败! + Type modification failed! + + + + 类型修改成功! + Type modification failed! + + + + 无法添加列 + Unable to add a column + + + + 删除成功! + The deletion was successful! + + + + file_opt + + + 拷贝文件: + Copying file: + + + + 失败! + Failed! + + + + kbd_dbms::db_manager_api + + + 开始创建数据库操作句柄... + Starting to create a database operation handle... + + + + 未知的数据库类型... + Unknown database type... + + + + 开始打开数据库... + Starting to open the database... + + + + 打开数据库: + Opening the database: + + + + + 失败! + Failed! + + + + 打开数据库成功... + Successfully opened the database... + + + + 删除数据库: + Deleting the database: + + + + 失败!请检查是否有其他程序正在连接此数据库 + Failed! Please check if there are other programs currently connected to this database. + + + + 创建数据库: + Creating the database: + + + + 失败: + Failed: + + + + + 创建数据库成功... + Successfully created the database... + + + + + + + 路径: + Path: + + + + + + + 不存在! + Does not exist! + + + + + 不存在 + Does not exist + + + + 开始创建参数表... + Starting to create the parameter table... + + + + 执行数据库定义配置文件失败! + Failed to execute the database definition configuration file! + + + + 创建参数表完成... + Parameter table creation completed... + + + + 开始创建历史表... + Starting to create the history table... + + + + + 执行函数定义文件失败 + Failed to execute the function definition file + + + + 创建历史表成功... + History table created successfully... + + + + + 开始导入基础数据... + Starting to import basic data... + + + + + + 导入 + Import + + + + 下的基础数据失败! + Failed to import basic data! + + + + 下基础数据导入完成... + Basic data import completed... + + + + + 下的Exl数据失败! + Failed to import Excel data! + + + + 解压 + Unzip + + + + 解压数据压缩包成功... + Successfully unzipped the data package... + + + + 未知格式的文件 + File of unknown format + + + + 开始删除触发器... + Starting to delete the trigger... + + + + 删除触发器失败! + Failed to delete the trigger! + + + + 触发器删除成功... + Trigger deleted successfully... + + + + 导入excel文件成功... + Successfully imported Excel file... + + + + + + 导出数据库文件失败! + Failed to export database file! + + + + + + + + + 拷贝文件失败! + Copying files failed! + + + + + + + + 拷贝文件成功! + Copying files succeeded! + + + + + + + 导入数据库文件失败! + Failed to import database file! + + + + + + + 数据库文件database.sql不存在! + Database file database.sql does not exist! + + + + + 删除文件夹 + Deleting folder + + + + 失败 + Failed + + + + 成功 + Successful + + + + 开始拷贝文件! + Starting to copy the file! + + + + 执行创建任务命令失败!,命令: + Failed to execute the create task command!, command: + + + + 删除触发器/存储过程/函数失败! + Failed to delete the trigger/stored procedure/function! + + + + 更新数据库表结构失败! + Failed to update the database table structure! + + + + 创建触发器失败! + Failed to create the trigger! + + + + 更新触发器和存储过程失败! + Failed to update the trigger and stored procedures! + + + + 删除文件失败! + Failed to delete the file! + + + + 开始导入完整工程... + Starting to import the complete project... + + + + 复制文件成功... + Successfully copied the file... + + + + 开始创建数据库... + Starting to create the database... + + + + 开始升级数据库表结构... + Starting to upgrade the database table structure... + + + + 数据库表结构升级成功... + The database table structure was successfully upgraded... + + + + 导入基础数据完成... + Import of basic data completed... + + + + + 开始创建数据库表结构... + Starting to create the database table structure... + + + + 开始部署... + Starting deployment... + + + + 部署成功... + Deployment successful... + + + + 开始创建触发器等... + Starting to create triggers, etc... + + + + 创建触发器等成功... + Successfully created triggers, etc... + + + + 初始化完整工程完成... + Initialization of the complete project is complete... + + + + 本地化部署-切换数据库失败! + Localization deployment - failed to switch databases! + + + + 本地化部署-创建域信息失败! + Localization deployment - failed to create domain information! + + + + 本地化部署-创建位置信息失败! + Localization deployment - failed to create location information! + + + + 本地化部署-创建应用部署信息失败! + Localization deployment - failed to create application deployment information! + + + + 本地化部署-创建机器节点失败! + Localization deployment - failed to create machine node! + + + + 本地化部署-应用部署失败! + Localization deployment - application deployment failed! + + + + 本地化部署-创建数据库节点失败! + Localization deployment - failed to create database node! + + + + 本地化部署-部署数据库失败! + Localization deployment - database deployment failed! + + + diff --git a/resource/fr/debug_tool/image/check.png b/resource/fr/debug_tool/image/check.png new file mode 100644 index 0000000000000000000000000000000000000000..d75615e3a6f6ebeff680ce3babf8e6126f3fb77c GIT binary patch literal 651 zcmV;60(AX}P)1vF@0>e2rZZTX8nq~d0-?;1ECi`dWJy{SA{4YKBKlbrMLz^l^aI&KYEzpQ z6|;zJVVOmtP+%#6AZ0BgC`vL%z1^9)efH%hnB7Eyb(9AHR-vv6NC zNzW~fWCnCx$#?>cq~vHcOQ7RPx(8i42OOHJ1Xmv0nJe^_z5M8Lp*=}B7tU@ls?MTu&;36dm z4HCAbB%*R)gU-fs4WUhcw6s7U@?ps1Y+I84FD`g6FJEC#jZWjL0C~aG4oD01_u+cb zHRy1$J&BQk?W+a5*9i*q(l^q7fj-ptT-#fRF;mh|8DOS1ngph+FMo7@cbC^)EVXhL*<)NZ&7yKK&Z0sT$siSSp)|_^7ZOnr5+supnTsHM(4tyI z4-3LF&?sBf!UrKi=7{*njEr)~$2|Y%jsG7l6^rVuF5G+0{m%CwEUALPe72(VzAQT` zGE!-`$irz|D;lQ4arQbCM?0U;d*7ZcLV8<7Rxb|(93KE;wAh?sW9N$9d_|2{usa_S|gK)Q3!J~c^p$LPfClT-*kex<2SRmj~ zp=cs$d@4;0er89hs5yGmUntg8dxeyqF%8X~GNxvAh&+K?U`S^MkqpjE4k!0n;B)bK z_(qN2?pE$oc}r}#vC@*iaVm#8&r+qc&ilouK`#6HpnW&i3f@Kye}&SmFX$8$I838ulCO=fFCq~1uW436=4rw<;~2iu3rCA9~@g| UI{&Xswg3PC07*qoM6N<$f`#8!VE_OC literal 0 HcmV?d00001 diff --git a/resource/fr/debug_tool/image/search.png b/resource/fr/debug_tool/image/search.png new file mode 100644 index 0000000000000000000000000000000000000000..05160b8a2c19be05d79da83f5b64029fbe0e350d GIT binary patch literal 768 zcmV+b1ONPqP)7i3n2uBA_%&R2!-+@@FH(2E$!^xTtRqKU1TAB z5Zwq}bk{|wSrM7%EV~gy$s~xtKGt?7CfobOW?OSwx^s8V^Sr-v{^#X+2|3qR`OW1L z>rM&AaS-hUxG>qmz$}4YfpOdLIiBRMOW#v=q1ta9B*I++HZjNo_zf{;SfGFyl??1A zKmd3~LNt$d6@AKuGoaTWI}PGn4EzA&vYmhRjmXkS_5!b*FK1igA~Clx<1<(_n9?dvXeM&KWP6lilSH&Jz7XFt z7A&6pAC|6p{8k$gt}$@K)U~z@==EDoAUpu5)6gAP)`DfwfMozwl~4<1V{$_{`JB9g z=wm<}o>TF%aasI5AF#%6o#e$$Y#Pr3d?MS|0rDUy0#KH{po4R%)9eEavcZSc|m@l~ZLZnm`idlf}8M>q84;Xt5@D@YY z%JK!>!RP^-qG7N)Z}?n2i=aOm1W~6_+z^t^!F*6pz`9Pr8B%bMN^L9!)&%D^vr^Mw z8Zms1y0wB{87^mG9|!YW)92j3WR^YB>LG!%%(!a$w2sx#TFI`sh&?A@heCW`NG~y$ z9uAW29ua#j7hD}$@; yN><%1!(N-P4*+nj7 s)9R72Y7#sMQ1myor6p_ljSR;C0000)EuJ+$J=x zTemL6u;}}{yF828g2bjQPV|WU(OA;o_Ao;8B9Q$56v-ap8OQ0bP Mp00i_>zopr0O-#puK)l5 literal 0 HcmV?d00001 diff --git a/resource/fr/debug_tool/image/uncheck1.png b/resource/fr/debug_tool/image/uncheck1.png new file mode 100644 index 0000000000000000000000000000000000000000..31eb83b1bc81b40bc4c4dced8643a3d80d4893c7 GIT binary patch literal 432 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 + + + + AiMonDlg + + + Dialog + Dialog + + + + RTU刷新 + RTU refresh + + + 点配置刷新 + Point refresh + + + + + 数据刷新 + Data refresh + + + 全部 + All + + + 区间 + Interval + + + -- + -- + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + RTU名称 + RTU name + + + + 点号 + Point number + + + + 标签名 + Tag name + + + + 设备 + Device + + + + 点描述 + Point desc + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 后台标签 + Background Label + + + + 远动号 + Remote Control Number + + + + 时间 + Time + + + + 前置设备 + Front-end Equipment + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + 区域start数据非法或为负,默认为0! + The area start data is illegal or negative, the default is 0! + + + 区域end数据非法或为负,默认为0! + The area end data is illegal or negative, the default is 0! + + + 区域start 大于 区域end点数,两者默认为0! + The area start is greater than the area end points, both of which default to 0! + + + + + 停止刷新 + Stop refresh + + + + CCheckUser + + 账号 + Account + + + 姓名 + Name + + + 用户组 + User group + + + 密码 + Password + + + 验证 + Validation + + + 取消 + Cancel + + + 权限验证 + Permission to verify + + + 提示 + Prompt + + + 请输入正确的账号 + Please enter the correct account + + + 账号不能为空 + Account can not be empty + + + 账号不存在 + Account does not exist + + + 权限接口错误 + Permission interface error + + + 密码错误 + wrong password + + + + CDebugTool + + + CDebugTool + CDebugTool + + + + 事件信息 + Event Information + + + + 实时数据 + Real data + + + + 测点选择 + Point selection + + + + 测点监控 + Point monitoring + + + + 实时库表 + Rtdb table + + + + 表选择 + Table selection + + + + 表内容 + Table contents + + + 筛选向导 + Screening Wizard + + + 实时报警 + Real-time alarm + + + 实时事件 + Real-time events + + + 历史事件 + Historical events + + + 节点状态 + Node status + + + 前置通道 + Fes channel + + + + 前置数据 + Fes data + + + + 工程调试工具 + Engineering debugging tools + + + + CEventDataCollect + + + + + + + + + + 错误 + Error + + + + + + + + + + + 打开数据库失败 + Failed to open the database + + + + 其他 + Other + + + + CEventFilterDialog + + + 过滤 + Filter + + + + 时间 + Time + + + + 开始时间 + Start Time + + + + + yyyy/MM/dd hh:mm + yyyy/MM/dd hh:mm + + + + 结束时间 + End Time + + + + 优先级 + Priority + + + + + + + 全选 + Select all + + + + 位置 + Location + + + + 责任区 + Responsibility Zone + + + + 事件状态 + Event Status + + + + 确定 + Confirm + + + + 取消 + Cancel + + + + 设备类型 + Device Type + + + + 事件内容关键字 + Event Content Keywords + + + + 复归 + Reset + + + + 已复归 + Reset Done + + + + 未复归 + Not Reset + + + + CEventFormShow + + + Form + Form + + + + CEventItemModel + + + 时间 + Time + + + + 优先级 + Priority + + + + 位置 + Location + + + + 责任区 + Responsible Area + + + + 事件类型 + Event Type + + + + 事件状态 + Event Status + + + + 复归状态 + Restoration Status + + + + 事件内容 + Event Details + + + + 未复归 + Not Restored + + + + 已复归 + Restored + + + + CFesChanData + + + Form + Form + + + + CFesChannel + + 专业通道 + Sub channel + + + 专业 + Sub + + + 通道 + Channel + + + 通道状态 + Channel status + + + + CFesCtrlSim + + + Form + Form + + + + 模拟量控制 + Analog Control + + + + 数字量控制 + Digital Control + + + + 混合量控制 + Hybrid Control + + + + 自定义控制 + Custom Control + + + + CFesData + + + Form + Form + + + 专业选择 + Sub choice + + + 通讯状态: + Communication status: + + + + 模拟量 + Analog + + + + 数字量 + Digital + + + + 累积量 + Accuml + + + + 混合量 + Mix + + + 通讯中断 + Disconnect + + + 告警 + Alarm + + + 获取进程所在目录失败 + Failed to get the directory where the process is located + + + SYS_MODEL_APP_INFO.xml 配置文件无法打开! + SYS_MODEL_APP_INFO.xml, The configuration file cannot be opened! + + + 通信连接 + Connection + + + 通信中断 + Disconnect + + + + CFesDataSim + + + Form + Form + + + + 模拟量仿真 + Analog Simulation + + + + 数字量仿真 + Digital Simulation + + + + 累积量仿真 + Accumulated Quantity Simulation + + + + 混合量仿真 + Mixed Quantity Simulation + + + + 事件仿真 + Event Simulation + + + + CFesEvent + + + Form + Form + + + + SOE事件 + SOE Event + + + + 通道事件 + Channel Event + + + + SOE内存 + SOE Memory + + + + CFesForwardData + + + Form + Form + + + + 模拟量 + Analog + + + + 单点数字量 + Single Point Digital + + + + 双点数字量 + Dual Point Digital + + + + 累积量 + Accuml + + + + 混合量 + Mix + + + + CFesParamShow + + + Form + Form + + + + 通道参数 + Channel Parameters + + + + RTU参数 + RTU Parameters + + + + CFessim + + + Form + Form + + + + 通讯状态 + Communication Status + + + + 前置数据 + Pre-stage Data + + + + 数据仿真 + Data Simulation + + + + 控制仿真 + Control Simulation + + + + 事件监视 + Event Monitoring + + + + 转发数据 + Forward Data + + + + 通道报文 + Channel Message + + + + 61850工具 + 61850 Tools + + + + 专业名称 + Professional Name + + + + IP地址 + IP Address + + + + 网络端口 + Network Port + + + + 连接/断开 + Connect/Disconnect + + + + 通讯状态: + Communication Status: + + + + + 连接 + Connect + + + + + 通讯断开 + Disconnect + + + + 警告 + Warning + + + + 网络端口错误,无法连接网络 + Network port error, unable to connect to the network + + + + 断开 + Disconnect + + + + 通讯连接 + Communication Connected + + + + CHistoryEvent + + + Form + Form + + + + 查询 + Query + + + + 打印 + Print + + + + 事件条数 + Number of Events + + + + CLoginTool + + 中文 + Chinese + + + 用户 + User + + + 密码 + Password + + + IP地址 + IP address + + + 端口 + Port + + + 数据库类型 + DB type + + + 数据库名称 + DB name + + + 登录 + Login + + + 取消 + Cancel + + + 提示 + prompt + + + 请输入正确的端口号 + Please enter the correct port number + + + 系统初始化失败 + System initialization failed + + + 数据库设置 + DB settings + + + + CMyCalendar + + + Form + Form + + + + 至 + To + + + + 取消 + Cancel + + + + CNodeStatus + + + Form + Form + + + + 关键字 + Keyword + + + + 查找 + Search + + + + 刷新 + Refresh + + + + 全部选中 + Select All + + + + 全部取消 + Deselect All + + + + CRealAlarm + + + Form + + + + + 全部确认 + Confirm all + + + + 当前页确认 + Current page confirm + + + + 所选确认 + Selected confirm + + + + 取消选择 + Cancel selection + + + + 刷新 + Refresh + + + + 停止刷新 + Stop refresh + + + + + 选中条数 + Selected number + + + + 总报警条数 + Total number of alarms + + + + 未确认条数 + Unconfirmed + + + + 级别排序 + Rank order + + + + 滚动刷新 + Rolling refresh + + + + 状态筛选 + Status filtering + + + + 当前报警条数 + Number of current alarms + + + 报警类型 + Alarm type + + + 报警状态 + Alarm status + + + 时标 + Time + + + 域ID + Domain ID + + + 位置ID + location ID + + + 报警内容 + Alarm content + + + 报警优先级id + Alarm priority id + + + 设备类型ID + Device type ID + + + 责任区ID + Responsibility area ID + + + 测点ID + Point ID + + + 设备 + Device + + + + CRealDataControl + + + Form + Form + + + + 控制测点: + Control Points: + + + + 命令类型: + Command Type: + + + + 其他参数: + Other Parameters: + + + + 控制数值: + Control Value: + + + + 执行命令 + Execute Command + + + + 状态查询 + Status Inquiry + + + + 执行状态 + Execution Status + + + + 反馈结果 + Feedback Result + + + + 设置AI限值 + Set AI limits + + + + + + + 服务点禁止刷新报文 + Service point forbids refresh message + + + 服务点禁止报警报文 + Service point prohibits alarm message + + + + + + 服务点禁止告警报文 + Service Point Prohibition Alarm Message + + + + + + + 人工置数报文 + Manual Set Message + + + + + + 遥控请求 + Remote Control Request + + + + + + 遥控选择 + Remote Control Selection + + + + + + 遥控执行 + Remote execution + + + + + + 遥控取消 + Remote cancel + + + + + + 遥控关闭 + Remote shutdown + + + + + 提示 + prompt + + + + + 请输入正确的数值 + Please enter the correct value + + + + + + + 等待返回结果中。。。。 + Waiting for results. . . . + + + + 程序猿还在写 + Program ape is still writing + + + + + + 远程查询实时数据库失败 + Remote query of real-time database failed + + + + 未查询到测点 + No query points found + + + + 限值 + Limit + + + + + 禁止刷新:未设置 + + Disable refresh: not set + + + + + 禁止告警:未设置 + + Prohibit Alarm: Not Set + + + + 禁止刷新:已设置 + + Do Not Refresh: Set + + + + 禁止告警:已设置 + + Do Not Alert: Set + + + 禁止告警:未设置 + Prohibit Alarm: Not Set + + + 禁止告警:已设置 + Prohibit Alarm: Set + + + 禁止报警:未设置 + Disable alarm: not set + + + + + 人工置数:未设置 + Manual Setting: Not Set + + + 禁止刷新:已设置 + Prohibit Refresh: Set + + + 禁止报警:已设置 + Disable alarm: set + + + + 人工置数: + Manual Setting: + + + + 解析返回结果出错 + Error Parsing Return Result + + + + 接受返回结果超时 + Timeout Accepting Return Result + + + + + + + + + 该命令无反馈结果 + No feedback results for this command + + + + + + + 取消 + Cancel + + + + + + + 设置 + Set up + + + + + + + 占用设备 + Occupied equipment + + + + + + + 不占用设备 + No equipment occupied + + + + + 程序猿还没写完 + Program ape has not finished + + + + CRealDataSelect + + + Form + Form + + + + 位置 + Location + + + + 专业 + Specialty + + + + 设备组 + Equipment Group + + + + 查询 + Query + + + 设备 + Device + + + + 测点 + Measurement Point + + + 所有位置 + All Locations + + + 所有专业 + All Specialties + + + 所有设备组 + All Equipment Groups + + + + 请输入描述信息 + Please enter description information + + + + 类型 + Type + + + + + 模拟量 + Analog + + + + + 数字量 + Digital + + + + + 累积量 + Accuml + + + 累计量 + Accuml + + + + + 混合量 + Mix + + + + 常量 + Const + + + + CRealDataWatch + + + Form + + + + 查找 + Search + + + + 测点描述: + Measurement Point Description: + + + + 状态查询 + Status Inquiry + + + + + 全选 + Select All + + + + 模拟量 + Analog Quantity + + + + 数字量 + Digital Quantity + + + + 累积量 + Accumulated Quantity + + + + 混合量 + Mixed Quantity + + + + 启用分页 + Enable Pagination + + + + 上一页 + Previous Page + + + + 下一页 + Next Page + + + + 累加式 + Cumulative + + + 常量 + Constant + + + 测点删除 + Delete Measurement Point + + + Del + Delete + + + 反选 + Invert Selection + + + + 删除 + Delete + + + + 取消选择 + Cancel selection + + + + 请输入描述信息 + Please enter a description + + + + 设备 + Device + + + + 测点 + Point + + + + 位置 + Location + + + + 专业 + Sub + + + + 类型 + Type + + + + 标签 + Tag + + + + 值 + Value + + + + 状态 + Status + + + + 设备组 + Dev group + + + + RTU + RTU + + + + SEQ_NO + SEQ_NO + + + + 是否可控 + Whether controllable + + + + + 提示 + prompt + + + + const类型测点未配置 + Const type measuring point is not configured + + + + + 否 + No + + + + 是 + Yes + + + 所有位置 + All locations + + + 所有专业 + All Subs + + + + 操作 + Operating + + + + 当前未选中任何项! + No items are currently selected! + + + + CRealDatabaseFilter + + 选择字段 + Field + + + 句内条件 + In condition + + + 筛选内容 + Content + + + 句间条件 + Inter condition + + + 添加 + Add + + + 删除 + Delete + + + 执行 + Perform + + + 提示 + Prompt + + + 条件内容为空 + Condition content is empty + + + 列为空 + Column is empty + + + 请选择一个条件行 + Please select a condition line + + + + CRealDatabaseSelect + + + Form + + + + + 位置 + Location + + + + 专业 + Sub + + + + + 表 + Table + + + + 设备组 + Equipment Group + + + + 列 + Column + + + 应用 + Application + + + 表选择 + Table Selection + + + 列选择 + Column Selection + + + + 所有列 + All Columns + + + + 实时数据库选择初始化变量失败 + Initialization of real-time database selection variable failed + + + + 模拟量 + Analog Quantity + + + + 数字量 + Digital Quantity + + + + 累积量 + Accumulative Quantity + + + + 混合量 + Mixed Quantity + + + + CRealDatabaseShow + + + Form + + + + + 设备组 + Dev group + + + + 设备 + Device + + + + RTU + RTU + + + + 前置设备 + Front-end Equipment + + + + 状态查询 + Status Inquiry + + + 专业 + Specialty + + + 设备标签 + Equipment Label + + + 提示 + Hint + + + + + 所有设备 + All Equipment + + + 所有专业 + All Specialties + + + 未知的数据类型 + Unknown Data Type + + + 第 + Incorrect conditional value input in the + + + 行条件数值输入有错 + line + + + + CRealEvent + + + Form + Form + + + + 滚动刷新 + Scroll Refresh + + + + 筛选状态 + Screen Status + + + + 筛选 + Screen + + + + 打印 + Print + + + + 事件条数 + Number of events + + + + CSelectAppDlg + + 连接 + Connect + + + 断开连接 + Disconnect + + + FES IP地址: + FES IP Address: + + + FES网络端口: + FES NET port: + + + 连接状态: + Connection Status: + + + 专业名称: + Sub name: + + + 网络端口错误,无法连接网络。 + The network port is incorrect and cannot connect to the network. + + + 网络连接 + Connect + + + 网络断开 + Disconnect + + + + CStatusDialog + + + Dialog + Dialog + + + + 类型: + Type: + + + + 值: + Value: + + + + 查询 + Query + + + + 提示 + Prompt + + + + 请输入状态值! + Please enter the status value! + + + + ChanEventDlg + + + 通道事件 + Channel Events + + + + + 数据刷新 + Data Refresh + + + + 清除事件 + Clear Events + + + + 事件总数: + Total Events: + + + + 时间 + Time + + + + 通道标签名 + Channel Label Name + + + + 通道状态 + Channel Status + + + + 错误率 + Error Rate + + + + + 告警 + Alert + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication interrupted, data cannot be read. Please connect to the FES system! + + + + + 停止刷新 + Stop Refreshing + + + + 缓冲区溢出 + Buffer Overflow + + + + 通道未使用 + Channel Not in Use + + + + 通道检测 + Channel Detection + + + + 通道运行 + Channel Running + + + + 通道停止 + Channel Stopped + + + + 通道错误率高 + High Channel Error Rate + + + + ChanMonDlg + + + 通道监视 + Channel Monitoring + + + + 通道号 + Channel Number + + + + 发送帧数 + Frames Sent + + + + 接收帧数 + Frames Received + + + + 错误帧数 + Frames Error + + + + 显示接收 + Show Received + + + + 显示发送 + Show Sent + + + + 自动保存 + Auto Save + + + + 过滤显示 + Filter Display + + + + 位置 + Position + + + + 值(0x) + Value(0x) + + + + 1 + 1 + + + + 2 + 2 + + + + 3 + 3 + + + + 4 + 4 + + + + 清除显示 + Clear Display + + + + + + + + + 刷新 + Refresh + + + + 清除统计 + Clear Statistics + + + + 清除文件 + Clear File + + + + + 告警 + Alert + + + + 通信中断,无法读取数据。请连接FES系统! + Communication interrupted, data cannot be read. Please connect to the FES system! + + + + 数据刷新 + Data Refresh + + + + 停止刷新 + Stop Refreshing + + + + 请先取消自动保存! + Please cancel auto-save first! + + + + ChanParamDlg + + + 通道参数 + Channel Parameters + + + + 刷新 + Refresh + + + + 通道号 + Channel Number + + + + 通道描述 + Channel Description + + + + 使用标志 + Usage Flag + + + + 当前状态 + Current Status + + + + 通信方式 + Communication Method + + + + 通道方式 + Channel Mode + + + + 规约类型 + Protocol Type + + + + 连接等待时间 + Connection Wait Time + + + + 链接超时 + Link Timeout + + + + 重连次数 + Reconnection Attempts + + + + 接收超时 + Receive Timeout + + + + 响应超时 + Response Timeout + + + + 接收缓存区长度 + Receive Buffer Length + + + + 发送缓存区长度 + Send Buffer Length + + + + 帧错误标准 + Frame Error Standard + + + + + IP1 + IP1 + + + + PortNo1 + Port Number 1 + + + + IP2 + IP2 + + + + PortNo2 + Port Number 2 + + + + PortNo3 + Port Number 3 + + + + IP4 + IP4 + + + + PortNo4 + Port Number 4 + + + + 备用通道号1 + Backup Channel Number 1 + + + + 备用通道号2 + Backup Channel Number 2 + + + + 备用通道号3 + Backup Channel Number 3 + + + + 本地端口号 + Local Port Number + + + + 告警 + Alert + + + + 通信中断,无法读取数据。请连接FES系统! + Communication interrupted, data cannot be read. Please connect to the FES system! + + + + 使用 + In Use + + + + + 未使用 + Not in Use + + + + 通道检测 + Channel Detection + + + + 通道运行 + Channel Running + + + + 通道停止 + Channel Stopped + + + + 接收帧错误率高 + High Frame Error Rate in Reception + + + + TCP Client + TCP Client + + + + TCP Server + TCP Server + + + + UDP Client + UDP Client + + + + UDP Server + UDP Server + + + + Serial Port + + + + + Unknown Type + + + + + 双通道通信 + Dual-channel Communication + + + + 单通道通信 + Single-channel Communication + + + + DefCmdDlg + + + 自定义命控制 + Custom Command Control + + + + RTU刷新 + RTU refresh + + + + 设备ID + Device ID + + + + 命令个数: + Number of Commands: + + + + 序号 + Serial Number + + + + 关键字 + Keyword + + + + 数值 + Value + + + + 1 + 1 + + + + 2 + 2 + + + + 3 + 3 + + + + 4 + 4 + + + + 5 + 5 + + + + 6 + 6 + + + + 控制执行 + Execute Control + + + + 清除内容 + Clear Content + + + + 自定义内容 + Custom Content + + + + RTU号 + RTU Number + + + + 使用标志 + Use Flag + + + + 描述 + Description + + + + + 告警 + Alarm + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted, and data could not be read. Please connect to the FES system! + + + + 没有选择RTU,请选择! + No RTU selected, please select one! + + + + + 信息 + Information + + + + 控制执行成功! + Control execution successful! + + + + 控制执行失败! + Control execution failed! + + + + DiMonDlg + + + Dialog + 对话框 + + + + RTU刷新 + RTU refresh + + + 点配置刷新 + Point refresh + + + + + 数据刷新 + Data refresh + + + 全部 + All + + + 区间 + Interval + + + -- + -- + + + + 前置设备 + Front-end Equipment + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + RTU名称 + RTU name + + + + 点号 + Point number + + + + 标签名 + Tag name + + + + 设备 + Device + + + + 点描述 + Point desc + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 后台标签 + Background Label + + + + 远动号 + Remote Control Number + + + + 时间 + Time + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + 区域start数据非法或为负,默认为0! + The area start data is illegal or negative, the default is 0! + + + 区域end数据非法或为负,默认为0! + The area end data is illegal or negative, the default is 0! + + + 区域start 大于 区域end点数,两者默认为0! + The area start is greater than the area end points, both of which default to 0! + + + + + 停止刷新 + Stop refresh + + + + FwAccMonDlg + + + 转发电度量 + Forward Electricity Metering + + + + RTU刷新 + RTU refresh + + + + + 数据刷新 + Data refresh + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + + 描述 + Description + + + + 点号 + Point number + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 设备 + Device + + + + 时间 + Time + + + + 源RTU号 + Source RTU Number + + + + 源点号 + Source Point Number + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + FwAiMonDlg + + + 转发模拟量 + Forward Analog Value + + + + RTU刷新 + RTU refresh + + + + + 数据刷新 + Data refresh + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + + 描述 + Description + + + + 点号 + Point number + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 设备 + Device + + + + 时间 + Time + + + + 源RTU号 + Source RTU Number + + + + 源点号 + Source Point Number + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + FwDDiMonDlg + + + 转发双点数字量 + Forward Dual Digital Quantity + + + + RTU刷新 + RTU refresh + + + + + 数据刷新 + Data refresh + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + + 描述 + Description + + + + 点号 + Point Number + + + + 点值 + Point Value + + + + 点状态 + Point Status + + + + 设备 + Device + + + + 时间 + Time + + + + 源RTU号 + Source RTU Number + + + + 源点号 + Source Point Number + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + FwDiMonDlg + + + 转发单点数字量 + Forward Single Digital Quantity + + + + RTU刷新 + RTU refresh + + + + + 数据刷新 + Data refresh + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + + 描述 + Description + + + + 点号 + Point number + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 设备 + Device + + + + 时间 + Time + + + + 源RTU号 + Source RTU Number + + + + 源点号 + Source Point Number + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + FwMiMonDlg + + + 转发混合量 + Forward Mixed Quantity + + + + RTU刷新 + RTU refresh + + + + + 数据刷新 + Data refresh + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + + 描述 + Description + + + + 点号 + Point number + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 设备 + Device + + + + 时间 + Time + + + + 源RTU号 + Source RTU Number + + + + 源点号 + Source Point Number + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + MiMonDlg + + + Dialog + + + + + RTU刷新 + RTU refresh + + + 点配置刷新 + Point refresh + + + + + 数据刷新 + Data refresh + + + 全部 + All + + + 区间 + Interval + + + -- + -- + + + + 前置设备 + Front-end Equipment + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + RTU名称 + RTU name + + + + 点号 + Point number + + + + 标签名 + Tag name + + + + 设备 + Device + + + + 点描述 + Point desc + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 后台标签 + Background Label + + + + 远动号 + Remote Control Number + + + + 时间 + Time + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + 区域start数据非法或为负,默认为0! + The area start data is illegal or negative, the default is 0! + + + 区域end数据非法或为负,默认为0! + The area end data is illegal or negative, the default is 0! + + + 区域start 大于 区域end点数,两者默认为0! + The area start is greater than the area end points, both of which default to 0! + + + + + 停止刷新 + Stop refresh + + + + PiMonDlg + + + Dialog + + + + + RTU刷新 + RTU refresh + + + 点配置刷新 + Point refresh + + + + + 数据刷新 + Data refresh + + + 全部 + All + + + 区间 + Interval + + + -- + -- + + + + 前置设备 + Front-end Equipment + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + RTU名称 + RTU name + + + + 点号 + Point number + + + + 标签名 + Tag name + + + + 设备 + Device + + + + 点描述 + Point desc + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 后台标签 + Background Label + + + + 远动号 + Remote Control Number + + + + 时间 + Time + + + + + + + + 告警 + Alarm + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + 区域start数据非法或为负,默认为0! + The area start data is illegal or negative, the default is 0! + + + 区域end数据非法或为负,默认为0! + The area end data is illegal or negative, the default is 0! + + + 区域start 大于 区域end点数,两者默认为0! + The area start is greater than the area end points, both of which default to 0! + + + + + 停止刷新 + Stop refresh + + + + QObject + + + 初始化消息总线失败 + Failed to initialize message bus + + + + 初始化数据库接口失败 + Failed to initialize database interface + + + + 状态正常 + Status Normal + + + + 值未更新 + Value Not Updated + + + + 点值无效 + Point Value Invalid + + + + 点值超限 + Point Value Exceeded + + + + 通信中断 + Disconnect + + + + 正常 + Normal + + + + 无效 + Invalid + + + + RtuParamDlg + + + RTU参数 + RTU Parameters + + + + 刷新 + Refresh + + + + RTU号 + RTU number + + + + 描述 + Description + + + + 使用标志 + Use flag + + + + 当前状态 + Current Status + + + + RTU地址 + RTU Address + + + + 通道号 + Channel Number + + + + 模拟量个数 + Number of Analog Quantities + + + + 数字量个数 + Number of Digital Quantities + + + + 累积量个数 + Number of Accumulative Quantities + + + + 失败计数限值 + Failure Count Limit + + + + 告警 + Alarm + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect to the FES system! + + + + 使用 + Used + + + + + 未使用 + Not Used + + + + 通信正常 + Communication Normal + + + + 通信中断 + Communication Interrupted + + + + SimAiDlg + + + 模拟量仿真 + Analog Simulation + + + + RTU刷新 + RTU Refresh + + + + + 数据刷新 + Data Refresh + + + + 前置设备 + Front-end Device + + + + RTU号 + RTU Number + + + + + 使用标志 + Use Flag + + + + 描述 + Description + + + + 当前测点 + Current Measurement Point + + + + 当前RTU + Current RTU + + + + 所有RTU + All RTUs + + + + 固定置数 + Fixed Value Setting + + + + 值: + Value: + + + + 点状态: + Status: + + + + 固定设置 + Fixed Settings + + + + + + 停止设置 + 停止设置 + Stop Setting + + + + 线性置数 + Linear Value Setting + + + + 线性设置 + Linear Settings + + + + 步长值: + Step Value: + + + + 周期秒: + Cycle Seconds: + + + + 最小值: + Minimum Value: + + + + 最大值: + Maximum Value: + + + + 随机置数 + Random Value Setting + + + + 随机设置 + Random Settings + + + + 点号 + Point Number + + + + 标签名 + Tag Name + + + + 点描述 + Point Description + + + + 点值 + Point Value + + + + 点状态 + Point Status + + + + 设备 + Equipment + + + + 后台标签 + Backend Tag + + + + 远动号 + Remote Control Number + + + + + + + + + + + + + + + + + + + 告警 + Alarm + + + + + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + + + 没有选择RTU,请选择! + Please select an RTU! + + + + + + 没有选择点,请选择! + Please select a point! + + + + + + 信息 + Information + + + + 固定设置成功! + Fixed setting successful! + + + + 线性设置成功! + Linear setting successful! + + + + 随机设置成功! + Random setting successful! + + + + 最大值小于最小值 + The maximum value is less than the minimum value. + + + + SimAoDlg + + + 模拟量仿真 + Analog Simulation + + + + RTU刷新 + RTU Refresh + + + + 前置设备 + Front-end Device + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + 描述 + Description + + + + 选择 + Select + + + + 执行 + Perform + + + + 放弃 + Give up + + + + 控制值: + Control Value: + + + + 控制执行 + Control Execution + + + + 点号 + Point number + + + + 标签名 + Tag name + + + + 点描述 + Point description + + + + 设备 + Device + + + + 远动号 + Remote Control Number + + + + + + + + + 告警 + Alarm + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + 没有选择RTU,请选择! + Please select an RTU! + + + + 没有选择点,请选择! + Please select a point! + + + + + 信息 + Information + + + + 控制执行成功! + Control execution successful! + + + + 控制执行失败! + Control execution failed! + + + + SimDiDlg + + + 数字量仿真 + Digital Simulation + + + + RTU刷新 + RTU Refresh + + + + + 数据刷新 + Data Refresh + + + + 前置设备 + Upstream Equipment + + + + RTU号 + RTU Number + + + + + 使用标志 + Usage Flag + + + + 描述 + Description + + + + 当前测点 + Current Measurement Point + + + + 当前RTU + Current RTU + + + + 所有RTU + All RTUs + + + + + 固定设置 + Fixed Settings + + + + + 停止设置 + Stop Settings + + + + 值: + Value: + + + + 停止设置 + Stop Setting + + + + 点状态: + Status: + + + + + 周期设置 + Periodic Setting + + + + 周期秒: + Period in Seconds: + + + + + 随机设置 + Random Setting + + + + 点号 + Point Number + + + + 标签名 + Label Name + + + + 点描述 + Point Description + + + + 点值 + Point Value + + + + 点状态 + Point Status + + + + 设备 + Equipment + + + + 后台标签 + Background Label + + + + 远动号 + Remote Control Number + + + + + + + + + + + + + + + + + + 告警 + Alarm + + + + + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + + + 没有选择RTU,请选择! + Please select an RTU! + + + + + + 没有选择点,请选择! + Please select a point! + + + + + + 信息 + Information + + + + 固定设置成功! + Fixed setting successful! + + + + 周期设置成功! + Periodic setting successful! + + + + 随机设置成功! + Random setting successful! + + + + SimDoDlg + + + 数字量控制 + Digital Control + + + + RTU刷新 + RTU Refresh + + + + 前置设备 + Upstream Equipment + + + + RTU号 + RTU number + + + + + 使用标志 + Use flag + + + + 描述 + Description + + + + 选择 + Select + + + + 执行 + Perform + + + + 放弃 + Abandon + + + + 控制值: + Control Value: + + + + 控制执行 + Control Execution + + + + 点号 + Point Number + + + + 标签名 + Tag Name + + + + 点描述 + Point Description + + + + 设备 + Device + + + + 远动号 + Remote Control Number + + + + + + + + + 告警 + Alarm + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + 没有选择RTU,请选择! + Please select an RTU! + + + + 没有选择点,请选择! + Please select a point! + + + + + 信息 + Information + + + + 控制执行成功! + Control execution was successful! + + + + 控制执行失败! + Control execution failed! + + + + SimEventDlg + + + 事件仿真 + Event Simulation + + + + RTU刷新 + RTU Refresh + + + + 前置设备 + Upstream Equipment + + + + 故障值个数: + Number of Fault Values: + + + + 1#故障类型: + Fault Type 1#: + + + + 故障值1: + Fault Value 1: + + + + 2#故障类型: + Fault Type 2#: + + + + 3#故障类型: + Fault Type 3#: + + + + 故障值2: + Fault Value 2: + + + + 故障值3: + Fault Value 3: + + + + 4#故障类型: + Fault Type 4#: + + + + 故障值4: + Fault Value 4: + + + + RTU号 + RTU Number + + + + + 使用标志 + Usage Flag + + + + 描述 + Description + + + + 点值: + Point Value: + + + + 点状态: + Status: + + + + 产生事件 + Generate Event + + + + 点号 + Point Number + + + + 标签名 + Tag Name + + + + 点描述 + Point Description + + + + 设备 + Device + + + + 后台标签 + Background Label + + + + 远动号 + Remote Control Number + + + + + + + + + 告警 + Alarm + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + 没有选择RTU,请选择! + Please select an RTU! + + + + 没有选择点,请选择! + Please select a point! + + + + 信息 + Information + + + + 产生事件成功! + Event generated successfully! + + + + SimMiDlg + + + 混合量仿真 + Mixed Quantity Simulation + + + + RTU刷新 + RTU Refresh + + + + + 数据刷新 + Data Refresh + + + + 前置设备 + Upstream Equipment + + + + RTU号 + RTU Number + + + + + 使用标志 + Usage Flag + + + + 描述 + Description + + + + 当前测点 + Current Measurement Point + + + + 当前RTU + Current RTU + + + + 所有RTU + All RTUs + + + + 固定置数 + Fixed Value Setting + + + + 值: + Value: + + + + 点状态: + Status: + + + + 停止设置 + Stop Setting + + + + 固定设置 + Fixed Setting + + + + 停止设置 + Stop Setting + + + + 线性置数 + Linear Value Setting + + + + 最小值: + Minimum Value: + + + + 最大值: + Maximum Value: + + + + 步长值: + Step Value: + + + + 周期秒: + Cycle in Seconds: + + + + 线性设置 + Linear Setting + + + + 停止置数 + Stop Value Setting + + + + 随机置数 + Random Value Setting + + + + 随机设置 + Random Setting + + + + 点号 + Point number + + + + 标签名 + Tag name + + + + 点描述 + Point desc + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 设备 + Device + + + + 后台标签 + Background Label + + + + 远动号 + Remote Control Number + + + + + + + + + + + + + + + + + + 告警 + Alarm + + + + + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + + + 没有选择RTU,请选择! + Please select an RTU! + + + + + + 没有选择点,请选择! + Please select a point! + + + + + + 信息 + Information + + + + 固定设置成功! + Fixed setting successful! + + + + 线性设置成功! + Linear setting successful! + + + + 随机设置成功! + Random setting successful! + + + + SimMoDlg + + + 混合量输出 + Mixed Output + + + + RTU刷新 + RTU Refresh + + + + 前置设备 + Pre-positioned Equipment + + + + RTU号 + RTU Number + + + + + 使用标志 + Use Flag + + + + 描述 + Description + + + + 选择 + Select + + + + 执行 + Execute + + + + 放弃 + Abandon + + + + 控制值: + Control Value: + + + + 控制执行 + Execute Control + + + + 点号 + Point Number + + + + 标签名 + Tag Name + + + + 点描述 + Point Description + + + + 设备 + Device + + + + 远动号 + Remote Control Number + + + + + + + + + 告警 + Alarm + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + 没有选择RTU,请选择! + Please select an RTU! + + + + 没有选择点,请选择! + Please select a point! + + + + + 信息 + Information + + + + 控制执行成功! + Control execution successful! + + + + 控制执行失败! + Control execution failed! + + + + SimPiDlg + + + 电度量仿真 + Electricity Metering Simulation + + + + RTU刷新 + RTU Refresh + + + + + 数据刷新 + Data Refresh + + + + 前置设备 + Pre-positioned Equipment + + + + RTU号 + RTU Number + + + + + 使用标志 + Usage Flag + + + + 描述 + Description + + + + 当前测点 + Current Measurement Point + + + + 当前RTU + Current RTU + + + + 所有RTU + All RTUs + + + + 固定置数 + Fixed Value Setting + + + + 停止设置 + Stop Setting + + + + 值: + Value: + + + + 点状态: + Status: + + + + 固定设置 + Fixed Setting + + + + 线性置数 + Linear Value Setting + + + + 线性设置 + Linear Setting + + + + + 停止设置 + Stop Setting + + + + 步长值: + Step Value: + + + + 周期秒: + Period in Seconds: + + + + 最小值: + Minimum Value: + + + + 最大值: + Maximum Value: + + + + 随机置数 + Random Value Setting + + + + 随机设置 + Random Setting + + + + 点号 + Point Number + + + + 标签名 + Tag Name + + + + 点描述 + Point Description + + + + 点值 + Point Value + + + + 点状态 + Point Status + + + + 设备 + Device + + + + 后台标签 + Background Label + + + + 远动号 + Remote Control Number + + + + + + + + + + + + + + + + + + + 告警 + Alarm + + + + + + + + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + + + 没有选择RTU,请选择! + Please select an RTU! + + + + + + 没有选择点,请选择! + Please select a point! + + + + + + 信息 + Information + + + + 固定设置成功! + Fixed setting successful! + + + + 线性设置成功! + Linear setting successful! + + + + 随机设置成功! + Random setting successful! + + + + 最大值小于最小值 + The maximum value is less than the minimum value. + + + + SoeEventDlg + + + SOE事件 + SOE Event + + + + + 数据刷新 + Data Refresh + + + + 清除事件 + Clear Events + + + + 事件总数: + Total Number of Events: + + + + 时间 + Time + + + + 标签名 + Tag Name + + + + 点值 + Point Value + + + + 点状态 + Point Status + + + + 故障个数 + Number of Faults + + + + 故障源1 + Fault Source 1 + + + + 故障值1 + Fault Value 1 + + + + 故障源2 + Fault Source 2 + + + + 故障值2 + Fault Value 2 + + + + 故障源3 + Fault Source 3 + + + + 故障值3 + Fault Value 3 + + + + 故障源4 + Fault Source 4 + + + + 故障值4 + Fault Value 4 + + + + + 告警 + Alarm + + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + + + 停止刷新 + Stop refresh + + + + 缓冲区溢出 + Buffer Overflow + + + + SoeMemorydlg + + + SOE内存 + SOE Memory + + + + 数据刷新 + Data refresh + + + + 序号 + Serial Number + + + + 时间 + Time + + + + 标签名 + Tag name + + + + 点值 + Point value + + + + 点状态 + Point status + + + + 故障个数 + Number of Faults + + + + 故障源1 + Fault Source 1 + + + + 故障值1 + Fault Value 1 + + + + 故障源2 + Fault Source 2 + + + + 故障值2 + Fault Value 2 + + + + 故障源3 + Fault Source 3 + + + + 故障值3 + Fault Value 3 + + + + 故障源4 + Fault Source 4 + + + + 故障值4 + Fault Value 4 + + + + 告警 + Alarm + + + + 通信中断,无法读取数据。请连接FES系统! + Communication was interrupted and data could not be read. Please connect FES system! + + + diff --git a/resource/fr/fbd_editor/product_en.qm b/resource/fr/fbd_editor/product_en.qm new file mode 100644 index 0000000000000000000000000000000000000000..ab06c4de5c7dd691524701e443462649929fc9e2 GIT binary patch literal 47909 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 + + + + ActionAOPlugin + + AO控制 + AO Control + + + 目标值 + Target Value + + + 使能 + Enable + + + 0-NO + 0-No + + + 1-YES + 1-Yes + + + 动作名称 + Action Name + + + 超时时间(单位:s) + Timeout Time (unit: s) + + + 控制测点串 + Control Measurement String + + + 失败重做次数 + Number of Retries on Failure + + + 输入控制测点串 + Enter Control Measurement String + + + 测点 + Measurement Point + + + + ActionDOPlugin + + 1-上升沿触发,2-下降沿触发,3-高电平触发,4-低电平触发,5-PID触发 + 1-Rising Edge Trigger, 2-Falling Edge Trigger, 3-High Level Trigger, 4-Low Level Trigger, 5-PID Trigger + + + 1-动作停止,2-动作跳过,3-动作自动重做 + 1-Action Stop, 2-Action Skip, 3-Action Auto Redo + + + 1-动作停止,2-动作跳过 + 1-Action Stop, 2-Action Skip + + + 目标值 + Target Value + + + 使能 + Enable + + + 0-NO + 0-No + + + 1-YES + 1-Yes + + + 动作名称 + Action Name + + + 超时时间(单位:s) + Timeout Time (unit: s) + + + 控制测点串 + Control Measurement Point String + + + 失败重做次数 + Number of Retries on Failure + + + 输入控制测点串 + Enter Control Measurement Point String + + + 测点 + Measurement Point + + + + Add2FPlugin + + 加(A) + Add(A) + + + 运算模块 + Arithmetic Module + + + + AlarmDelayDlg + + + 延迟配置 + Delay Configuration + + + + 延迟时间(s) + Delay Time (s) + + + + s + s + + + + 过滤条件 + Filter Conditions + + + + 过滤已确认 + Filter Confirmed + + + + 过滤已复归 + Filter Reset + + + + OK + OK + + + + Cancel + Cancel + + + + AlarmDelayPlugin + + + + 告警 + Alarm + + + + + 使能 + Enable + + + + 过滤配置 + Filter Configuration + + + + 延迟时间(s) + Delay Time (s) + + + + 最大值为14400!!! + The maximum value is 14400!!! + + + + 最小值为0!!! + The minimum value is 0!!! + + + + 过滤配置不能为空 + Filter configuration cannot be empty + + + + 延迟时间不能小于0 + Delay time cannot be less than 0 + + + 告警延迟 + Alarm Delay + + + + AlarmGeneratePlugin + + 告警生成 + Alarm Generation + + + + AlarmPushDlg + + + 告警推送 + Alarm Push + + + + OK + OK + + + + 智能推送 + Smart Push + + + + Cancel + Cancel + + + + 收件人 + Recipient + + + + 移除<< + Remove << + + + + 添加>> + Add >> + + + + 附加用户 + Additional Users + + + + 多个附加用户请用分号分开 + Separate multiple additional users with semicolons + + + + 编辑 + Edit + + + + 推送格式 + Push Format + + + + 推送方式 + Push Method + + + + 邮件 + Email + + + + 短信 + SMS + + + + 电话 + Phone + + + + 邮件标题 + Email Title + + + + 格式配置 + Format Configuration + + + + 预览 + Preview + + + + 自定义 + Customize + + + + 模板 + Template + + + + 数量 + Quantity + + + + 1级数量 + Level 1 Quantity + + + + 时间 + Time + + + + 2级数量 + Level 2 Quantity + + + + 5级数量 + Level 5 Quantity + + + + 4级数量 + Level 4 Quantity + + + + 3级数量 + Level 3 Quantity + + + + 应用 + Apply + + + + 位置 + Location + + + + 等级 + Level + + + + 域 + Domain + + + + 内容 + Content + + + + 状态 + Status + + + + 专业 + Professional + + + + 责任区 + Responsibility Area + + + + 设备组 + Device Group + + + + 测点 + Measurement Point + + + + 设备 + Device + + + + 循环 + Cycle + + + + + 警告 + Warning + + + + + 格式错误! + Format Error! + + + + AlarmPushPlugin + + + 告警 + Alarm + + + + + 使能 + Enable + + + + + 收件人 + Recipient + + + + 内容 + Content + + + + 推送类型 + Push Type + + + + 推送类型配置不能为空 + The push type configuration cannot be empty + + + + 收件人配置不能为空 + The recipient configuration cannot be empty + + + + + + 标题 + Title + + + 告警推送 + Alarm Push + + + 循环内格式错误!请勿修改自动生成的内容 + Loop format error! Please do not modify the automatically generated content + + + + AlarmSplitPlugin + + + 告警 + Alarm + + + + + 使能 + Enable + + + + 输出个数 + Number of Outputs + + + + 输出端口 + Output Port + + + + 数据 + Data + + + + 拆分个数必须大于0 + The number of splits must be greater than 0 + + + + 输出个数不能超过32个!!! + The number of outputs cannot exceed 32!!! + + + + 输入值不能小于0 + The input value cannot be less than 0 + + + + 输入值与现值相同 + The input value is the same as the current value + + + + + 时间 + Time + + + + 0-时间 + 0-Time + + + + 1-域ID + 1-Domain ID + + + + 2-位置ID + 2-Location ID + + + + 3-应用ID + 3-Application ID + + + + 4-优先级ID + 4-Priority ID + + + + 5-内容 + 5-Content + + + + 6-状态ID + 6-Status ID + + + + 7-专业ID + 7-Professional ID + + + + 8-责任区ID + 8-Responsibility Area ID + + + + 9-设备组标签 + 9-Device Group Label + + + + 10-测点标签 + 10-Measurement Point Label + + + + 11-设备标签 + 11-Device Label + + + + 0 + 0 + + + + 5 + 5 + + + + 内容 + Content + + + + 9 + 9 + + + + 设备组标签 + Device Group Label + + + + 10 + 10 + + + + 测点标签 + Measurement Point Label + + + + 11 + 11 + + + + 设备标签 + Device Label + + + + 1 + 1 + + + + 域ID + Domain ID + + + + 2 + 2 + + + + 位置ID + Location ID + + + + 3 + 3 + + + + 应用ID + Application ID + + + + 4 + 4 + + + + 优先级ID + Priority ID + + + + 6 + 6 + + + + 状态ID + Status ID + + + + 7 + 7 + + + + 专业ID + Professional ID + + + + 8 + 8 + + + + 责任区ID + Responsibility Area ID + + + 告警拆分 + Alarm Split + + + 映射 + Mapping + + + + AlarmSubscribePlugin + + 告警订阅 + Alarm Subscription + + + 告警类型使能 + Alarm Type Enable + + + 告警类型 + Alarm Type + + + 告警状态使能 + Alarm Status Enable + + + 告警状态 + Alarm Status + + + 告警等级使能 + Alarm Level Enable + + + 告警等级 + Alarm Level + + + 位置使能 + Location Enable + + + 位置 + Location + + + 专业使能 + Professional Enable + + + 专业 + Professional + + + 设备类型使能 + Equipment Type Enable + + + 设备类型 + Equipment Type + + + 责任区使能 + Responsible Area Enable + + + 责任区 + Responsible Area + + + 设备或测点使能 + Equipment or Measurement Point Enable + + + 设备或测点 + Equipment or Measurement Point + + + 错误 + Error + + + 初始化失败 + Initialization Failed + + + 未知的属性名 + Unknown Property Name + + + 告警类型已使能,但是告警类型未选择 + Alarm Type Enabled, but No Alarm Type Selected + + + 告警状态已使能,但是告警状态未选择 + Alarm Status Enabled, but No Alarm Status Selected + + + 告警等级已使能,但是告警等级未选择 + Alarm Level Enabled, but No Alarm Level Selected + + + 位置已使能,但是位置未选择 + Location Enabled, but No Location Selected + + + 专业已使能,但是专业未选择 + Professional Enabled, but No Professional Selected + + + 设备类型已使能,但是设备类型未选择 + Equipment Type Enabled, but No Equipment Type Selected + + + 责任区已使能,但是责任区未选择 + Responsible Area Enabled, but No Responsible Area Selected + + + 设备或测点已使能,但是设备或测点未选择 + Equipment or measurement point is enabled, but no equipment or measurement point is selected + + + + And2Plugin + + 与 + And + + + 转换个数 + Number of Conversions + + + 输入个数不能超过32个!!! + The number of inputs cannot exceed 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the current value + + + + AttachDlg + + + 附加用户 + Additional Users + + + + 添加 + Add + + + + 删除 + Delete + + + + 邮件校验 + Email Verification + + + + 电话校验 + Phone Verification + + + + 邮箱格式校验:未通过! + Email format check: Failed! + + + + 邮箱格式校验:通过! + Email format check: Passed! + + + + 电话格式校验:未通过! + Phone format check: Failed! + + + + 电话格式校验:通过! + Phone format check: Passed! + + + + BitSplitPlugin + + 转换个数 + Number of Conversions + + + 输出个数不能超过64个!!! + The number of outputs cannot exceed 64!!! + + + 输出值不能小于1 + The output value cannot be less than 1 + + + 输出值与现值相同 + The output value is the same as the current value + + + + CAbout + + 关于 + About + + + 逻辑编程工具 版本 V1.0 + Logic Programming Tool Version V1.0 + + + 深圳市远信储能技术有限公司 逻辑编程工具 版本 V1.0 + Shenzhen Kangbida Control Technology Co., Ltd. Logic Programming Tool Version V1.0 + + + 关闭 + Close + + + + CCallPlugin + + + 收件人 + Recipient + + + + 内容 + Content + + + + 使能 + Enable + + + + 服务器地址 + Server Address + + + + 用户名 + Username + + + + 密码 + Password + + + + 服务器地址为空 + The server address is empty + + + + 用户名为空 + The username is empty + + + + 密码为空 + The password is empty + + + + CDiagram + + 错误 + Error + + + 一个输入不能连入多个输出! + One input cannot join multiple outputs! + + + ====================FBD图检查====================== + ====================FBD Diagram Check====================== + + + 当前FBD图中没有模块! + There are no modules in the current FBD diagram! + + + > 模块 [ + > module [ + + + ] 的输入 + ] input + + + ================ + ================ + + + FBD图检查 + FBD Diagram Check + + + 图元自检失败 + Element Self-inspection Failed + + + > + > + + + 图元的输入 + Input of the Element + + + 连接了超过一个节点 + More than one node was connected + + + FBD图检查结束,共检查了%1个模块,发现了%2个错误 + FBD diagram check is over,a total of %1 modules were checked,%2 errors were found + + + 读文件模块错误,模块不存在,请重新安装程序! + Error reading file module, module does not exist, please reinstall the program! + + + 最后刷新时间: + Last Refresh Time: + + + 读实时库错误,停止运行! + Error reading rdb,stop running! + + + 实时库连接错误! + Rdb connection error! + + + 保存模块表... + Save module table... + + + 写数据库错误 + Write database error + + + 保存操作完成... + Save operation completed... + + + 数据库保存失败 + Save database failed + + + 数据库已保存 + Database saved + + + 数据库保存失败 + Save database failed + + + 选择 + choose + + + 文件中存在输出参考模块,可能被其它fbd图引用,确认删除? + There is an output reference module in the file, which may be referenced by other FBD diagrams,delete? + + + 当前文件中的模块没有库信息! + The module dose not have library infomation in the current file! + + + 从数据库中删除数据错误! + Delete data from database error! + + + + CDiagramScene + + &撤销 + &Undo + + + &重做 + &Redo + + + 没有与模块 + Not and mudule + + + 的当前端口相匹配的类型 [ + the type that the current port matches [ + + + 与 + and + + + + CFBDMainWindow + + 逻辑编程工具 + Function Block Diagram Programming Tool + + + 文件(&F) + File(&F) + + + 编辑(&E) + Edit(&E) + + + 帮助(&H) + Help(&H) + + + 视图(&V) + View(&V) + + + 工具栏 + Toolbar + + + 模块库 + Module Library + + + 属性编辑 + Attribute Edit + + + 帮助 + Help + + + 连接检查提示 + Connection Check Prompt + + + 打开(&O) + Open(&O) + + + 打开 + Open + + + 保存 + Save + + + 保存Xml文件,保存数据库 + Save the Xml file,save database + + + 另存为 + Save as + + + 另存Xml文件,另存数据库 + Save as the Xml file,save as database + + + 退出(&X) + Exit(&X) + + + 运行 + Run + + + 持续读取/停止读取实时库信息 + Continuous reading/Stop reading Rdb infomation + + + 显示信息 + Display infomation + + + 新建(&N) + New(&N) + + + 新建 + New + + + 关闭(&C) + Close(&C) + + + 关闭 + Close + + + 关于(&A) + About(&A) + + + Tab 1 + Tab 1 + + + Tab 2 + Tab 2 + + + 图元列表 + List of primitives + + + 业务类型 + Business type + + + Page + Page + + + 图列表 + Graph list + + + 1 + 1 + + + Group0 + Group0 + + + Graph0 + Graph0 + + + Graph1 + Graph1 + + + Graph2 + Graph2 + + + Graph3 + Graph3 + + + Graph4 + Graph4 + + + Group1 + Group1 + + + Graph5 + Graph5 + + + Group2 + Group2 + + + Graph6 + Graph6 + + + 组信息 + Group information + + + 模板列表 + Template list + + + Ctrl+S + Ctrl+S + + + Ctrl+Q + Ctrl+Q + + + 持续读取/停止读取实时数据 + Continuous or Stop reading real-time data + + + R + R + + + Ctrl+N + Ctrl+N + + + 放大 + Zoom In + + + 缩小 + Zoom Out + + + 恢复 + Restore + + + 显示全部 + Show All + + + 显示图元列表窗口 + Display the primitive list window + + + 设置图属性 + Set graph properties + + + 显示图列表窗口 + Display the graph list window + + + 打开xml文件 + Open XML file + + + 保存为模板 + Save as template + + + 显示模块库窗口 + Show Module Library Widget + + + 显示属性编辑窗口 + Show Attribute Edit Widget + + + 设置组信息 + Set group infomation + + + 检索器 + Retriever + + + 打开检索器 + Open retriever + + + 根据Taginfo更新当前文档中数据库的点 + Update the database point in the current document based on Taginfo + + + 删除 + Delete + + + 删除Xml文件,删除数据库中数据 + Delete the Xml file,delete the data in the database + + + 只保存Xml文件 + Only save the Xml file + + + 检查连接 + Check the connection + + + 从内存库读取 + Read from Rdb + + + 从实时库中读取每个模块输出端口信息 + Read the output port information of each module from the Rdb + + + 数据库中删除,Xml文件删除 + Delete from database,delete the Xml file + + + 左对齐 + Left align + + + 复制(&C) + Copy(&C) + + + 复制 + Copy + + + Ctrl+C + Ctrl+C + + + 粘贴(&P) + Paste(&P) + + + 粘贴 + Paste + + + Ctrl+V + Ctrl+V + + + 剪切(&U) + Cut(&U) + + + 剪切 + Cut + + + Ctrl+X + Ctrl+X + + + 顶对齐 + Top align + + + 右对齐 + Right align + + + 底对齐 + Bottom align + + + 刷新界面 + Refresh the interface + + + 只删除数据库中数据 + Only delete the data in the database + + + 中文 + Chinese + + + 英文 + English + + + 状态 + Status + + + 错误 + Error + + + 同名文件已经打开,请先关闭已打开文件! + The file with the same name has been opened,please close the open file first! + + + %1 内容为空,请检查! + %1 content is empty,please check! + + + 数据库保存成功 + Save database successfully + + + 数据库保存失败 + Failed to save database + + + xml文件保存成功 + Save Xml file successfully + + + 文件无法保存在位置' + File cannot be saved in location' + + + 数据库初始化不成功,请保存成xml文件,或者重新运行程序 + The database initialization failed,please save it as an XML file or rerun the program + + + 开始保存文件... + Start saving file... + + + 故障树标签:%1在数据库中已经存在,请重新设置标签! + Fault tree label:%1 already exists int the database,please reset the label! + + + 同名文件已经打开,请先关闭已打开的文件! + The file with the same name has been opened,please close the open file first! + + + 打开文件错误 + Open file error + + + 文件不存在: +%1 + File does not exist:%1 + + + 实时库初始化不成功,请重新运行程序 + The Rdb initialization failed,please rerun the program + + + 读实时库错误! + Error reading Rdb! + + + 读实时库完成! + Read Rdb complete! + + + 确认 + Confirm + + + 图形的修改未保存,是否关闭? + The modification of the diagram is not saved,do you want to close it? + + + &翻转 + &flip + + + 现在被选中模块是 %1 + Now the selected module is %1 + + + 现在被选中模块是 %1_%2 + Now the selected module is %1_%2 + + + 现在被选中模块个数是 %1 + Now the number of selected module is %1 + + + 找不到当前fbd文档! + The current FBD document cannot be found! + + + 打开检索器... + Open retriever... + + + 找不到该文件! + The file cannot be found! + + + 数据库初始化不成功,请重新运行程序 + The database initialization failed,please rerun the program + + + 删除数据库的相关数据... + Delete database related data... + + + 数据库删除错误: + Database deletion error: + + + 取消数据库删除 + Cancel delete database + + + 文件删除成功,提交版本库成功! + Delete file successfully,submit the version library successfully! + + + xml文件保存成功 + Save Xml file successfully + + + 加载样式文件失败 + Failed to load style file + + + 初始化所有图元失败 + Failed to initialize all primitives + + + 读取配置文件失败 + Failed to read configuration file + + + 输入输出 + Input/Output + + + 数学运算 + Mathematical operations + + + 比较模块 + Compare Module + + + 数据类型转换 + Data Type Conversion + + + 布尔运算 + Boolean operations + + + 逻辑模块 + Logic Module + + + 控制输出 + Control output + + + 功率控制 + Power Control + + + 脚本模块 + Script Module + + + 告警模块 + Alarm module + + + ALL + ALL + + + 监控 + Monitoring + + + 其他 + Other + + + 打开数据库失败 + Failed to open the database + + + 已生效 + Activated + + + 未生效 + Not activated + + + 初始化图元菜单失败 + Failed to initialize primitive menu + + + 初始化图列表失败 + Failed to initialize graph list + + + 初始化模板列表失败 + Failed to initialize template list + + + 从数据库中读取图【%1】失败 + Failed to read graph [%1] from the database + + + 删除确认 + Delete confirmation + + + 确定删除图 %1 吗? + Are you sure you want to delete graph %1? + + + 删除图失败 + Failed to delete graph + + + 更新组信息失败 + Failed to update group information + + + 当前用户无编辑权限 + Current user has no editing permissions + + + 创建路径【%1】失败 + Failed to create path [%1] + + + Open Diagram + Open Diagram + + + 数据库中已包含此图,请修改名称后再打开 + This graph already exists in the database. Please rename it before opening + + + 打开文件失败 + Failed to open the file + + + 图检查有错误且生效状态为【是】时不能保存 + "When there are errors in the graph check and the effective status is 'Yes', saving is not allowed. + + + 保存图失败 + Failed to save graph + + + 保存图成功 + Graph saved successfully + + + 警告 + Warning + + + 当前图未保存 + The current graph is not saved + + + 当前图未使能 + The current graph is not enabled + + + 请输入模板名 + Please enter template name + + + 模板名: + Template name: + + + 名称不能为空 + Name cannot be empty + + + 模板名称重复 + Template name is duplicated + + + 查询数据库失败 + Failed to query the database + + + 保存模板失败 + Failed to save template + + + 信息 + Information + + + 保存模板成功 + Template saved successfully + + + 从数据库中读取图失败 + Failed to read graph from the database + + + 导出为xml文件 + Export as XML file + + + 删除此图 + Delete this graph + + + 选择导出路径 + Choose export path + + + 询问 + Inquire + + + 文件已存在,是否覆盖? + The file already exists. Do you want to overwrite it? + + + 文件打开失败 + Failed to open the file + + + 从数据库读取文件内容失败 + Failed to read file content from the database + + + 导出成功 + Export successful + + + 确定删除模板 %1 吗? + Are you sure you want to delete template %1? + + + 删除成功 + Deletion successful + + + 删除失败 + Deletion failed + + + 选中模块左对齐 + Left-align the selected modules + + + 选中模块上端对齐 + Top-align the selected modules + + + 选中模块右对齐 + Right-align the selected modules + + + 选中模块下端对齐 + Bottom-align the selected modules + + + 复制选中模块 + Copy the selected modules + + + 粘贴操作 + Paste operation + + + 剪切选中模块 + Cut the selected modules + + + 文件被占用,无法保存在位置' + The file is occupied,cannot be saved in location' + + + 该文件没有保存过,没有库信息 + This file has not been saved, no library information + + + 数据库删除成功 + Delete database successfully + + + 数据库删除失败 + Failed to delete database + + + + CFBDRetriever + + 检索器 + Retriever + + + 专业: + Profession: + + + 位置: + Location: + + + 设备组: + Device Group: + + + 表名: + Table Name: + + + 检索方式: + Retriever Mode: + + + 设备检索 + Device + + + 表检索 + Table + + + 点类型: + Point Type: + + + 值: + Value: + + + 点名: + Point Name: + + + 列名: + Column Name: + + + 数字量 + Digital + + + 模拟量 + Analog + + + 混合量 + Mix + + + 累积量 + Accuml + + + 常量 + Const + + + 通用 + General + + + 其他 + Other + + + 值 + Value + + + 状态 + Status + + + + CFmtTextPlugin + + + + 使能 + Enable + + + + 格式化文本输出 + Formatted Text Output + + + + 输入个数 + Input Number + + + + 格式化配置 + Formatted Configuration + + + + 输入端口 + Input Port + + + + 数据类型 + Data Type + + + + 格式化文本为空 + Formatted Text is Empty + + + + 0 + 0 + + + + 1 + 1 + + + + 2 + 2 + + + + 3 + 3 + + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + + 输入值不能小于0 + The input value cannot be less than 0 + + + + 输入值与现值相同 + The input value is the same as the present value + + + + 0-整型 + 0-Integer + + + + 1-浮点型 + 1-Float + + + + 2-布尔型 + 2-Boolean + + + + 3-字符串型 + 3-String + + + + CGraphicsScene + + &撤销 + &Undo + + + &重做 + &Redo + + + 没有与模块 + Not and mudule + + + 的当前端口相匹配的类型 [ + the type that the current port matches [ + + + 与 + AND + + + + CGroup + + Form + Form + + + 注意:修改组的【所属专业】属性后需要重启监控系统 + Note: Restart the monitoring system after modifying the 'Belonging Specialty' property of a group + + + 添加 + Add + + + 删除 + Delete + + + 关闭 + Close + + + 组信息 + Group information + + + ID + ID + + + 名称 + Name + + + 描述 + Description + + + 刷新间隔 + Refresh interval + + + 业务类型 + Business type + + + 所属位置 + Affiliated Location + + + 所属专业 + Location + + + 更新时间 + Update time + + + 版本号 + Version number + + + 错误 + Error + + + 创建系统信息访问库失败 + Failed to create system information access database + + + 获取所有位置信息失败 + Failed to retrieve all location information + + + 获取所有专业信息失败 + Failed to retrieve all specialty information + + + 打开数据库失败 + Failed to open the database + + + 查询fbd_group表最大id失败 + Failed to query the maximum ID from the fbd_group table + + + 添加组 + Add group + + + 告警 + Alarm + + + 请先选择一条记录 + Please select a record first + + + 修改组 + Edit Group + + + 查询此组包含的图失败 + Failed to query the graphs contained in this group + + + 警告 + Warning + + + 此组内有未删除的图,请先删除图 + There are graphs in this group that have not been deleted. Please delete the graphs first + + + 提示 + Hint + + + 确认删除? + Are you sure you want to delete? + + + 删除失败 + Delete failed + + + + CGroupEdit + + Form + Form + + + 名 称 + Name + + + 描 述 + Description + + + 刷新间隔 + Refresh Interval + + + (单位:毫秒) + (Unit: Milliseconds) + + + 业务类型 + Business Type + + + 所属位置 + Affiliated Location + + + 所属专业 + Major + + + 确定 + OK + + + 取消 + Cancel + + + 错误 + Error + + + 创建系统信息访问库失败 + Failed to create system information access library + + + 获取所有位置信息失败 + Failed to retrieve all location information + + + 获取所有专业信息失败 + Failed to retrieve all major information + + + 组名称不能为空 + The group name cannot be empty + + + 打开数据库失败 + Failed to open the database + + + 查询fbd_group表最大id失败 + Failed to query the maximum ID from the fbd_group table + + + SQL语句执行失败 + SQL statement execution failed + + + + CPluginManager + + 错误 + Error + + + 存在同名插件: + There is a plugin with the same name: + + + + CPointPropertySet + + + Dialog + Dialog + + + + OnlySelected + Only Selected + + + + Expand/Collapse + Expand/Collapse + + + + Ok + Ok + + + + Cancel + Cancel + + + + + + + 错误 + Error + + + + + 打开数据库失败 + Failed to open the database + + + + 设备或测点总数超上限,最大总数为 + The total number of devices or measurement points exceeds the limit, the maximum number is + + + + 属性字符串分割错误 + Property string split error + + + + CProgressBarDialog + + 进度 + Progress + + + 处理中... + In the processing... + + + + CProperty + + 名称 + Name + + + 输出 + Output + + + 输出名称 + Output Name + + + 输入测点串 + Input Measurement Point String + + + 输出测点串 + Output Measurement Point String + + + 控制测点串 + Control Measurement Point String + + + 动作名称 + Action Name + + + 使能类型 + Enable Type + + + 超时时间(单位:s) + 超时时间 + Timeout(unit:s) + + + 控制动作串 + Control Action String + + + 失败逻辑 + Fail Logic + + + 重做次数 + Retry Number + + + 再次失败逻辑 + Fail Again Logic + + + 转换个数 + Conversion Number + + + 输入个数 + Input Number + + + 输出个数 + Output Number + + + 输出Y名称 + Output Y Name + + + 输出QU名称 + Output QU Name + + + 输出QL名称 + Output QL Name + + + 输出名称1 + Output Name1 + + + 输出名称0 + Output Name0 + + + 进程逻辑 + Process Logic + + + 输出名称2 + Output Name2 + + + 文本 + Text + + + 颜色 + Color + + + 字体 + Font + + + 大小 + Size + + + 页数 + The Number of Page + + + 机组个数 + UnitCnt + + + 调节死区 + Deadband + + + 最大调节步进 + MaxStep + + + 最小调节周期(单位:ms) + MinInterval(unit:ms) + + + 通讯超时时间(单位:ms) + CommTimeout(unit:ms) + + + 通讯异常延迟复归时间(单位:ms) + CommRecovDelay(unit:ms) + + + 调节异常延迟复归时间(单位:ms) + RegulateRecovDelay(unit:ms) + + + 停止充电SOC + StopChargeSOC + + + 恢复充电SOC + ReChargeSOC + + + 恢复放电SOC + ReDischargeSOC + + + 停止放电SOC + StopDischargeSOC + + + 机组通讯异常数据策略 + ValueWhenComloss + + + 实例名称 + InstanceName + + + LUA内容 + LUA Content + + + 端口间距 + Port Space + + + 图元宽度 + Primitive Width + + + 输入端口 + Input Port + + + 输出端口 + Output Port + + + 类型 + Type + + + 机组 + Unit + + + 最大功率 + MaxPower + + + 最小功率 + MinPower + + + 最大放电功率 + MaxDischargePower + + + 最小放电功率 + MinDischargePower + + + 最大充电功率 + MaxChargePower + + + 最小充电功率 + MinChargePower + + + 额定容量 + Rated Capacity + + + 调节超时时间(单位:ms) + RegulateTimeout(unit:ms) + + + 调节精度 + RegulatePrecision + + + 通讯精度 + CommPrecision + + + 使用可增有功输入 + UseUpMarginInput + + + 使用可减有功输入 + UseDownMarginInput + + + 端口 + Port + + + 显示名称 + Display Name + + + 图元显示名称 + Graphical Element Display Name + + + + CPropertyTreeView + + 测点串 + Measurement Point String + + + 请把检索器中的点拖到属性中含“测点串”的行里 + Drag a point in the retriever to the line containing 'Measurement Point String' in the property + + + 点被拖到属性为“ + The point is dragged to the property' + + + ”中 + ' + + + + CRetriever + + 检索器 + Retriever + + + 专业: + Profession: + + + 位置: + Location: + + + 设备组: + 设备: + Device Group: + + + 表名: + Table Name: + + + 检索方式: + Retriever Mode: + + + 设备检索 + Device + + + 表检索 + Table + + + 点类型: + Point Type: + + + 值: + Value: + + + 点名: + Point Name: + + + 列名: + Column Name: + + + 数字量 + Digital + + + 模拟量 + Analog + + + 混合量 + Mix + + + 累积量 + Accuml + + + 常量 + Const + + + 通用 + General + + + 其他 + Other + + + 值 + Value + + + 状态 + State + + + + CSetGroupDialog + + 设置FBD图的属性 + Set the properties of the FBD diagram + + + 设置图名称: + Diagram Name: + + + 图名称不能重复 + Diagram names cannot be repeated + + + 选择故障组: + Failure Group: + + + 所属组,组类型,刷新等级,复杂度 + Group, Group type, Refresh level, Complexity + + + 所属域: + Domain: + + + 所属位置: + Location: + + + 所属专业: + Profession: + + + 设置图属性 + Set Graph Properties + + + 是 + Yes + + + 否 + No + + + 错误 + Error + + + 打开数据库失败 + Failed to open the database + + + 获取组ID失败 + "Failed to retrieve the group ID + + + 请重新命名 + Please rename + + + 图名称重复 + Graph name already exists + + + 查询数据库失败 + Failed to query the database + + + 读取数据库的分组信息错误! + Error reading the grouping infomation of database! + + + 未知位置 + Unknown Location + + + 读取数据库的位置信息错误! + Error reading the location infomation of database! + + + 未知专业 + Unknown Profession + + + 读取数据库的专业信息错误! + Error reading the profession infomation of database! + + + 所属组:%1,扫描速度:%2,复杂度:%3,位置:%4,专业:%5 + Group:%1,Scan speed:%2,Complexity:%3,Location:%4,Profession:%5 + + + 故障树标签不能为空! + Fault tree tag cannot be empty! + + + 故障树标签长度不能超过40字节! + The length of fault tree tag cannot more than 40bytes! + + + 读取数据库错误! + Error reading database! + + + 当前域的组内故障树数量已满! + The number of fault trees in the group of the current domain is full! + + + 图 名 称 + Graph Name + + + 不能重复 + Cannot be duplicated + + + 选 择 组 + Select Group + + + 是否使能 + Is it enabled? + + + + CSinglePropertySet + + + Dialog + Dialog + + + + Ok + Ok + + + + Cancel + Cancel + + + + + 错误 + Error + + + + 打开数据库失败 + Failed to open the database + + + + 告警类型 + Alarm Type + + + + 告警状态 + Alarm Status + + + + 告警类型信息不正确 + Incorrect alarm type information + + + + 告警等级 + Alarm Level + + + + 位置 + Location + + + + 专业 + Professional + + + + 设备类型 + Device Type + + + + 责任区 + Responsible Area + + + + CSmsPlugin + + + 收件人 + Recipient + + + + 内容 + Content + + + + 使能 + Enable + + + + 服务器地址 + Server Address + + + + 用户名 + Username + + + + 密码 + Password + + + + 服务器地址为空 + Server address is empty + + + + 用户名为空 + Username is empty + + + + 密码为空 + Password is empty + + + + CSmtpMailPlugin + + + 收件人 + Recipient + + + + 标题 + Subject + + + + 内容 + Content + + + + 使能 + Enable + + + + 0-普通TCP连接(默认) + 0-Standard TCP connection (default) + + + + 1-SSL连接 + 1-SSL connection + + + + 2-TLS(SMARTTLS) + 2-TLS (SMARTTLS) + + + + 发送(SMTP)服务器地址 + SMTP server address + + + + SMTP端口 + SMTP port + + + + 连接方式 + Connection method + + + + 发件人 + Sender + + + + 用户名 + Username + + + + 密码 + Password + + + + 服务器地址为空 + Server address is empty + + + + 发件人为空 + Sender is empty + + + + 用户名为空 + Username is empty + + + + 密码为空 + Password is empty + + + + CStringListDialog + + 添加 + Add + + + 删除 + Delete + + + 选择 Plugin 路径 + Select Plugin path + + + + CTemplateWidget + + 删除此模板 + Delete this template + + + + ConstFPlugin + + 输出 + Output + + + + ConstPlugin + + 常量(D) + Constant(D) + + + 输出 + Output + + + + ConstsPlugin + + 常量(S) + Constant(S) + + + + DemandControlPlugin + + + 调节使能 + Enable Adjustment + + + + 总实时功率 + Total Real-time Power + + + + 储能实时功率 + Energy Storage Real-time Power + + + + 储能计划功率 + Energy Storage Scheduled Power + + + + 需量设定值 + Demand Setpoint + + + + 逆流功率设定值 + Reverse Power Setpoint + + + + 目标功率 + Target Power + + + + 输出使能 + Output Enable + + + + 0-禁用需量控制 + 0-Disable Demand Control + + + + 1-启用需量控制 + 1-Enable Demand Control + + + + 0-禁用防逆流控制 + 0-Disable Anti-Reverse Flow Control + + + + 1-启用防逆流控制 + 1-Enable Anti-Reverse Flow Control + + + + 是否启用需量控制 + Whether to Enable Demand Control + + + + 需量调节死区 + Demand Control Deadband + + + + 超需时最大放电功率 + Maximum Discharge Power During Over-demand + + + + 是否启用防逆流控制 + Should Anti-Reverse Flow Control be Enabled + + + + 逆流时最大充电功率 + Maximum Charging Power During Reverse Flow + + + + 逆流调节死区 + Reverse Flow Regulation Deadband + + + + 【需量调节死区】值错误,合法值:大于0 + Demand control deadband value is incorrect, the legal value should be: greater than 0. + + + + 【最大放电功率】值错误,合法值:大于等于0 + Maximum discharge power value is incorrect, the legal value should be: greater than or equal to 0. + + + + 【逆流调节死区】值错误,合法值:大于0 + Reverse flow regulation deadband value is incorrect, the legal value should be: greater than 0. + + + + 【最大充电功率】值错误,合法值:小于等于0 + Maximum charging power value is incorrect, the legal value should be: less than or equal to 0 + + + + DivFPlugin + + 除(A) + Divide(A) + + + + DivPlugin + + 除(D) + Divide(D) + + + 减(D) + Subtract(D) + + + + FilterStyleDlg + + + 过滤格式 + Filter Style + + + + 过滤已确认 + Filter Confirmed + + + + 过滤已复归 + Filter Restored + + + + FmtCfgDialog + + + Dialog + Dialog + + + + 文本配置 + Text Configuration + + + + 预览 + Preview + + + + 变量 + Variables + + + + 格式化文本配置 + Formatted Text Configuration + + + + 真 + True + + + + [ + [ + + + + InputFPlugin + + 输入(A) + Input(A) + + + 常量(A) + Const(A) + + + 或 + Or + + + 大于(D) + Greater Than(D) + + + 比较模块 + Compare Module + + + 小于(D) + Less Than(D) + + + 大于等于(D) + Greater Than or Equal To(D) + + + 小于等于(D) + Less Than or Equal To(D) + + + 等于(D) + Equal + + + 大于(A) + Greater Than(A) + + + 小于(A) + Less Than(A) + + + 乘(A) + Multiply(A) + + + 乘(D) + Multiply(D) + + + Float转Int + Float to Int + + + 数据类型转换 + Data Type Conversion + + + Int转Float + Turn Int to Float + + + Int转Bool + Turn Int to Bool + + + Bool转Int + Turn Bool to Int + + + 输出(D) + Output(D) + + + 输出(A) + Output(A) + + + 防抖延时(D) + Delay of Anti Shake(D) + + + 逻辑模块 + Logic Module + + + 输入选择 + Input Selection + + + 按位拆解 + Bitwise Dismantling + + + 储能机组有功分配器 + Active Power Divider of Energy Storage Unit + + + 功率控制 + Power Control + + + 发电机组有功分配器 + Active Power Divider of Generating Unit + + + DO控制 + DO Control + + + LUA脚本 + LUA Script + + + 脚本模块 + Script Module + + + 输入测点未设置 + Input measurement point is not set + + + 输出测点未设置 + Output measurement point is not set + + + 未关联所有输入端口 + All input ports are not associated + + + + InputPlugin + + 输入(D) + Input(D) + + + 输入输出常量 + Input Output Constant + + + + MapCfgDlg + + + 映射配置 + Mapping Configuration + + + + 请输入搜索内容 + Please enter the search content + + + + <html><head/><body><p>检索器</p></body></html> + <html><head/><body><p>Retriever</p></body></html> + + + + <html><head/><body><p>添加</p></body></html> + + + + + <html><head/><body><p>删除</p></body></html> + + + + + <html><head/><body><p>导出</p></body></html> + + + + + <html><head/><body><p>导入</p></body></html> + + + + + 确定 + OK + + + + 取消 + Cancel + + + + 整型 + Integer + + + + 浮点型 + Float + + + + 布尔 + Boolean + + + + 字符串 + String + + + + 未知类型 + Unknown Type + + + + + + + + + 警告 + Warning + + + + + + + + 格式错误! + Format Error! + + + + 请选择需要删除的行! + Please select the row to delete! + + + + 打开文件 + Open File + + + + + + 消息 + Message + + + + 文件打开失败! + Failed to open the file! + + + + 导入成功 + Import successful + + + + Save File + Save File + + + + + + + 提示 + Hint + + + + 导出成功! + Export successful! + + + + 没有%1表! + There is no %1 table! + + + + 主键[%1]重复 + Primary key [%1] is duplicated + + + + 未知类型或错误类型[%1] + Unknown or incorrect type [%1] + + + + row:[%1],column:[%2]类型错误! + Row: [%1], Column: [%2] type error! + + + + MulPlugin + + 转换个数 + Number of Conversions + + + 输入个数不能超过32个!!! + The number of inputs cannot exceed 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + MultiMapPlugin + + + + 使能 + Enable + + + + + 0-整型 + 0-Integer + + + + + 1-浮点型 + 1-Floating Point + + + + + 2-布尔型 + 2-Boolean + + + + + 3-字符串型 + 3-String + + + + 输入类型 + Input Type + + + + 输出个数 + Number of Outputs + + + + 映射配置 + Mapping Configuration + + + + 输出端口 + Output Ports + + + + 数据类型 + Data Type + + + + 提示 + Hint + + + + 请先配置输出个数等信息 + Please configure the number of outputs and other information first + + + + 映射输出个数必须大于0 + The number of mapped outputs must be greater than 0 + + + + 映射配置不能为空 + Mapping configuration cannot be empty + + + + + 0 + 0 + + + + + 1 + 1 + + + + + 2 + 2 + + + + + 3 + 3 + + + + 输出个数不能超过32个!!! + The number of outputs cannot exceed 32!!! + + + + 输入值不能小于0 + The input value cannot be less than 0 + + + + 输入值与现值相同 + The input value is the same as the current value + + + + 4 + 4 + + + + NotPlugin + + 非 + Not + + + + PowerControlGENPlugin + + + 总有功目标值 + TotalPowerTargetValue + + + + 总有功上限 + TotalPowerUpLimit + + + + 总有功下限 + TotalPowerLowLimit + + + + 总调节使能 + TotalRegulateEnable + + + + 总有功 + TotalPower + + + + 总可增有功 + TotalUpMarginPower + + + + 总可减有功 + TotalDownMarginPower + + + + 状态码 + StatusCode + + + + 错误码 + ErrorCode + + + 0-使用0值,1-保持最后值 + 0-Use 0 value,1-Hold final value + + + + GEN个数不能小于0个!!! + The number of GEN cannot be less than 0!!! + + + + GEN个数不能大于50个!!! + The number of GEN cannot be more than 50!!! + + + + 机组%1有功实际值 + Unit %1 Actual value of active power + + + + 【调节死区】值错误,合法值:大于0 + [Deadband] error value,legal value:Greater Than 0 + + + + 【最大调节步进】值错误,合法值:大于0 + [MaxStep] error value,legal value:Greater Than 0 + + + + 【最小调节周期】值错误,合法值:大于0 + [MinInterval] error value,legal value:Greater Than 0 + + + + 【通讯超时时间】值错误,合法值:大于0 + [CommTimeout] error value,legal value:Greater Than 0 + + + + 【通讯异常延迟复归时间】值错误,合法值:大于0 + [CommRecovDelay] error value,legal value:Greater Than 0 + + + + 机组%1有功设定值 + Unit %1 Set value of active power + + + + 0-使用0值 + 0-Use Zero Value + + + + 1-保持最后值 + 1-Maintain Last Value + + + + 机组个数 + UnitCnt + + + + 调节死区 + Deadband + + + + 最大调节步进 + MaxStep + + + + 最小调节周期(单位:ms) + MinInterval(unit:ms) + + + + 通讯超时时间(单位:ms) + CommTimeout(unit:ms) + + + + 通讯异常延迟复归时间(单位:ms) + CommRecovDelay(unit:ms) + + + + 机组通讯异常数据策略 + ValueWhenComloss + + + + + + + + + + 机组 + Unit + + + + 最大功率 + MaxPower + + + + 最小功率 + MinPower + + + + 通讯精度 + CommPrecision + + + + 调节精度 + RegulatePrecision + + + + 调节超时时间(单位:ms) + RegulateTimeout(unit:ms) + + + + 使用可增有功输入 + UseUpMarginInput + + + + 使用可减有功输入 + UseDownMarginInput + + + + 机组%1可增有功 + Unit %1 UpMarginPower + + + + 机组%1可减有功 + Unit %1 DownMarginPower + + + + + 机组%1调节使能 + Unit %1 RegulateEnable + + + + 机组%1分配有功 + Unit %1 DistributionPower + + + + 机组%1状态码 + Unit %1 StatusCode + + + + 机组%1错误码 + Unit %1 ErrorCode + + + + PowerControlPCSPlugin + + + 总有功目标值 + TotalPowerTargetValue + + + + 总有功上限 + TotalPowerUpLimit + + + + 总有功下限 + TotalPowerLowLimit + + + + 总调节使能 + TotalRegulateEnable + + + + + 停止充电SOC + StopChargeSOC + + + + + 恢复充电SOC + ReChargeSOC + + + + + 恢复放电SOC + ReDischargeSOC + + + + + 停止放电SOC + StopDischargeSOC + + + + 总有功 + TotalPower + + + + 总可增有功 + TotalUpMarginPower + + + + 总可减有功 + TotalDownMarginPower + + + + 总SOC + Total SOC + + + + 状态码 + StatusCode + + + + 错误码 + ErrorCode + + + + 0-使用0值 + 0-Use Zero Value + + + + 1-保持最后值 + 1-Maintain Last Value + + + + 机组个数 + UnitCnt + + + + 调节死区 + Deadband + + + + 最大调节步进 + MaxStep + + + + 最小调节周期(单位:ms) + MinInterval(unit:ms) + + + + 通讯超时时间(单位:ms) + CommTimeout(unit:ms) + + + + 通讯异常延迟复归时间(单位:ms) + CommRecovDelay(unit:ms) + + + + 机组通讯异常数据策略 + ValueWhenComloss + + + + + + + + + + + 机组 + Unit + + + + 最大放电功率 + MaxDischargePower + + + + 最小放电功率 + MinDischargePower + + + + 最小充电功率 + MinChargePower + + + + 最大充电功率 + MaxChargePower + + + + 额定容量 + Rated Capacity + + + + 通讯精度 + CommPrecision + + + + 调节精度 + RegulatePrecision + + + + 调节超时时间(单位:ms) + RegulateTimeout(unit:ms) + + + 0-使用0值,1-保持最后值 + 0-Use 0 value,1-Hold final value + + + + PCS个数不能小于0个!!! + The number of PCS cannot be less than 0!!! + + + + PCS个数不能大于100个!!! + The number of PCS cannot be more than 100!!! + + + + 机组%1有功设定值 + Unit%1 Set value of active power + + + + 机组%1有功实际值 + Unit %1 Actual value of active power + + + + 【调节死区】值错误,合法值:大于0 + [Deadband] error value,legal value:Greater Than 0 + + + + 【最大调节步进】值错误,合法值:大于0 + [MaxStep] error value,legal value:Greater Than 0 + + + + 【最小调节周期】值错误,合法值:大于0 + [MinInterval] error value,legal value:Greater Than 0 + + + + 【通讯超时时间】值错误,合法值:大于0 + [CommTimeout] error value,legal value:Greater Than 0 + + + + 【通讯异常延迟复归时间】值错误,合法值:大于0 + [CommRecovDelay] error value,legal value:Greater Than 0 + + + 【停止充电SOC】值错误,合法值:大于等于0,小于等于1 + [StopChargeSOC] error value,legal value:Greater than or equal To 0, less than or equal to 1 + + + 【恢复充电SOC】值错误,合法值:大于等于0,小于等于停止充电SOC + [ReChargeSOC] error value,legal value:Greater than or equal To 0, less than or equal to StopChargeSOC + + + 【恢复放电SOC】值错误,合法值:大于等于0,小于等于恢复充电SOC + [ReDisChargeSOC] error value,legal value:Greater than or equal To 0, less than or equal to ReChargeSOC + + + 【停止放电SOC】值错误,合法值:大于等于0,小于等于恢复放电SOC + [StopDisChargeSOC] error value,legal value:Greater than or equal To 0, less than or equal to ReDisChargeSOC + + + + 机组%1 SOC + Unit %1 SOC + + + + + 机组%1调节使能 + Unit %1 RegulateEnable + + + + 机组%1分配有功 + Unit %1 DistributionPower + + + + 机组%1状态码 + Unit %1 StatusCode + + + + 机组%1错误码 + Unit %1 ErrorCode + + + + PushTypeDlg + + + 推送格式 + Push Format + + + + 推送方式 + Push Method + + + + 邮件 + Email + + + + 短信 + SMS + + + + 电话 + Phone Call + + + + 邮件标题 + Email Subject + + + + 文本配置 + Text Configuration + + + + 预览 + Preview + + + + 自定义 + Custom + + + + 模板 + Template + + + + 数量 + Quantity + + + + 1级数量 + Level 1 Quantity + + + + 2级数量 + Level 2 Quantity + + + + 3级数量 + Level 3 Quantity + + + + 4级数量 + Level 4 Quantity + + + + 5级数量 + Level 5 Quantity + + + + 时间 + Time + + + + 域 + Domain + + + + 位置 + Location + + + + 应用 + Apply + + + + 等级 + Level + + + + 内容 + Content + + + + 状态 + Status + + + + 专业 + Professional + + + + 责任区 + Responsible Area + + + + 设备组 + Equipment Group + + + + 测点 + Measurement Point + + + + 设备 + Equipment + + + + 循环 + Cycle + + + + 智能推送 + Smart Push + + + + QObject + + 加(D) + Add(D) + + + 输入测点未设置 + Input measurement point is not set + + + 输出测点未设置 + Output measurement point is not set + + + 未关联所有输入端口 + All input ports are not associated + + + 加(A) + Add(A) + + + 除(D) + Divide(D) + + + 减(D) + Subtract(D) + + + 除(A) + Divide(A) + + + 减(A) + Subtract(A) + + + 非 + Not + + + 与 + And + + + AO控制 + AO Control + + + DO控制 + DO Control + + + 输入(D) + Input(D) + + + 常量(D) + Constant(D) + + + 输入(A) + Input(A) + + + 常量(A) + Const(A) + + + 常量(S) + Constant(S) + + + 或 + Or + + + 大于(D) + Greater Than(D) + + + 小于(D) + Less Than(D) + + + 大于等于(D) + Greater Than or Equal To(D) + + + 小于等于(D) + Less Than or Equal To(D) + + + 等于(D) + Equal + + + 大于(A) + Greater Than(A) + + + 小于(A) + Less Than(A) + + + 乘(A) + Multiply(A) + + + 乘(D) + Multiply(D) + + + Float转Int + Float to Int + + + Int转Float + Turn Int to Float + + + Int转Bool + Turn Int to Bool + + + Bool转Int + Turn Bool to Int + + + 输出(D) + Output(D) + + + 输出(A) + Output(A) + + + 防抖延时(D) + Delay of Anti Shake(D) + + + 输入选择 + Input Selection + + + 按位拆解 + Bitwise Dismantling + + + LUA脚本 + LUA Script + + + + 储能机组有功分配器 + Active Power Divider of Energy Storage Unit + + + + 发电机组有功分配器 + Active Power Divider of Generating Unit + + + + 告警订阅 + Alarm Subscription + + + + 告警延迟 + Alarm Delay + + + + 告警推送 + Alarm Push + + + + 循环内格式错误!请勿修改自动生成的内容 + Loop format error! Please do not modify the automatically generated content + + + + 告警拆分 + Alarm Split + + + + 映射 + Mapping + + + + 定时触发 + Scheduled Trigger + + + + 视频控制 + Video Control + + + + 告警生成 + Alarm Generation + + + + 需量/逆流控制策略 + Demand/Reverse Flow Control Strategy + + + + QPropertyEditorWidget + + 测点串 + Measurement String + + + 请把检索器中的点拖到属性中含“测点串”的行里 + Please drag a point from the retriever to the line in the properties containing 'Measurement String' + + + 点被拖到属性为“ + The point is dragged to the property ' + + + ”中 + in the middle + + + + RepeatStyleDlg + + + 重复格式配置 + Repeat Format Configuration + + + + 最大循环次数 + Maximum Number of Iterations + + + + 循环体 + Loop Body + + + + 预览 + Preview + + + + 时间 + Time + + + + 域 + Domain + + + + 位置 + Location + + + + 应用 + Apply + + + + 等级 + Level + + + + 内容 + Content + + + + 状态 + Status + + + + 专业 + Professional + + + + 责任区 + Responsible Area + + + + 设备组 + Equipment Group + + + + 测点 + Measurement Point + + + + 设备 + Equipment + + + + SubFPlugin + + 减(A) + Subtract(A) + + + + TimeDlg + + + 配置 + Configuration + + + + 触发方式 + Trigger Method + + + + 定时触发 + Scheduled Trigger + + + + 周期触发 + Cyclic Trigger + + + + 间隔触发 + Interval Trigger + + + + + + yyyy/MM/dd HH:mm:ss + Year/Month/Day Hour:Minute:Second + + + + 触发时间 + Trigger Time + + + + 开始时间 + Start Time + + + + 结束时间 + End Time + + + + 每年 + Annually + + + + 每月 + Monthly + + + + 每周 + Weekly + + + + 每天 + Daily + + + + 每时 + Hourly + + + + 每分钟 + Every Minute + + + + 每秒 + Every Second + + + + 月 + Month + + + + 星期日 + Sunday + + + + 星期一 + Monday + + + + 星期二 + Tuesday + + + + 星期三 + Wednesday + + + + 星期四 + Thursday + + + + 星期五 + Friday + + + + 星期六 + Saturday + + + + 日 + Day + + + + 时 + Hour + + + + 分 + Minute + + + + + 秒 + Second + + + + 触发间隔 + Trigger Interval + + + + TimeTriggerDlg + + + 配置 + Configuration + + + + OK + OK + + + + Cancel + Cancel + + + + + + yyyy/MM/dd HH:mm:ss + Year/Month/Day Hour:Minute:Second + + + + 触发时间 + Trigger Time + + + + 开始时间 + Start Time + + + + 结束时间 + End Time + + + + 每年 + Every Year + + + + 每月 + Every Month + + + + 每周 + Every Week + + + + 每天 + Every Day + + + + 每时 + Every Hour + + + + 每分钟 + Every Minute + + + + 每秒 + Every Second + + + + 月 + Month + + + + 星期日 + Sunday + + + + 星期一 + Monday + + + + 星期二 + Tuesday + + + + 星期三 + Wednesday + + + + 星期四 + Thursday + + + + 星期五 + Friday + + + + 星期六 + Saturday + + + + 日 + Day + + + + 时 + Hour + + + + 分 + Minute + + + + + 秒 + Second + + + + 触发间隔 + Trigger Interval + + + + 触发方式 + Trigger Method + + + + 定时触发 + Scheduled Trigger + + + + 周期触发 + Cyclic Trigger + + + + 间隔触发 + Interval Trigger + + + + TimeTriggerPlugin + + 定时触发 + Scheduled Trigger + + + + 使能 + Enable + + + + 时间配置 + Time Configuration + + + + 定时触发配置不能为空 + Scheduled trigger configuration cannot be empty + + + + UserChooseDlg + + + 用户选择 + User Selection + + + + 添加>> + Add>> + + + + 移除<< + Remove<< + + + + 附加用户: + Additional Users: + + + + 编辑 + Edit + + + + + 警告 + Warning + + + + + 格式错误! + Format Error! + + + + VideoControlPlugin + + 视频控制 + Video Control + + + + 位置标签 + Location Tag + + + + 应用标签 + Application Tag + + + + 摄像头 + Camera + + + + 预置点 + Preset Point + + + + 使能 + Enable + + + + actionAOplugin + + 目标值 + Target Value + + + 使能 + Enable + + + 0-NO + 0-No + + + 1-YES + 1-Yes + + + 动作名称 + Action Name + + + 超时时间(单位:s) + Timeout (Unit: seconds) + + + 控制测点串 + Control Measurement Point Sequence + + + 失败重做次数 + Number of Retries on Failure + + + 输入控制测点串 + Enter Control Point Sequence + + + 测点 + Measurement Point + + + + actionDOplugin + + 目标值 + Target Value + + + 使能 + Enable + + + 0-NO + 0-No + + + 1-YES + 1-Yes + + + 动作名称 + Action Name + + + 超时时间(单位:s) + Timeout (Unit: seconds) + + + 控制测点串 + Control Measurement Point Sequence + + + 失败重做次数 + Number of Retries on Failure + + + 输入控制测点串 + Enter Control Point Sequence + + + 测点 + Measurement Point + + + + add2Plugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + add2fPlugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + alarmGeneratePlugin + + + 测点标签 + Measurement Point Tag + + + + 使能 + Enable + + + + alarmSubscribePlugin + + + 告警类型使能 + Alarm Type Enable + + + + 告警类型 + Alarm Type + + + + 告警状态使能 + Alarm Status Enable + + + + 告警状态 + Alarm Status + + + + 告警等级使能 + Alarm Level Enable + + + + 告警等级 + Alarm Level + + + + 位置使能 + Location Enable + + + + 位置 + Location + + + + 专业使能 + Professional Enable + + + + 专业 + Professional + + + + 设备类型使能 + Equipment Type Enable + + + + 设备类型 + Device Type + + + + 责任区使能 + Responsible Area Enable + + + + 责任区 + Responsibility Area + + + + 设备或测点使能 + Equipment or Measurement Point Enable + + + + 设备或测点 + Equipment or Measurement Point + + + + + + 错误 + Error + + + + + 初始化失败 + Initialization Failed + + + + 未知的属性名 + Unknown Property Name + + + + 告警类型已使能,但是告警类型未选择 + Alarm Type Enabled, but No Alarm Type Selected + + + + 告警状态已使能,但是告警状态未选择 + Alarm Status Enabled, but No Alarm Status Selected + + + + 告警等级已使能,但是告警等级未选择 + Alarm Level Enabled, but No Alarm Level Selected + + + + 位置已使能,但是位置未选择 + Location Enabled, but No Location Selected + + + + 专业已使能,但是专业未选择 + Professional Enabled, but No Professional Selected + + + + 设备类型已使能,但是设备类型未选择 + Equipment Type Enabled, but No Equipment Type Selected + + + + 责任区已使能,但是责任区未选择 + Responsible Area Enabled, but No Responsible Area Selected + + + + 设备或测点已使能,但是设备或测点未选择 + Equipment or measurement point is enabled, but no equipment or measurement point is selected + + + + and2Plugin + + 转换个数 + Conversion Count + + + 输入个数不能超过32个!!! + The number of inputs cannot exceed 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the current value + + + + bitsplitPlugin + + 转换个数 + Conversion Count + + + 输出个数不能超过64个!!! + The number of outputs cannot exceed 64!!! + + + 输出值不能小于1 + The output value cannot be less than 1 + + + 输出值与现值相同 + The output value is the same as the current value + + + + constPlugin + + 输出 + Output + + + + constfPlugin + + 输出 + Output + + + + constsPlugin + + 输出 + Output + + + + divPlugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + divfPlugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + inputPlugin + + 输入测点串 + Input Measurement Point String + + + + inputfPlugin + + 输入测点串 + Input Measurement Point String + + + + inputswitchPlugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + luaPlugin + + LUA内容 + LUA Content + + + 端口间距 + Port Space + + + 图元宽度 + Primitive Width + + + 输入个数 + Input Number + + + 输出个数 + Output Number + + + 输入端口 + Input Port + + + 数据类型 + Data Type + + + 输出端口 + Output Port + + + 0 + 0 + + + 1 + 1 + + + 2 + 2 + + + 3 + 3 + + + 4 + 4 + + + 宽度不能大于1000 + The width cannot exceed 1000 + + + 宽度不能小于40 + The width cannot be less than 40 + + + 输入值与现值相同 + The input value is the same as the present value + + + 端口间隔不能大于400 + The port space cannot be more than 400 + + + 端口间隔不能小于16 + The port space cannot be less than 16 + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于0 + The input value cannot be less than 0 + + + 0-整型 + 0-Integer + + + 1-浮点型 + 1-Floating Point + + + 2-布尔型 + 2-Boolean + + + 3-字符串型 + 3-String + + + 4-告警型 + 4-Alarm + + + 0-整型,1-浮点型,2-布尔型 + 0-Int,1-Float,2-Bool + + + + mulPlugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of inputs must not exceed 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the current value + + + + mulfPlugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + or2Plugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + outputPlugin + + 输出测点串 + Output Measurement Point String + + + + outputfPlugin + + 输出测点串 + Output Measurement Point String + + + + subPlugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + + subfPlugin + + 转换个数 + Conversion Number + + + 输入个数不能超过32个!!! + The number of input cannot be more than 32!!! + + + 输入值不能小于2 + The input value cannot be less than 2 + + + 输入值与现值相同 + The input value is the same as the present value + + + diff --git a/resource/fr/fbd_editor/translate/platform_fr.qm b/resource/fr/fbd_editor/translate/platform_fr.qm new file mode 100644 index 0000000000000000000000000000000000000000..50db0af196533b1ad2fe6d202a46d0b3d7a86680 GIT binary patch literal 48837 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 literal 0 HcmV?d00001 diff --git a/resource/fr/fbd_editor/translate/platform_fr.ts b/resource/fr/fbd_editor/translate/platform_fr.ts new file mode 100644 index 00000000..e8d26e33 --- /dev/null +++ b/resource/fr/fbd_editor/translate/platform_fr.ts @@ -0,0 +1,2583 @@ + + + + + CAbout + + + + 关于 + À propos + + + + 逻辑编程工具 版本 V1.0 + Outil de programmation logique Version V1.0 + + + + 关闭 + Fermer + + + + CDiagram + + + + 错误 + Erreur + + + + 一个输入不能连入多个输出! + Une entrée ne peut pas être connectée à plusieurs sorties ! + + + + + ================ + ================ + + + + FBD图检查 + Vérification du diagramme FBD + + + + 图元自检失败 + Échec de l’auto-vérification de l’élément + + + + 当前FBD图中没有模块! + Il n’y a aucun module dans le diagramme FBD actuel ! + + + + > + > + + + + 图元的输入 + Entrée de l’élément + + + + 连接了超过一个节点 + est connecté à plus d’un nœud + + + + FBD图检查结束,共检查了%1个模块,发现了%2个错误 + Vérification du diagramme FBD terminée, %1 modules vérifiés, %2 erreurs trouvées + + + + 读文件模块错误,模块不存在,请重新安装程序! + Erreur de module de lecture de fichier, le module n’existe pas. Veuillez réinstaller le programme ! + + + + 最后刷新时间: + Dernière heure de mise à jour : + + + + CFBDMainWindow + + + 逻辑编程工具 + Outil de programmation logique + + + + Tab 1 + Onglet 1 + + + + Tab 2 + Onglet 2 + + + + 文件(&F) + Fichier (&F) + + + + 编辑(&E) + Édition (&E) + + + + + 关于(&A) + À propos (&A) + + + + 视图(&V) + Vue (&V) + + + + 工具栏 + Barre d'outils + + + + 图元列表 + Éléments + + + + + 业务类型 + Type de service + + + + Page + Page + + + + 属性编辑 + Éditeur de propriétés + + + + 连接检查提示 + Conseils de vérification de connexion + + + + 图列表 + Graphiques + + + + 1 + 1 + + + + Group0 + Groupe0 + + + + Graph0 + Graphique0 + + + + Graph1 + Graphique1 + + + + Graph2 + Graphique2 + + + + Graph3 + Graphique3 + + + + Graph4 + Graphique4 + + + + Group1 + Groupe1 + + + + Graph5 + Graphique5 + + + + Group2 + Groupe2 + + + + Graph6 + Graphique6 + + + + 组信息 + Informations sur le groupe + + + + 模板列表 + Modèles + + + + + 保存 + Enregistrer + + + + Ctrl+S + Ctrl+S + + + + 退出(&X) + Quitter (&X) + + + + Ctrl+Q + Ctrl+Q + + + + 运行 + Exécuter + + + + 持续读取/停止读取实时数据 + Lecture continue / Arrêter la lecture des données en temps réel + + + + R + R + + + + 新建(&N) + Nouveau (&N) + + + + 新建 + Nouveau + + + + Ctrl+N + Ctrl+N + + + + 关闭(&C) + Fermer (&C) + + + + 关闭 + Fermer + + + + 放大 + Agrandir + + + + 缩小 + Réduire + + + + 恢复 + Rétablir + + + + 显示全部 + Afficher tout + + + + 显示图元列表窗口 + Afficher la fenêtre de liste des éléments + + + + 显示属性编辑窗口 + Afficher la fenêtre d'édition des propriétés + + + + + 设置图属性 + Définir les propriétés du graphique + + + + 检索器 + Recherche + + + + 打开检索器 + Ouvrir le moteur de recherche + + + + + 检查连接 + Vérifier les connexions + + + + + 左对齐 + Aligner à gauche + + + + 复制(&C) + Copier(&C) + + + + 复制 + Copier + + + + Ctrl+C + Ctrl+C + + + + 粘贴(&P) + Coller(&P) + + + + 粘贴 + Coller + + + + Ctrl+V + Ctrl+V + + + + 剪切(&U) + Couper(&U) + + + + 剪切 + Couper + + + + Ctrl+X + Ctrl+X + + + + + 顶对齐 + Aligner en haut + + + + + 右对齐 + Aligner à droite + + + + + 底对齐 + Aligner en bas + + + + + 刷新界面 + Actualiser l'interface + + + + 显示图列表窗口 + Afficher la fenêtre de la liste des diagrammes + + + + + 打开xml文件 + Ouvrir un fichier XML + + + + + 保存为模板 + Enregistrer sous modèle + + + + 替换 + Remplacer + + + + 替换标签值 + Remplacer la valeur du tag + + + + Ctrl+F + Ctrl+F + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 错误 + Erreur + + + + 加载样式文件失败 + Échec du chargement du fichier de style + + + + 初始化所有图元失败 + Échec de l'initialisation de tous les éléments graphiques + + + + 读取配置文件失败 + Échec de la lecture du fichier de configuration + + + + + + ALL + ALL + + + + 输入输出 + Entrées/Sorties + + + + 数学运算 + Opérations mathématiques + + + + 比较模块 + Module de comparaison + + + + 数据类型转换 + Conversion de type de données + + + + 布尔运算 + Opérations booléennes + + + + 逻辑模块 + Module logique + + + + 控制输出 + Sortie de contrôle + + + + 功率控制 + Contrôle de la puissance + + + + 脚本模块 + Module de script + + + + 告警模块 + Module d'alarme + + + + 监控 + Surveillance + + + + 其他 + Autre + + + + 状态 + État + + + + + + + + + + + 打开数据库失败 + Échec de l'ouverture de la base de données + + + + 已生效 + Appliqué + + + + 未生效 + Non appliqué + + + + 初始化图元菜单失败 + Échec de l'initialisation du menu des éléments graphiques + + + + 初始化图列表失败 + Échec de l'initialisation de la liste des graphiques + + + + 初始化模板列表失败 + Échec de l'initialisation de la liste des modèles + + + + 从数据库中读取图【%1】失败 + Échec de la lecture du graphique 【%1】 à partir de la base de données + + + + + 删除确认 + Confirmation de suppression + + + + 确定删除图 %1 吗? + Êtes-vous sûr de vouloir supprimer le graphique %1 ? + + + + 删除图失败 + Échec de la suppression du graphique + + + + + 更新组信息失败 + Échec de la mise à jour des informations du groupe + + + + 当前用户无编辑权限 + L'utilisateur actuel n'a pas les droits d'édition + + + + + 创建路径【%1】失败 + Échec de la création du chemin【%1】 + + + + Open Diagram + Ouvrir le diagramme + + + + 数据库中已包含此图,请修改名称后再打开 + Ce graphique est déjà présent dans la base de données. Veuillez modifier le nom avant de l'ouvrir + + + + 打开文件失败 + Échec de l'ouverture du fichier + + + + 图检查有错误且生效状态为【是】时不能保存 + Le graphique ne peut pas être sauvegardé si des erreurs sont présentes et l'état est activé【Oui】 + + + + + 保存图失败 + Échec de l'enregistrement du graphique + + + + 保存图成功 + Enregistrement du graphique réussi + + + + + 警告 + Avertissement + + + + 当前图未保存 + Le graphique actuel n'est pas enregistré + + + + 当前图未使能 + Le graphique actuel n'est pas activé + + + + 请输入模板名 + Veuillez entrer le nom du modèle + + + + 模板名: + Nom du modèle: + + + + 名称不能为空 + Le nom ne peut pas être vide + + + + 模板名称重复 + Nom du modèle déjà utilisé + + + + 查询数据库失败 + Échec de la requête dans la base de données + + + + + 保存模板失败 + Échec de l'enregistrement du modèle + + + + + + 信息 + Information + + + + 保存模板成功 + Enregistrement du modèle réussi + + + + 确认 + Confirmer + + + + 图形的修改未保存,是否关闭? + Les modifications du graphique n'ont pas été enregistrées. Voulez-vous fermer ? + + + + 现在被选中模块是 %1 + Le module actuellement sélectionné est %1 + + + + 现在被选中模块是 %1_%2 + Le module actuellement sélectionné est %1_%2 + + + + 现在被选中模块个数是 %1 + Le nombre de modules actuellement sélectionnés est %1 + + + + + + 从数据库中读取图失败 + Échec de la lecture du diagramme depuis la base de données + + + + 导出为xml文件 + Exporter en fichier XML + + + + 删除此图 + Supprimer ce diagramme + + + + 一键使能 + Activer en un clic + + + + 选择导出路径 + Sélectionner le chemin d'exportation + + + + 询问 + Demander + + + + 文件已存在,是否覆盖? + Le fichier existe déjà, voulez-vous le remplacer ? + + + + 文件打开失败 + Échec de l'ouverture du fichier + + + + 从数据库读取文件内容失败 + Échec de la lecture du contenu du fichier depuis la base de données + + + + 导出成功 + Exportation réussie + + + + 使能完成 + Activation terminée + + + + %1 图检查有错误不能使能! + %1 Le diagramme contient des erreurs et ne peut pas être activé ! + + + + %1 使能失败! + %1 Échec de l'activation ! + + + + 打开检索器... + Ouvrir le rechercheur... + + + + 找不到当前fbd文档! + Impossible de trouver le document FBD actuel ! + + + + 确定删除模板 %1 吗? + Êtes-vous sûr de vouloir supprimer le modèle %1 ? + + + + 删除成功 + Suppression réussie + + + + 删除失败 + Échec de la suppression + + + + 选中模块左对齐 + Aligner à gauche les modules sélectionnés + + + + 选中模块上端对齐 + Aligner en haut les modules sélectionnés + + + + 选中模块右对齐 + Aligner à droite les modules sélectionnés + + + + 选中模块下端对齐 + Aligner en bas les modules sélectionnés + + + + 复制选中模块 + Copier les modules sélectionnés + + + + 粘贴操作 + Opération de collage + + + + 剪切选中模块 + Couper les modules sélectionnés + + + + CFBDRetriever + + + + 检索器 + Récupérateur + + + + + 专业: + Profession : + + + + + 位置: + Position : + + + + 设备组: + Groupe d'équipement : + + + + 表名: + Nom de la table : + + + + 检索方式: + Méthode de recherche : + + + + 设备检索 + Recherche d'équipement + + + + 表检索 + Recherche de table + + + + 点类型: + Type de point : + + + + 值: + Valeur : + + + + 点名: + Nom du point : + + + + 列名: + Nom de la colonne : + + + + + 数字量 + Quantité numérique + + + + + 模拟量 + Quantité analogique + + + + + 混合量 + Quantité mixte + + + + + 累积量 + Quantité cumulative + + + + + 常量 + Constante + + + + + + 通用 + Général + + + + + + 其他 + Autre + + + + 值 + Valeur + + + + 状态 + État + + + + CGraphicsScene + + + &撤销 + &Annuler + + + + &重做 + &Refaire + + + + 没有与模块 + Aucun module correspondant + + + + + 的当前端口相匹配的类型 [ + au type du port actuel correspondant [ + + + + 与 + avec + + + + CGroup + + + Form + Formulaire + + + + 注意:修改组的【所属专业】属性后需要重启监控系统 + Attention : après avoir modifié l'attribut [Spécialité] du groupe, un redémarrage du système de surveillance est nécessaire. + + + + 添加 + Ajouter + + + + 修改 + Modifier + + + + 删除 + Supprimer + + + + 关闭 + Fermer + + + + 组信息 + Informations du groupe + + + + ID + ID + + + + 名称 + Nom + + + + 描述 + Description + + + + 刷新间隔 + Intervalle de rafraîchissement + + + + 业务类型 + Type d'activité + + + + 所属位置 + Emplacement + + + + 所属专业 + Spécialité + + + + 更新时间 + Heure de mise à jour + + + + 版本号 + Numéro de version + + + + + + + + + + + 错误 + Erreur + + + + 创建系统信息访问库失败 + Échec de la création de la bibliothèque d'accès aux informations système + + + + 获取所有位置信息失败 + Échec de l'obtention de toutes les informations de localisation + + + + 获取所有专业信息失败 + Échec de l'obtention de toutes les informations sur la spécialité + + + + + 打开数据库失败 + Échec de l'ouverture de la base de données + + + + 查询fbd_group表最大id失败 + Échec de la requête pour obtenir l'ID maximum de la table fbd_group + + + + 添加组 + Ajouter un groupe + + + + + 告警 + Alerte + + + + + 请先选择一条记录 + Veuillez d'abord sélectionner un enregistrement + + + + 修改组 + Modifier le groupe + + + + 查询此组包含的图失败 + Échec de la requête pour obtenir les diagrammes inclus dans ce groupe + + + + 警告 + Avertissement + + + + 此组内有未删除的图,请先删除图 + Ce groupe contient des diagrammes non supprimés, veuillez d'abord les supprimer + + + + 提示 + Conseil + + + + 确认删除? + Confirmer la suppression ? + + + + 删除失败 + Échec de la suppression + + + + CGroupEdit + + + Form + Formulaire + + + + 名 称 + Nom + + + + 描 述 + Description + + + + 刷新间隔 + Intervalle de rafraîchissement + + + + (单位:毫秒) + (Unité : millisecondes) + + + + 业务类型 + Type d'activité + + + + 所属位置 + Emplacement + + + + 所属专业 + Spécialité + + + + 确定 + Confirmer + + + + 取消 + Annuler + + + + + + + + + + 错误 + Erreur + + + + 创建系统信息访问库失败 + Échec de la création de la bibliothèque d'accès aux informations du système + + + + 获取所有位置信息失败 + Échec de l'obtention des informations de localisation + + + + 获取所有专业信息失败 + Échec de l'obtention des informations professionnelles + + + + 组名称不能为空 + Le nom du groupe ne peut pas être vide + + + + 打开数据库失败 + Échec de l'ouverture de la base de données + + + + 查询fbd_group表最大id失败 + Échec de la recherche de l'ID maximal dans la table fbd_group + + + + SQL语句执行失败 + Échec de l'exécution de la requête SQL + + + + CPluginManager + + + 错误 + Erreur + + + + 存在同名插件: + Un plugin avec le même nom existe déjà : + + + + CProperty + + + + 端口 + Port + + + + + 显示名称 + Nom affiché + + + + 图元显示名称 + Nom affiché de l'élément graphique + + + + CPropertyTreeView + + + + 测点串 + Chaîne de points + + + + 请把检索器中的点拖到属性中含“测点串”的行里 + Veuillez faire glisser les points du sélecteur dans la ligne contenant "Chaîne de points" dans les propriétés + + + + 点被拖到属性为“ + Le point a été déplacé dans la propriété " + + + + ”中 + " + + + + 已成功修改 + Modifié avec succès + + + + 个测点串属性值 + valeurs de points de mesure + + + + CReplaceDialog + + + Dialog + Dialog + + + + 替换后 + Après remplacement + + + + 替换前 + Avant remplacement + + + + 是否区分大小写 + Différencier la casse + + + + 取消 + Annuler + + + + 确认 + Confirmer + + + + 替换标签值 + Remplacer la valeur du tag + + + + CSetGroupDialog + + + 图 名 称 + Nom du graphique + + + + 不能重复 + Ne peut pas être dupliqué + + + + 选 择 组 + Choisir un groupe + + + + 是否使能 + Activer/Désactiver + + + + + 设置图属性 + Définir les propriétés du graphique + + + + + 是 + Oui + + + + + 否 + Non + + + + + + + + + 错误 + Erreur + + + + + 打开数据库失败 + Échec de l'ouverture de la base de données + + + + 获取组ID失败 + Échec de l'obtention de l'ID du groupe + + + + 请重新命名 + Veuillez renommer + + + + 图名称重复 + Nom du graphique en double + + + + 查询数据库失败 + Échec de la requête dans la base de données + + + + CTemplateWidget + + + 删除此模板 + Supprimer ce modèle + + + + QObject + + + 输入测点未设置 + Point d'entrée non défini + + + + 输出测点未设置 + Point de sortie non défini + + + + 未关联所有输入端口 + Tous les ports d'entrée ne sont pas associés + + + + 加(D) + Ajouter (D) + + + + 加(A) + Ajouter (A) + + + + 除(D) + Diviser (D) + + + + 减(D) + Soustraire (D) + + + + 除(A) + Diviser (A) + + + + 减(A) + Soustraire (A) + + + + 非 + Non + + + + 与 + Et + + + + AO控制 + Contrôle AO + + + + DO控制 + Contrôle DO + + + + 输入(D) + Entrée (D) + + + + 常量(D) + Constante (D) + + + + 输入(A) + Entrée (A) + + + + 常量(A) + Constante (A) + + + + 常量(S) + Constante (S) + + + + 或 + Ou + + + + 大于(D) + Plus grand que (D) + + + + 小于(D) + Moins que (D) + + + + 大于等于(D) + Supérieur ou égal à (D) + + + + 小于等于(D) + Inférieur ou égal à (D) + + + + 等于(D) + Égal à (D) + + + + 不等于(D) + Pas égal à (D) + + + + 不等于(A) + Pas égal à (A) + + + + 大于(A) + Plus grand que (A) + + + + 小于(A) + Moins que (A) + + + + 乘(A) + Multiplier (A) + + + + 乘(D) + Multiplier (D) + + + + Float转Int + Float à Int + + + + Int转Float + Int à Float + + + + Int转Bool + Int à Bool + + + + Bool转Int + Bool à Int + + + + 输出(D) + Sortie (D) + + + + 输出(A) + Sortie (A) + + + + 防抖延时(D) + Temps anti-rebond (D) + + + + 输入选择 + Sélection d'entrée + + + + 按位拆解 + Décomposition par bits + + + + LUA脚本 + Script LUA + + + + 全局变量输出 + Sortie de variable globale + + + + 全局变量输入 + Entrée de variable globale + + + + 周期计算(A) + Calcul de période (A) + + + + 逻辑编程工具 + Outil de programmation logique + + + + actionAOplugin + + + 目标值 + Valeur cible + + + + 使能 + Activer + + + + 0-NO + 0-NON + + + + 1-YES + 1-OUI + + + + 动作名称 + Nom de l'action + + + + 超时时间(单位:s) + Temps d'attente (s) + + + + 控制测点串 + Série de points de contrôle + + + + 失败重做次数 + Nombre de tentatives en cas d'échec + + + + 输入控制测点串 + Série de points de contrôle d'entrée + + + + 测点 + Point de contrôle + + + + actionDOplugin + + + 目标值 + Valeur cible + + + + 使能 + Activer + + + + 0-NO + 0-NON + + + + 1-YES + 1-OUI + + + + 动作名称 + Nom de l'action + + + + 超时时间(单位:s) + Temps d'attente (s) + + + + 控制测点串 + Série de points de contrôle + + + + 失败重做次数 + Nombre de tentatives en cas d'échec + + + + 输入控制测点串 + Série de points de contrôle d'entrée + + + + 测点 + Point de contrôle + + + + add2Plugin + + + 转换个数 + Nombre de conversions + + + + 输入个数不能超过32个!!! + Le nombre d'entrées ne peut pas dépasser 32 !!! + + + + 输入值不能小于2 + La valeur d'entrée ne peut pas être inférieure à 2 + + + + 输入值与现值相同 + La valeur d'entrée est identique à la valeur actuelle + + + + add2fPlugin + + + 转换个数 + Nombre de conversions + + + + 输入个数不能超过32个!!! + Le nombre d'entrées ne peut pas dépasser 32 !!! + + + + 输入值不能小于2 + La valeur d'entrée ne peut pas être inférieure à 2 + + + + 输入值与现值相同 + La valeur d'entrée est identique à la valeur actuelle + + + + and2Plugin + + + 转换个数 + Nombre de conversions + + + + 输入个数不能超过32个!!! + Le nombre d'entrées ne peut pas dépasser 32 !!! + + + + 输入值不能小于2 + La valeur d'entrée ne peut pas être inférieure à 2 + + + + 输入值与现值相同 + La valeur d'entrée est identique à la valeur actuelle + + + + antishakePlugin + + + 0-无效值延迟(输出无效0) + 0-Délai pour valeur invalide (sortie invalide 0) + + + + 1-有效值延迟 + 1-Délai pour valeur valide + + + + baseperiodcalcPlugin + + + 是否变化 + Changement détecté + + + + 0-平均值 + 0-Moyenne + + + + 0-不忽略 + 0-Ne pas ignorer + + + + 1-忽略 + 1-Ignorer + + + + 计算模式 + Mode de calcul + + + + 计算周期(秒) + Période de calcul (en secondes) + + + + 是否忽略无效值 + Ignorer les valeurs invalides + + + + 【计算周期】值错误,合法值:大于0 + Erreur de la valeur de la période de calcul, valeur valide : supérieure à 0 + + + + bitsplitPlugin + + + 转换个数 + Nombre de conversions + + + + 输出个数不能超过64个!!! + Le nombre de sorties ne peut pas dépasser 64 !!! + + + + 输出值不能小于1 + La valeur de sortie ne peut pas être inférieure à 1 + + + + 输出值与现值相同 + La valeur de sortie est identique à la valeur actuelle + + + + constPlugin + + + 输出 + Sortie + + + + constfPlugin + + + 输出 + Sortie + + + + constsPlugin + + + 输出 + Sortie + + + + divPlugin + + + 转换个数 + Nombre de conversions + + + + 输入个数不能超过32个!!! + Le nombre d'entrées ne peut pas dépasser 32 !!! + + + + 输入值不能小于2 + La valeur d'entrée ne peut pas être inférieure à 2 + + + + 输入值与现值相同 + La valeur d'entrée est identique à la valeur actuelle + + + + divfPlugin + + + 转换个数 + Nombre de conversions + + + + 输入个数不能超过32个!!! + Le nombre d'entrées ne peut pas dépasser 32 !!! + + + + 输入值不能小于2 + La valeur d'entrée ne peut pas être inférieure à 2 + + + + 输入值与现值相同 + La valeur d'entrée est identique à la valeur actuelle + + + + globalInputPlugin + + + 0-整型 + 0-Entier + + + + 1-浮点型 + 1-Type flottant + + + + 2-布尔型 + 2-Type booléen + + + + 3-字符串型 + 3-Type chaîne de caractères + + + + 变量名 + Nom de la variable + + + + 变量描述 + Description de la variable + + + + 数据类型 + Type de données + + + + 变量名不能为空 + Le nom de la variable ne peut pas être vide + + + + 0 + 0 + + + + 1 + 1 + + + + 2 + 2 + + + + 3 + 3 + + + + globalOutputPlugin + + + 0-禁用 + 0-Désactivé + + + + 1-启用 + 1-Activé + + + + 0-整型 + 0-Entier + + + + 1-浮点型 + 1-Type flottant + + + + 2-布尔型 + 2-Type booléen + + + + 3-字符串型 + 3-Type chaîne de caractères + + + + 变量名 + Nom de la variable + + + + 变量描述 + Description de la variable + + + + 启用使能引脚 + Pin de permission activée + + + + 数据类型 + Type de données + + + + 变量名不能为空 + Le nom de la variable ne peut pas être vide + + + + 使能 + Activation + + + + 0 + 0 + + + + 1 + 1 + + + + 2 + 2 + + + + 3 + 3 + + + + inputPlugin + + + 0-NO + 0-NON + + + + 1-YES + 1-OUI + + + + 输入测点串 + Série de points de mesure d'entrée + + + + 是否输出测点串 + Sortie de la série de points de mesure + + + + 测点串 + Série de points de mesure + + + + inputfPlugin + + + 输入测点串 + Chaîne de points d'entrée + + + + inputswitchPlugin + + + 转换个数 + Nombre de conversions + + + + 输入个数不能超过32个!!! + Le nombre d'entrées ne peut pas dépasser 32 !!! + + + + 输入值不能小于2 + La valeur d'entrée ne peut pas être inférieure à 2 + + + + 输入值与现值相同 + La valeur d'entrée est identique à la valeur actuelle + + + + luaPlugin + + + LUA内容 + Contenu LUA + + + + 端口间距 + Espacement des ports + + + + 图元宽度 + Largeur de l'élément graphique + + + + 输入个数 + Nombre d'entrées + + + + 输出个数 + Nombre de sorties + + + + 输入端口 + Port d'entrée + + + + + 数据类型 + Type de données + + + + 输出端口 + Port de sortie + + + + + 0 + 0 + + + + + 1 + 1 + + + + + 2 + 2 + + + + + 3 + 3 + + + + + 4 + 4 + + + + 宽度不能大于1000 + La largeur ne peut pas dépasser 1000 + + + + 宽度不能小于40 + La largeur ne peut pas être inférieure à 40 + + + + + + + 输入值与现值相同 + La valeur d'entrée est identique à la valeur actuelle + + + + 端口间隔不能大于400 + L'espacement des ports ne peut pas dépasser 400 + + + + 端口间隔不能小于16 + L'espacement des ports ne peut pas être inférieur à 16 + + + + + 输入个数不能超过32个!!! + Le nombre d'entrées ne peut pas dépasser 32 !!! + + + + + 输入值不能小于0 + La valeur d'entrée ne peut pas être inférieure à 0 + + + + + 0-整型 + 0-Entier + + + + + 1-浮点型 + 1-Flottant + + + + + 2-布尔型 + 2-Booléen + + + + + 3-字符串型 + 3-Chaîne + + + + + 4-告警型 + 4-Alerte + + + + mulPlugin + + + 转换个数 + Nombre de conversions + + + + 输入个数不能超过32个!!! + Le nombre d'entrées ne peut pas dépasser 32 !!! + + + + 输入值不能小于2 + La valeur d'entrée ne peut pas être inférieure à 2 + + + + 输入值与现值相同 + La valeur d'entrée est identique à la valeur actuelle + + + + mulfPlugin + + + 转换个数 + Nombre de conversions + + + + 输入个数不能超过32个!!! + Le nombre d'entrées ne peut pas dépasser 32 !!! + + + + 输入值不能小于2 + La valeur d'entrée ne peut pas être inférieure à 2 + + + + 输入值与现值相同 + La valeur d'entrée est identique à la valeur actuelle + + + + or2Plugin + + + 转换个数 + Nombre de conversions + + + + 输入个数不能超过32个!!! + Le nombre d'entrées ne peut pas dépasser 32 !!! + + + + 输入值不能小于2 + La valeur d'entrée ne peut pas être inférieure à 2 + + + + 输入值与现值相同 + La valeur d'entrée est identique à la valeur actuelle + + + + outputPlugin + + + 使能 + Activer + + + + 0-同步 + 0 - Synchrone + + + + 1-异步 + 1 - Asynchrone + + + + 输出测点串 + Chaîne de points de sortie + + + + 仅判断使能端口值不判断值是否有效 + Vérifier uniquement la valeur du port d'activation, sans vérifier la validité de la valeur + + + + 输出模式 + Mode de sortie + + + + outputfPlugin + + + 使能 + Activer + + + + 0-同步 + 0 - Synchrone + + + + 1-异步 + 1 - Asynchrone + + + + 输出测点串 + Chaîne de points de sortie + + + + 仅判断使能端口值不判断值是否有效 + Vérifier uniquement la valeur du port d'activation, sans vérifier la validité de la valeur + + + + 输出模式 + Mode de sortie + + + + subPlugin + + + 转换个数 + Nombre de conversions + + + + 输入个数不能超过32个!!! + Le nombre d'entrées ne peut pas dépasser 32 !!! + + + + 输入值不能小于2 + La valeur d'entrée ne peut pas être inférieure à 2 + + + + 输入值与现值相同 + La valeur d'entrée est identique à la valeur actuelle + + + + subfPlugin + + + 转换个数 + Nombre de conversions + + + + 输入个数不能超过32个!!! + Le nombre d'entrées ne peut pas dépasser 32 !!! + + + + 输入值不能小于2 + La valeur d'entrée ne peut pas être inférieure à 2 + + + + 输入值与现值相同 + La valeur d'entrée est identique à la valeur actuelle + + + diff --git a/resource/fr/fes/translate/fes_en.mo b/resource/fr/fes/translate/fes_en.mo new file mode 100644 index 0000000000000000000000000000000000000000..59d3d19ea3d8a1a786f43ac3a9cc530d6e3a37f3 GIT binary patch literal 23353 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 literal 0 HcmV?d00001 diff --git a/resource/fr/fes/translate/fes_en.po b/resource/fr/fes/translate/fes_en.po new file mode 100644 index 00000000..dd72db3e --- /dev/null +++ b/resource/fr/fes/translate/fes_en.po @@ -0,0 +1,2430 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2024-05-30 09:48+0800\n" +"PO-Revision-Date: 2024-05-30 09:48+0800\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 3.4.4\n" +"X-Poedit-Basepath: ../../../../../src/fes\n" +"X-Poedit-KeywordsList: I18N;I18N_C\n" +"X-Poedit-SearchPath-0: fes\n" +"X-Poedit-SearchPath-1: protocol\n" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:294 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:278 +#, fuzzy +#| msgid "选择成功" +msgid "遥控选择成功!" +msgstr "Selection success" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:295 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:279 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控选择成功,RtuNo:%d,遥控点:%d " +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:298 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:282 +msgid "遥控放弃成功!" +msgstr "Remote control abandonment successful!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:299 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:283 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控放弃成功,RtuNo:%d,遥控点:%d " +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:302 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:286 +msgid "遥控执行成功!" +msgstr "Remote control execution successful!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:303 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:287 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控执行成功,RtuNo:%d,遥控点:%d " +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:312 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:296 +msgid "遥控选择失败!" +msgstr "Remote control selection failed!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:313 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:297 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控选择失败,RtuNo:%d,遥控点:%d 错误代号:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:316 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:300 +msgid "遥控放弃失败!" +msgstr "Remote control abandonment failed!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:317 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:301 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控放弃失败,RtuNo:%d,遥控点:%d 错误代号:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:320 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:304 +msgid "遥控执行失败!" +msgstr "Remote control execution failed!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:321 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:305 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控执行失败,RtuNo:%d,遥控点:%d 错误代号:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:396 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:380 +#, fuzzy, c-format +#| msgid "KBD104 定值读取成功!RtuNo:%d" +msgid "定值读取部分成功!RtuNo:%d" +msgstr "KBD104 Read const success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:402 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:386 +#, fuzzy, c-format +#| msgid "KBD104 定值读取失败!RtuNo:%d" +msgid "定值读取失败!RtuNo:%d" +msgstr "KBD104 Read const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:409 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:393 +#, fuzzy, c-format +#| msgid "KBD104 定值读取成功!RtuNo:%d" +msgid "定值读取成功!RtuNo:%d" +msgstr "KBD104 Read const success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:480 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:464 +#, fuzzy, c-format +#| msgid "定值修改成功! RtuNo:%d" +msgid "定值修改部分成功!RtuNo:%d " +msgstr "Modify const success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:486 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:470 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "定值修改失败!RtuNo:%d " +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:493 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:477 +#, fuzzy, c-format +#| msgid "定值修改成功! RtuNo:%d" +msgid "定值修改成功!RtuNo:%d" +msgstr "Modify const success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:547 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:531 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3980 +#, c-format +msgid "激活定值修改成功! RtuNo:%d" +msgstr "Active the const modification success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:553 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:537 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3986 +#, c-format +msgid "激活定值修改失败!RtuNo:%d" +msgstr "Active the const modification failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:581 +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:582 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:565 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:566 +#, fuzzy, c-format +#| msgid "激活定值修改成功! RtuNo:%d" +msgid "激活定值组返回成功! RtuNo:%d" +msgstr "Active the const modification success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:587 +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:588 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:571 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:572 +#, fuzzy, c-format +#| msgid "激活定值修改失败!RtuNo:%d" +msgid "激活定值组返回失败! RtuNo:%d" +msgstr "Active the const modification failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:666 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:650 +#, fuzzy, c-format +#| msgid "KBD104 定值读取成功!RtuNo:%d" +msgid "参数读取部分成功!RtuNo:%d" +msgstr "KBD104 Read const success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:672 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:656 +#, fuzzy, c-format +#| msgid "KBD104 定值读取失败!RtuNo:%d" +msgid "参数读取失败!RtuNo:%d" +msgstr "KBD104 Read const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:679 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:663 +#, fuzzy, c-format +#| msgid "KBD104 定值读取成功!RtuNo:%d" +msgid "参数读取成功!RtuNo:%d" +msgstr "KBD104 Read const success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:753 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:737 +#, fuzzy, c-format +#| msgid "KBD104 定值修改成功!RtuNo:%d" +msgid "参数修改部分成功!RtuNo:%d " +msgstr "KBD104 Modify const success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:759 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:743 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "参数修改失败!RtuNo:%d " +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:766 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:750 +#, fuzzy, c-format +#| msgid "KBD104 定值修改成功!RtuNo:%d" +msgid "参数修改成功!RtuNo:%d" +msgstr "KBD104 Modify const success! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:995 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:756 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1049 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2749 +msgid "通信没有建立遥控失败" +msgstr "Communication not established,remote control failed" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:996 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1050 +#, fuzzy, c-format +#| msgid "通信没有建立遥控失败" +msgid "通信没有建立遥控失败 RtuNo:%d" +msgstr "Communication not established,remote control failed" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1008 +#: protocol/cdt/CdtDataProcThread.cpp:289 +#: protocol/iec103/IEC103DataProcThread.cpp:948 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:766 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1062 +#: protocol/kbd511s_io/kbd511s_ioRtuDataProcThread.cpp:289 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2733 +#: protocol/khbas/KhbasDataProcThread.cpp:540 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:350 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:3729 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:357 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:361 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:398 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:480 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:1640 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:548 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:595 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:544 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:662 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:450 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:574 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:483 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1296 +#: protocol/r80x_io/r80x_ioRtuDataProcThread.cpp:449 +#: protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1029 +#: protocol/snmp/snmpDataProcThread.cpp:502 +#: protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:1285 +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:124 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控失败!RtuNo:%d 遥控点:%d 闭锁" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1037 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:840 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1091 +#, fuzzy +#| msgid "下发YK 选择命令成功 %s 值%d" +msgid "下发遥控选择命令,设备返回成功" +msgstr "Successful in send YK selection command %s value %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1043 +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1049 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:846 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1097 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1103 +#, fuzzy +#| msgid "下发YK 选择命令失败 %s 值%d" +msgid "下发遥控选择命令,设备返回失败" +msgstr "Failed to send YK selection command %s value %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1067 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:871 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1121 +#, fuzzy +#| msgid "下发YK 执行命令成功 %s 值%d" +msgid "下发遥控执行命令,设备返回成功" +msgstr "Successful in send YK execution command %s value %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1068 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1122 +#, fuzzy, c-format +#| msgid "设备返回撤销成功!RtuNo:%d 遥控点:%d" +msgid "下发遥控执行命令,设备返回成功 RtuNo:%d 遥控点:%d 值:%d" +msgstr "Device return revocation success! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1073 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:877 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1127 +#, fuzzy +#| msgid "下发YK 执行命令失败 %s 值%d" +msgid "下发遥控执行命令,设备返回失败" +msgstr "Failed to send YK execution command %s value %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1074 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1128 +#, c-format +msgid "下发遥控执行命令,设备返回失败 RtuNo:%d 遥控点:%d 值:%d 返回状态:%d" +msgstr "" +"Issued remote control execution command, device returned failure RtuNo: %d " +"Control Point: %d Value: %d Return Status: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1079 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1133 +#, fuzzy +#| msgid "下发YK 执行命令失败 %s 值%d" +msgid "下发遥控执行命令失败" +msgstr "Failed to send YK execution command %s value %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1080 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1134 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "下发遥控执行命令失败 RtuNo:%d 遥控点:%d 值:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1098 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1152 +msgid "下发遥控放弃命令,设备返回成功" +msgstr "" +"Issued remote control abandonment command, device returned successfully" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1099 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1153 +#, fuzzy, c-format +#| msgid "设备返回撤销成功!RtuNo:%d 遥控点:%d" +msgid "下发遥控放弃命令,设备返回成功 RtuNo:%d 遥控点:%d 值:%d" +msgstr "Device return revocation success! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1104 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1158 +msgid "下发遥控放弃命令,设备返回失败" +msgstr "Issued remote control abandonment command, device returned failure" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1105 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1159 +#, c-format +msgid "下发遥控放弃命令,设备返回失败 RtuNo:%d 遥控点:%d 值:%d 返回状态:%d" +msgstr "" +"Issued remote control abandonment command, device returned failure with " +"RtuNo: %d, Control Point: %d, Value: %d, Return Status: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1111 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1165 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "下发遥控放弃命令失败 RtuNo:%d 遥控点:%d 值:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1121 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:915 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1175 +msgid "遥控命令类型错误!" +msgstr "Incorrect remote control command type!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1122 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1176 +#, c-format +msgid "遥控命令类型错误,RtuNo:%d,遥控点:%d 命令类型:%d" +msgstr "" +"Error: Incorrect remote control command type, RtuNo: %d, Control Point: %d, " +"Command Type: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1134 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:776 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1188 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2834 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2979 +msgid "找不到遥控点遥控失败!" +msgstr "Cannot find remote control point,remote control failed!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1135 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1189 +#, fuzzy, c-format +#| msgid "找不到遥控点遥控失败,RTU:%d,YK:%d cmd:%d" +msgid "找不到遥控点遥控失败,RtuNo:%d,遥控点:%d 命令类型:%d" +msgstr "" +"Cannot find remote control point,remote control failed,RTU:%d,YK:%d cmd:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1183 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:966 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1142 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1237 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1413 +#, fuzzy +#| msgid "通信没有建立遥控失败" +msgid "通信没有建立遥调失败" +msgstr "Communication not established,remote control failed" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1184 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1238 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1414 +#, fuzzy, c-format +#| msgid "通信没有建立遥控失败" +msgid "通信没有建立遥调失败 RtuNo:%d" +msgstr "Communication not established,remote control failed" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1206 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1260 +#: protocol/khbas/KhbasDataProcThread.cpp:703 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:641 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:3839 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:826 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:612 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:649 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:954 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:749 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:796 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:745 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:862 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:650 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:779 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:645 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1437 +#: protocol/snmp/snmpDataProcThread.cpp:650 +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:207 +#, c-format +msgid "遥调失败!RtuNo:%d 遥调点:%d 量程越限" +msgstr "" +"Remote adjustment failed! RtuNo:%d Remote adjustment point:%d out of limit" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1212 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1000 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1176 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1266 +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:213 +#, fuzzy +#| msgid "遥调失败,量程配置错误,最大量程<=最小量程!" +msgid "遥调失败!量程配置错误,最大量程<=最小量程!" +msgstr "" +"Remote adjustment failed! Range configuration error, maximum range <= " +"minimum range!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1218 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1272 +#: protocol/khbas/KhbasDataProcThread.cpp:716 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:654 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:3852 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:839 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:625 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:662 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:967 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:762 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:809 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:758 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:875 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:663 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:792 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:658 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1450 +#: protocol/snmp/snmpDataProcThread.cpp:663 +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:219 +#, c-format +msgid "遥调失败!RtuNo:%d 遥调点:%d 系数为0" +msgstr "" +"Remote adjustment failed! RtuNo:%d Remote adjustment point:%d Coefficient is " +"0" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1226 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1280 +#, fuzzy, c-format +#| msgid "遥调失败!RtuNo:%d 遥调点:%d" +msgid "遥调失败,点系数为0或者量程越限!RtuNo:%d 遥调点:%d" +msgstr "Remote adjustment failed! RtuNo:%d Remote adjustment point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1238 +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1239 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1292 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1293 +#, fuzzy, c-format +#| msgid "遥调失败!RtuNo:%d 找不到遥调点:%d" +msgid "遥调失败!RtuNo:%d 找不到遥调点路径:%d" +msgstr "" +"Remote adjustment failed! RtuNo:%d cannot find remote adjustment point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1269 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1086 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1262 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1326 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1478 +msgid "下发遥调命令,设备返回成功" +msgstr "Issued remote adjustment command, device returned successfully" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1270 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1327 +#, c-format +msgid "" +"下发遥调命令,设备返回成功 RtuNo:%d 遥调点:%d 下发值:%.2f 接收命令值:%.2f" +msgstr "" +"Issued remote adjustment command, device returned successfully, RtuNo: %d, " +"Adjustment Point: %d, Sent Value: %.2f, Received Command Value: %.2f" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1275 +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1282 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1093 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1269 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1332 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1339 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1484 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1491 +msgid "下发遥调命令,设备返回失败" +msgstr "Issued remote adjustment command, device returned failure" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1276 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1333 +#, c-format +msgid "" +"下发遥调命令,设备返回失败 RtuNo:%d 遥调点:%d 下发值:%.2f 接收命令值:%.2f 返" +"回状态:%d" +msgstr "" +"Issue remote adjustment command failed, RtuNo: %d, Adjustment Point: %d, " +"Sent Value: %.2f, Received Command Value: %.2f, Return Status: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1283 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1340 +#, c-format +msgid "下发遥调命令,设备返回失败 RtuNo:%d 遥调点:%d 下发值:%f 接收命令值:%f" +msgstr "" +"Issued remote adjustment command failed, RtuNo: %d, Adjustment Point: %d, " +"Sent Value: %f, Received Command Value: %f" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1298 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:986 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1161 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1355 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1513 +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:249 +msgid "遥调控制命令错误!" +msgstr "Remote adjustment control command error!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1300 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1357 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1515 +#, c-format +msgid "遥调控制命令错误! RtuNo:%d 遥调点:%d CtrlActType=%d " +msgstr "" +"Remote adjustment control command error! RtuNo: %d, Adjustment Point: %d, " +"CtrlActType: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1311 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:977 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1152 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1368 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1526 +#, fuzzy +#| msgid "遥调失败!RtuNo:%d 找不到遥调点:%d" +msgid "遥调失败!找不到遥调点" +msgstr "" +"Remote adjustment failed! RtuNo:%d cannot find remote adjustment point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1312 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1369 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1527 +#: protocol/khbas/KhbasDataProcThread.cpp:821 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:741 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:3939 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:926 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:712 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:749 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:1139 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:881 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:928 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:877 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:960 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:748 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:965 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:743 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1531 +#: protocol/snmp/snmpDataProcThread.cpp:748 +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:260 +#, c-format +msgid "遥调失败!RtuNo:%d 找不到遥调点:%d" +msgstr "" +"Remote adjustment failed! RtuNo:%d cannot find remote adjustment point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1339 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1554 +msgid "遥控选择超时!" +msgstr "Remote control selection timed out!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1340 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1555 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控选择超时,RtuNo:%d,遥控点:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1343 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1558 +msgid "遥控放弃超时!" +msgstr "Remote control abandonment timed out!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1344 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1559 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控放弃超时,RtuNo:%d,遥控点:%d" +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1347 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1562 +msgid "遥控执行超时!" +msgstr "Remote control execution timed out!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1348 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1563 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控执行超时,RtuNo:%d,遥控点:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1365 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1580 +msgid "遥调执行超时!" +msgstr "Remote control execution timeout!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1373 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1588 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "定值切换返回超时!RtuNo:%d" +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1376 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1591 +#, fuzzy, c-format +#| msgid "KBD104 定值读取失败!RtuNo:%d" +msgid "定值读取返回超时!RtuNo:%d " +msgstr "KBD104 Read const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1379 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1594 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "定值修改返回超时!RtuNo:%d " +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1382 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1597 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "定值确认修改返回超时!RtuNo:%d " +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1385 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1600 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "定值操作未知错误!RtuNo:%d " +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1456 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1671 +msgid "通信中断,定值控制失败!" +msgstr "Communication interrupted, setpoint control failed!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1461 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1676 +msgid "通信中断,定值控制失败!" +msgstr "Communication interrupted, setpoint control failed!" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1471 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1686 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3231 +#, c-format +msgid "控制参数不正确,定值控制失败!RtuNo:%d " +msgstr "Incorrect control parameters,const control failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1474 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1689 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3234 +#, c-format +msgid "控制参数不正确,定值控制失败!RtuNo:%d" +msgstr "Incorrect control parameters,const control failed! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1610 +#: protocol/iec103/IEC103DataProcThread.cpp:1563 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1825 +#: protocol/kbd104/KBD104DataProcThread.cpp:3359 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3385 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:822 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:3978 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:1007 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:793 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:830 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:1219 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:1787 +#: protocol/snmp/snmpDataProcThread.cpp:829 +#, c-format +msgid "HMI命令解析失败,不下发控制命令!RtuNo:%d " +msgstr "Failed to parse HMI command,no send control command down! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1611 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1826 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3386 +#, c-format +msgid "HMI命令解析失败,不下发控制命令!RtuNo:%d" +msgstr "Failed to parse HMI command,no send control command down! RtuNo:%d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1622 +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1623 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1837 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1838 +#, c-format +msgid "下发定值切换成功!RtuNo:%d 定值组号:%d" +msgstr "Setpoint switch successful! RTU No: %d Setpoint group number: %d" + +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1628 +#: protocol/Testexample/iec61850client2/IEC61850cDataProcThread.cpp:1629 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1843 +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1844 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "下发定值切换失败!RtuNo:%d 定值组号:%d" +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/cdt/CdtDataProcThread.cpp:390 +#: protocol/kbd104/KBD104DataProcThread.cpp:2487 +#: protocol/kbd511s_io/kbd511s_ioRtuDataProcThread.cpp:349 +#: protocol/kbd511s_io/kbd511s_ioRtuDataProcThread.cpp:546 +#: protocol/khbas/KhbasDataProcThread.cpp:610 +#: protocol/khbas/KhbasDataProcThread.cpp:2413 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:547 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:1747 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:6216 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:732 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:2609 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:518 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3226 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:555 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3277 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:860 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:3842 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3747 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:655 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2350 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:702 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2448 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:651 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2398 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:769 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2778 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:557 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2616 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:681 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2510 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1463 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:552 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2223 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1347 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1730 +#: protocol/r80x_io/r80x_ioRtuDataProcThread.cpp:515 +#: protocol/r80x_io/r80x_ioRtuDataProcThread.cpp:800 +#: protocol/snmp/snmpDataProcThread.cpp:557 +#: protocol/snmp/snmpDataProcThread.cpp:1110 +#, c-format +msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:439 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控撤销!RtuNo:%d 遥控点:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:456 +#: protocol/cdt/CdtDataProcThread.cpp:681 +#: protocol/gf104/GF104DataProcThread.cpp:3993 +#: protocol/gf104/GF104DataProcThread.cpp:4251 +#: protocol/iec103/IEC103DataProcThread.cpp:3169 +#: protocol/iec103/IEC103DataProcThread.cpp:3288 +#: protocol/iec104/IEC104DataProcThread.cpp:4489 +#: protocol/iec104/IEC104DataProcThread.cpp:4785 +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3876 +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:4134 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:253 +#: protocol/kbd104/KBD104DataProcThread.cpp:2494 +#: protocol/kbd104/KBD104DataProcThread.cpp:3954 +#: protocol/kbd511s_io/kbd511s_ioRtuDataProcThread.cpp:366 +#: protocol/kbd511s_io/kbd511s_ioRtuDataProcThread.cpp:552 +#: protocol/khbas/KhbasDataProcThread.cpp:627 +#: protocol/khbas/KhbasDataProcThread.cpp:2419 +#: protocol/khbas/KhbasDataProcThread.cpp:2609 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:564 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:1753 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:6222 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:749 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:2615 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:535 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3232 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3889 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:572 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3283 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3911 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:877 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:3851 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:4479 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3752 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:672 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2356 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2521 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:719 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2454 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2619 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:668 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2404 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2569 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:786 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2784 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2949 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:574 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2622 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2787 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:698 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2516 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2683 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1469 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1634 +#: protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:1208 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:569 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2229 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2394 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1364 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1736 +#: protocol/r80x_io/r80x_ioRtuDataProcThread.cpp:532 +#: protocol/r80x_io/r80x_ioRtuDataProcThread.cpp:806 +#: protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1126 +#: protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1317 +#: protocol/snmp/snmpDataProcThread.cpp:574 +#: protocol/snmp/snmpDataProcThread.cpp:1116 +#: protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:770 +#, c-format +msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:475 +#: protocol/kbd511s_io/kbd511s_ioRtuDataProcThread.cpp:385 +#: protocol/khbas/KhbasDataProcThread.cpp:646 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:583 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:3781 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:768 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:554 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:591 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:896 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:1744 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:691 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:738 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:687 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:805 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:593 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:717 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:588 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1383 +#: protocol/r80x_io/r80x_ioRtuDataProcThread.cpp:551 +#: protocol/snmp/snmpDataProcThread.cpp:593 +#, c-format +msgid "遥控失败!RtuNo:%d 找不到遥控点:%d" +msgstr "Remote control failed! RtuNo:%d cannot find remote control point:%d" + +#: protocol/cdt/CdtDataProcThread.cpp:661 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:1713 +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:153 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控选择成功!RtuNo:%d 遥控点:%d" +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:666 +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:161 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控执行成功!RtuNo:%d 遥控点:%d" +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:671 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控取消成功!RtuNo:%d 遥控点:%d" +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:710 +#: protocol/gf104/GF104DataProcThread.cpp:4025 +#: protocol/iec103/IEC103DataProcThread.cpp:3203 +#: protocol/iec104/IEC104DataProcThread.cpp:4521 +#: protocol/iec104/IEC104DataProcThread.cpp:4558 +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3908 +#: protocol/khbas/KhbasDataProcThread.cpp:2448 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:1782 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:6251 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:2644 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3261 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3312 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:3880 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3779 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2385 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2483 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2433 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2813 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2651 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2545 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1498 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2258 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1765 +#: protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1159 +#: protocol/snmp/snmpDataProcThread.cpp:1145 +#, c-format +msgid "遥调成功!RtuNo:%d 遥调点:%d" +msgstr "Remote adjustment success! RtuNo:%d Remote adjustment point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:716 +#: protocol/gf104/GF104DataProcThread.cpp:4032 +#: protocol/gf104/GF104DataProcThread.cpp:4270 +#: protocol/iec103/IEC103DataProcThread.cpp:3210 +#: protocol/iec103/IEC103DataProcThread.cpp:3307 +#: protocol/iec104/IEC104DataProcThread.cpp:4528 +#: protocol/iec104/IEC104DataProcThread.cpp:4565 +#: protocol/iec104/IEC104DataProcThread.cpp:4804 +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3915 +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:4153 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:277 +#: protocol/kbd104/KBD104DataProcThread.cpp:3982 +#: protocol/khbas/KhbasDataProcThread.cpp:801 +#: protocol/khbas/KhbasDataProcThread.cpp:2454 +#: protocol/khbas/KhbasDataProcThread.cpp:2629 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:721 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:1788 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:3919 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:6257 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:906 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:2650 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:692 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3267 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3909 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:729 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3318 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3931 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:1119 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:3890 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:4499 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3784 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:861 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2391 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2541 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:908 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2489 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2639 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:857 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2439 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2589 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:940 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2819 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2969 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:728 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2657 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2807 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:945 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2553 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2703 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1504 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1654 +#: protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:1227 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:723 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2264 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2414 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1511 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1771 +#: protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1166 +#: protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1336 +#: protocol/snmp/snmpDataProcThread.cpp:728 +#: protocol/snmp/snmpDataProcThread.cpp:1151 +#, c-format +msgid "遥调失败!RtuNo:%d 遥调点:%d" +msgstr "Remote adjustment failed! RtuNo:%d Remote adjustment point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:743 +#: protocol/gf104/GF104DataProcThread.cpp:4306 +#: protocol/iec103/IEC103DataProcThread.cpp:3345 +#: protocol/iec104/IEC104DataProcThread.cpp:4840 +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:4189 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:319 +#: protocol/kbd104/KBD104DataProcThread.cpp:4010 +#: protocol/khbas/KhbasDataProcThread.cpp:955 +#: protocol/khbas/KhbasDataProcThread.cpp:2481 +#: protocol/khbas/KhbasDataProcThread.cpp:2665 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:1815 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:6284 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:2677 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3294 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3945 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3345 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3967 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:3917 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:4535 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3811 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:995 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2418 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2577 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:1042 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2516 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2675 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:991 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2466 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2625 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:1074 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2846 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:3005 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:862 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2684 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2843 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:1079 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2580 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2739 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1531 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1690 +#: protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:1262 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:857 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2291 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2450 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1646 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1798 +#: protocol/snmp/snmpDataProcThread.cpp:1178 +#, c-format +msgid "混合量输出成功!RtuNo:%d 混合量输出点:%d" +msgstr "The output of mix is successful! RtuNo:%d Mix output point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:749 +#: protocol/khbas/KhbasDataProcThread.cpp:2487 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:1821 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:6290 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:2683 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3300 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3351 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:3923 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3816 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2424 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2522 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2472 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2852 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2690 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2586 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1537 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2297 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1804 +#: protocol/snmp/snmpDataProcThread.cpp:1184 +#, c-format +msgid "混合量输出失败!RtuNo:%d 混合量输出点:%d" +msgstr "The output of mix is failed! RtuNo:%d Mix output point: %d" + +#: protocol/cdt/CdtDataProcThread.cpp:776 +#: protocol/khbas/KhbasDataProcThread.cpp:2522 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:1848 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:6317 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:2710 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3327 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3378 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:3950 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3843 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2451 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2549 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2499 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2879 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2717 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2613 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1564 +#: protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:1127 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2324 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1831 +#: protocol/snmp/snmpDataProcThread.cpp:1211 +#, c-format +msgid "自定义命令输出成功!RtuNo:%d " +msgstr "The custom command output was successful! RtuNo:%d" + +#: protocol/cdt/CdtDataProcThread.cpp:782 +#: protocol/khbas/KhbasDataProcThread.cpp:2544 +#: protocol/khbas/KhbasDataProcThread.cpp:2687 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:1854 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:6323 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:2716 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3333 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:3967 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3384 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:3989 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:3956 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:4557 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3848 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2457 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:2599 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2555 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:2697 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2505 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:2647 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:2885 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:3027 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2723 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:2865 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2619 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:2761 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:520 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:553 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:601 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:761 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:801 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:850 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1570 +#: protocol/modbus_tcp_pa/ModbusTcpPaDataProcThread.cpp:1712 +#: protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:566 +#: protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:651 +#: protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:757 +#: protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:1141 +#: protocol/modbus_tcp_pis/ModbusTcpPisDataProcThread.cpp:1283 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2330 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:2472 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1837 +#: protocol/snmp/snmpDataProcThread.cpp:1217 +#, c-format +msgid "自定义命令输出失败!RtuNo:%d " +msgstr "The custom command output was failed! RtuNo:%d" + +#: protocol/gf104/GF104DataProcThread.cpp:3417 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 通信中断" +msgid "GF104 遥控失败!RtuNo:%d 通信中断" +msgstr "IEC104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/gf104/GF104DataProcThread.cpp:3435 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 通信中断" +msgid "GF104 遥控失败! RtuNo:%d DO:%d 闭锁!" +msgstr "IEC104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/gf104/GF104DataProcThread.cpp:3536 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgid "GF104 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgstr "" +"IEC104 Remote control failed! RtuNo:%d cannot find remote control point: %d" + +#: protocol/gf104/GF104DataProcThread.cpp:3587 +#: protocol/gf104/GF104DataProcThread.cpp:3799 +#, fuzzy, c-format +#| msgid "IEC104 遥调失败!RtuNo:%d 通信中断" +msgid "GF104 遥调失败!RtuNo:%d 通信中断" +msgstr "IEC104 Remote adjustment failed! RtuNo:%d communication interrupt" + +#: protocol/gf104/GF104DataProcThread.cpp:3622 +#: protocol/gf104/GF104DataProcThread.cpp:3858 +#, fuzzy, c-format +#| msgid "IEC104 遥调失败!RtuNo:%d 遥调点:%d 范围超出" +msgid "GF104 遥调失败!RtuNo:%d 遥调点:%d 范围超出" +msgstr "" +"IEC104 Remote adjustment failed! RtuNo:%d Remote adjustment point: %d out of " +"range" + +#: protocol/gf104/GF104DataProcThread.cpp:3739 +#: protocol/gf104/GF104DataProcThread.cpp:3940 +#, fuzzy, c-format +#| msgid "IEC104 遥调失败!RtuNo:%d 找不到遥调点:%d" +msgid "GF104 遥调失败!RtuNo:%d 找不到遥调点:%d" +msgstr "" +"IEC104 Remote adjustment failed! RtuNo:%d cannot find remote adjustment " +"point: %d" + +#: protocol/gf104/GF104DataProcThread.cpp:3893 +#, fuzzy, c-format +#| msgid "IEC104 遥调成功!RtuNo:%d value=%f" +msgid "GF104 遥调成功!RtuNo:%d value=%f" +msgstr "IEC104 Remote adjustment success! RtuNo:%d value=%f" + +#: protocol/gf104/GF104DataProcThread.cpp:3900 +#, fuzzy, c-format +#| msgid "IEC104 遥调成功!RtuNo:%d value=%d" +msgid "GF104 遥调成功!RtuNo:%d value=%d" +msgstr "IEC104 Remote adjustment success! RtuNo:%d value=%d" + +#: protocol/gf104/GF104DataProcThread.cpp:3986 +#, fuzzy, c-format +#| msgid "IEC104 遥控成功!RtuNo:%d 遥控点:%d" +msgid "GF104 遥控成功!RtuNo:%d 遥控点:%d" +msgstr "IEC104 Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/iec103/IEC103DataProcThread.cpp:1002 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控选择成功!RtuNo:%d 遥控点:%d " +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/iec103/IEC103DataProcThread.cpp:1008 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控放弃成功!RtuNo:%d 遥控点:%d " +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/iec103/IEC103DataProcThread.cpp:1024 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgid "IEC103 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgstr "" +"IEC104 Remote control failed! RtuNo:%d cannot find remote control point: %d" + +#: protocol/iec103/IEC103DataProcThread.cpp:1082 +#, fuzzy, c-format +#| msgid "KBD61850 定值控制失败!RtuNo:%d 找不到对应的DS" +msgid "IEC103 读定值失败!RtuNo:%d 找不到定值点" +msgstr "" +"KBD61850 Const control failed! RtuNo:%d cannot find the corresponding DS" + +#: protocol/iec103/IEC103DataProcThread.cpp:1156 +#, fuzzy, c-format +#| msgid "KBD104 定值修改成功!RtuNo:%d" +msgid "IEC103 定值修改下装成功!RtuNo:%d" +msgstr "KBD104 Modify const success! RtuNo:%d" + +#: protocol/iec103/IEC103DataProcThread.cpp:1216 +#, c-format +msgid "IEC103 部分定值点没有,读定值确认发送失败!RtuNo:%d 找不到点PointNo:%d" +msgstr "" +"IEC103 partial setpoint does not exist, failed to send read setpoint " +"confirmation! RTU No: %d cannot find point PointNo: %d" + +#: protocol/iec103/IEC103DataProcThread.cpp:1278 +#, c-format +msgid "IEC103 定值组没有,修改定值组发送失败!RtuNo:%d 找不到点" +msgstr "" +"IEC103 setpoint group does not exist, failed to send modification of " +"setpoint group! RTU No: %d cannot find the point" + +#: protocol/iec103/IEC103DataProcThread.cpp:2480 +#, fuzzy, c-format +#| msgid "KBD104 定值读取成功!RtuNo:%d" +msgid "iec103 定值读取成功!RtuNo:%d" +msgstr "KBD104 Read const success! RtuNo:%d" + +#: protocol/iec103/IEC103DataProcThread.cpp:2499 +#, c-format +msgid "iec103 没有找到读取定值的点号!RtuNo:%d" +msgstr "" +"IEC103 could not find the point number for reading setpoint! RTU No: %d" + +#: protocol/iec103/IEC103DataProcThread.cpp:2561 +#, fuzzy, c-format +#| msgid "KBD104 定值修改成功!RtuNo:%d" +msgid "IEC103 定值修改确认成功!RtuNo:%d" +msgstr "KBD104 Modify const success! RtuNo:%d" + +#: protocol/iec103/IEC103DataProcThread.cpp:2597 +#, fuzzy, c-format +#| msgid "KBD104 定值修改失败!RtuNo:%d" +msgid "IEC103 定值修改确认失败!RtuNo:%d" +msgstr "KBD104 Modify const failed! RtuNo:%d" + +#: protocol/iec103/IEC103DataProcThread.cpp:2654 +#, fuzzy, c-format +#| msgid "KBD104 定值修改成功!RtuNo:%d" +msgid "IEC103 定值组修改成功!RtuNo:%d" +msgstr "KBD104 Modify const success! RtuNo:%d" + +#: protocol/iec103/IEC103DataProcThread.cpp:2687 +#, fuzzy, c-format +#| msgid "KBD104 定值修改失败!RtuNo:%d" +msgid "IEC103 定值组修改失败!RtuNo:%d" +msgstr "KBD104 Modify const failed! RtuNo:%d" + +#: protocol/iec103/IEC103DataProcThread.cpp:3162 +#, fuzzy, c-format +#| msgid "IEC104 遥控成功!RtuNo:%d 遥控点:%d" +msgid "IEC103 遥控成功!RtuNo:%d 遥控点:%d" +msgstr "IEC104 Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/iec104/IEC104DataProcThread.cpp:3712 +#, c-format +msgid "IEC104 遥控失败!RtuNo:%d 通信中断" +msgstr "IEC104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/iec104/IEC104DataProcThread.cpp:3730 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 通信中断" +msgid "IEC104 遥控失败! RtuNo:%d DO:%d 闭锁!" +msgstr "IEC104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/iec104/IEC104DataProcThread.cpp:3831 +#, c-format +msgid "IEC104 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgstr "" +"IEC104 Remote control failed! RtuNo:%d cannot find remote control point: %d" + +#: protocol/iec104/IEC104DataProcThread.cpp:3882 +#: protocol/iec104/IEC104DataProcThread.cpp:4094 +#: protocol/iec104/IEC104DataProcThread.cpp:4293 +#, c-format +msgid "IEC104 遥调失败!RtuNo:%d 通信中断" +msgstr "IEC104 Remote adjustment failed! RtuNo:%d communication interrupt" + +#: protocol/iec104/IEC104DataProcThread.cpp:3917 +#: protocol/iec104/IEC104DataProcThread.cpp:4153 +#: protocol/iec104/IEC104DataProcThread.cpp:4330 +#, c-format +msgid "IEC104 遥调失败!RtuNo:%d 遥调点:%d 范围超出" +msgstr "" +"IEC104 Remote adjustment failed! RtuNo:%d Remote adjustment point: %d out of " +"range" + +#: protocol/iec104/IEC104DataProcThread.cpp:4034 +#: protocol/iec104/IEC104DataProcThread.cpp:4235 +#: protocol/iec104/IEC104DataProcThread.cpp:4445 +#, c-format +msgid "IEC104 遥调失败!RtuNo:%d 找不到遥调点:%d" +msgstr "" +"IEC104 Remote adjustment failed! RtuNo:%d cannot find remote adjustment " +"point: %d" + +#: protocol/iec104/IEC104DataProcThread.cpp:4188 +#, c-format +msgid "IEC104 遥调成功!RtuNo:%d value=%f" +msgstr "IEC104 Remote adjustment success! RtuNo:%d value=%f" + +#: protocol/iec104/IEC104DataProcThread.cpp:4195 +#, c-format +msgid "IEC104 遥调成功!RtuNo:%d value=%d" +msgstr "IEC104 Remote adjustment success! RtuNo:%d value=%d" + +#: protocol/iec104/IEC104DataProcThread.cpp:4482 +#, c-format +msgid "IEC104 遥控成功!RtuNo:%d 遥控点:%d" +msgstr "IEC104 Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3297 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 通信中断" +msgid "IEC104V2 遥控失败!RtuNo:%d 通信中断" +msgstr "IEC104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3315 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 通信中断" +msgid "IEC104V2 遥控失败! RtuNo:%d DO:%d 闭锁!" +msgstr "IEC104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3416 +#, fuzzy, c-format +#| msgid "IEC104 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgid "IEC104V2 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgstr "" +"IEC104 Remote control failed! RtuNo:%d cannot find remote control point: %d" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3469 +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3683 +#, fuzzy, c-format +#| msgid "IEC104 遥调失败!RtuNo:%d 通信中断" +msgid "IEC104V2 遥调失败!RtuNo:%d 通信中断" +msgstr "IEC104 Remote adjustment failed! RtuNo:%d communication interrupt" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3504 +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3742 +#, fuzzy, c-format +#| msgid "IEC104 遥调失败!RtuNo:%d 遥调点:%d 范围超出" +msgid "IEC104V2 遥调失败!RtuNo:%d 遥调点:%d 范围超出" +msgstr "" +"IEC104 Remote adjustment failed! RtuNo:%d Remote adjustment point: %d out of " +"range" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3621 +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3824 +#, fuzzy, c-format +#| msgid "IEC104 遥调失败!RtuNo:%d 找不到遥调点:%d" +msgid "IEC104V2 遥调失败!RtuNo:%d 找不到遥调点:%d" +msgstr "" +"IEC104 Remote adjustment failed! RtuNo:%d cannot find remote adjustment " +"point: %d" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3777 +#, fuzzy, c-format +#| msgid "IEC104 遥调成功!RtuNo:%d value=%f" +msgid "IEC104V2 遥调成功!RtuNo:%d value=%f" +msgstr "IEC104 Remote adjustment success! RtuNo:%d value=%f" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3784 +#, fuzzy, c-format +#| msgid "IEC104 遥调成功!RtuNo:%d value=%d" +msgid "IEC104V2 遥调成功!RtuNo:%d value=%d" +msgstr "IEC104 Remote adjustment success! RtuNo:%d value=%d" + +#: protocol/iec104V2/IEC104V2DataProcThread.cpp:3869 +#, fuzzy, c-format +#| msgid "IEC104 遥控成功!RtuNo:%d 遥控点:%d" +msgid "IEC104V2 遥控成功!RtuNo:%d 遥控点:%d" +msgstr "IEC104 Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:787 +#, fuzzy +#| msgid "遥控失败!RtuNo:%d 找不到遥控点:%d" +msgid "遥控失败!找不到遥控点控制参数" +msgstr "Remote control failed! RtuNo:%d cannot find remote control point:%d" + +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:902 +#, fuzzy +#| msgid "下发YK 撤销命令成功 %s 值%d" +msgid "下发遥控撤销命令,设备返回成功" +msgstr "Successful in send YK revocation command %s value %d" + +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:908 +#, fuzzy +#| msgid "下发YK 撤销命令失败 %s 值%d" +msgid "下发遥控撤销命令,设备返回失败" +msgstr "Failed to send YK revocation command %s value %d" + +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:995 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1171 +#, fuzzy +#| msgid "遥调失败!RtuNo:%d 遥调点:%d 系数为0" +msgid "遥调失败!测点系数为0" +msgstr "" +"Remote adjustment failed! RtuNo:%d Remote adjustment point:%d Coefficient is " +"0" + +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1017 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1193 +msgid "遥调失败!设置值超出量程" +msgstr "Remote adjustment failed! The set value is out of range." + +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1028 +#: protocol/iec61850_clientV3/IEC61850DataProcThread.cpp:1204 +#, fuzzy +#| msgid "遥调失败!RtuNo:%d 找不到遥调点:%d" +msgid "遥调失败!找不到遥调点控制参数" +msgstr "" +"Remote adjustment failed! RtuNo:%d cannot find remote adjustment point: %d" + +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1479 +#, fuzzy, c-format +#| msgid "" +#| "下发遥调命令,设备返回成功 RtuNo:%d 遥调点:%d 下发值:%.2f 接收命令值:%.2f" +msgid "下发遥调命令,设备返回成功 RtuNo:%d 遥调点:%d 下发值:%d" +msgstr "" +"Issued remote adjustment command, device returned successfully, RtuNo: %d, " +"Adjustment Point: %d, Sent Value: %.2f, Received Command Value: %.2f" + +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1485 +#, fuzzy, c-format +#| msgid "" +#| "下发遥调命令,设备返回失败 RtuNo:%d 遥调点:%d 下发值:%.2f 接收命令值:%.2f " +#| "返回状态:%d" +msgid "下发遥调命令,设备返回失败 RtuNo:%d 遥调点:%d 下发值:%d 返回状态:%d" +msgstr "" +"Issue remote adjustment command failed, RtuNo: %d, Adjustment Point: %d, " +"Sent Value: %.2f, Received Command Value: %.2f, Return Status: %d" + +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1492 +#, fuzzy, c-format +#| msgid "" +#| "下发遥调命令,设备返回失败 RtuNo:%d 遥调点:%d 下发值:%f 接收命令值:%f" +msgid "下发遥调命令,设备返回失败 RtuNo:%d 遥调点:%d 下发值:%d" +msgstr "" +"Issued remote adjustment command failed, RtuNo: %d, Adjustment Point: %d, " +"Sent Value: %f, Received Command Value: %f" + +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1498 +msgid "下发遥调命令失败,数据类型错误" +msgstr "" + +#: protocol/iec61850client2/IEC61850cDataProcThread.cpp:1499 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "下发遥调命令失败 RtuNo:%d 遥调点:%d 下发值:%d" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/kbd104/KBD104DataProcThread.cpp:2191 +#, c-format +msgid "KBD104 遥控失败!RtuNo:%d 通信中断" +msgstr "KBD104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/kbd104/KBD104DataProcThread.cpp:2211 +#, fuzzy, c-format +#| msgid "KBD104 遥控失败!RtuNo:%d 通信中断" +msgid "KBD104 遥控失败! RtuNo:%d DO:%d 闭锁!" +msgstr "KBD104 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/kbd104/KBD104DataProcThread.cpp:2276 +#, c-format +msgid "KBD104 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgstr "" +"KBD104 Remote control failed! RtuNo:%d cannot find remote control point: %d" + +#: protocol/kbd104/KBD104DataProcThread.cpp:2330 +#, c-format +msgid "KBD104 遥调失败!RtuNo:%d 通信中断" +msgstr "KBD104 Remote adjustment failed! RtuNo:%d communication interrupt" + +#: protocol/kbd104/KBD104DataProcThread.cpp:2366 +#, c-format +msgid "KBD104 遥调失败!RtuNo:%d 遥调点:%d 范围超出" +msgstr "" +"KBD104 Remote adjustment failed! RtuNo:%d Remote adjustment point: %d out of " +"range" + +#: protocol/kbd104/KBD104DataProcThread.cpp:2446 +#, c-format +msgid "KBD104 遥调失败!RtuNo:%d 找不到遥调点" +msgstr "" +"KBD104 Remote adjustment failed! RtuNo:%d cannot find remote adjustment point" + +#: protocol/kbd104/KBD104DataProcThread.cpp:2526 +#, c-format +msgid "遥调成功!RtuNo:%d 遥控点:%d" +msgstr "Remote adjustment success! RtuNo:%d Remote control point: %d" + +#: protocol/kbd104/KBD104DataProcThread.cpp:2533 +#, c-format +msgid "遥调失败!RtuNo:%d 遥控点:%d" +msgstr "Remote adjustment failed! RtuNo:%d Remote control point: %d" + +#: protocol/kbd104/KBD104DataProcThread.cpp:3532 +#: protocol/kbd104/KBD104DataProcThread.cpp:3626 +#: protocol/kbd104/KBD104DataProcThread.cpp:3720 +#: protocol/kbd104/KBD104DataProcThread.cpp:3815 +#: protocol/kbd104/KBD104DataProcThread.cpp:3897 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:4149 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:4154 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:4159 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:4209 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:4220 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:4225 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:4230 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:4474 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:5230 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:5235 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:5240 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:5318 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:5323 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:5328 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:2105 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:2924 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:2929 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:2934 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:2994 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:2999 +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:3004 +#, c-format +msgid "RtuNo:%d %s" +msgstr "RtuNo:%d %s" + +#: protocol/kbd104/KBD104DataProcThread.cpp:3537 +#, c-format +msgid "KBD104 定值读取失败!RtuNo:%d" +msgstr "KBD104 Read const failed! RtuNo:%d" + +#: protocol/kbd104/KBD104DataProcThread.cpp:3631 +#, c-format +msgid "KBD104 定值读取成功!RtuNo:%d" +msgstr "KBD104 Read const success! RtuNo:%d" + +#: protocol/kbd104/KBD104DataProcThread.cpp:3725 +#, c-format +msgid "KBD104 定值修改失败!RtuNo:%d" +msgstr "KBD104 Modify const failed! RtuNo:%d" + +#: protocol/kbd104/KBD104DataProcThread.cpp:3820 +#, c-format +msgid "KBD104 定值修改成功!RtuNo:%d" +msgstr "KBD104 Modify const success! RtuNo:%d" + +#: protocol/kbd104/KBD104DataProcThread.cpp:3902 +#, c-format +msgid "KBD104 确认修改定值!RtuNo:%d rtuStatus:%d" +msgstr "KBD104 Confirm to modify the const! RtuNo:%d rtuStatus:%d" + +#: protocol/kbd61850m/IEC61850_DecodeResPkt.cpp:1092 +msgid "写值不成功!" +msgstr "Write value failure!" + +#: protocol/kbd61850m/IEC61850_DecodeResPkt.cpp:1135 +msgid "写值成功!" +msgstr "Write value success!" + +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:407 +#, c-format +msgid "建立双边关联失败%s" +msgstr "Failed to establish bilateral connection%s" + +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1541 +#, c-format +msgid "Ping %s...成功\n" +msgstr "Ping %s...successful\n" + +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1551 +#, c-format +msgid "Ping %s失败,下次重试\n" +msgstr "Ping %s failed,try again next time\n" + +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1671 +#, c-format +msgid "connect %s...成功!" +msgstr "connect %s...successful!" + +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1680 +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1694 +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1708 +#, c-format +msgid "connect %s...失败!" +msgstr "connect %s...failed!" + +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1735 +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1775 +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1812 +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1827 +msgid "建立传输层连接失败!" +msgstr "Failed to establish transport layer connection!" + +#: protocol/kbd61850m/IEC61850_FormReqCmd.cpp:1803 +msgid "建立传输层连接成功!" +msgstr "Establish transport layer connection successfully!" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:358 +#, c-format +msgid "收到总召KWH成功 %s" +msgstr "Received total call KWH success %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:380 +#, c-format +msgid "长时间没有召完树,通道:%d 退出" +msgstr "Long time not call tree finish,channel: %d exit" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:393 +#, c-format +msgid "通讯中断[%d%]" +msgstr "Communication Interrupt[%d%]" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:418 +#, c-format +msgid "server个数%d,已连接%d,本通道%s.. %s %s NoUpdateTime=%d" +msgstr "server number %d,connected %d,this channel %s.. %s %s NoUpdateTime=%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:429 +#, c-format +msgid "通道%s 通信中断,断开连接,重新建立连接" +msgstr "Channel %s communication interrupt, disconnect, reconnect" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:450 +#, c-format +msgid "通道%s 接收超时,断开连接,重新建立连接" +msgstr "Channel %s receive timeout, disconnect, reconnect" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:603 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:4079 +#, c-format +msgid "报告非使能%s:%s" +msgstr "Report no enable%s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:639 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:652 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:4115 +#, c-format +msgid "设置总召时间%s:%ld毫秒,%s" +msgstr "Set total call time%s:%ldms,%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:662 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:4126 +#, c-format +msgid "报告使能%s:%s" +msgstr "Report enable%s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:707 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:729 +#, c-format +msgid "设置TrgOp%s:%s" +msgstr "Set TrgOp%s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:767 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:793 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:818 +#, c-format +msgid "设置OptFlds%s:%s" +msgstr "Set OptFlds%s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:845 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:856 +#, c-format +msgid "读取EntryID%s:%s" +msgstr "Read EntryID%s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:864 +#, c-format +msgid "设置EntryID%s:%s" +msgstr "Set EntryID%s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:899 +msgid "PING 套接字错误" +msgstr "PING socket error" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:909 +msgid "连接服务器 开" +msgstr "Connect to server open" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:915 +#, c-format +msgid "连接服务器%s,%s,返回%d" +msgstr "Connect to server %s , %s,return %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:932 +msgid "网络不通,退出服务器" +msgstr "No network, log out of server" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:941 +msgid "网络可能断开" +msgstr "Network may be disconnected" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:960 +msgid "网络不通" +msgstr "No network" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:984 +#, c-format +msgid " 通道%d,ExitServer() ret:%d" +msgstr "Channel %d,ExitServer() ret:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:1551 +#, c-format +msgid "没有找到RTU名 %s" +msgstr "Cannot find RTU name %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:1562 +#, c-format +msgid "通道%d,RTU%d 没有配置数据集合:%s" +msgstr "Channel %d,RTU %d no dataset configure : %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:1597 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:4331 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:4615 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:4935 +msgid "上传数据路径为空" +msgstr "The upload data path is empty" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2240 +#, c-format +msgid "总召数据集%s:%s" +msgstr "Total call dataset %s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2297 +#, c-format +msgid "录波:命令[读目录]%s[返回%d]" +msgstr "Wave recording:command[Read Directory]%s[Return %d]" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2361 +#, c-format +msgid "录波:状态[目录]%s,文件个数%d" +msgstr "Wave recording:status[Directory]%s,number of file %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2428 +#, c-format +msgid "录波:命令[下载]%d,文件名%s" +msgstr "Wave recording:command[Download]%d,file name %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2449 +#, c-format +msgid "录波:所有的文件已经下载完成。错误个数%d" +msgstr "Wave recording:all files have been downloaded. Error number %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2521 +#, c-format +msgid "录波:状态[下载]%s,文件名%s" +msgstr "Wave recording:status[Download]%s,file name %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2585 +#, c-format +msgid "录波:新增%s" +msgstr "Wave recording:new %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2684 +#, c-format +msgid "通道所有发送后数据后%ds没有收到数据,退出服务器" +msgstr "" +"After send all data in channel,no data received within %ds,log out of server" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2776 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2790 +msgid "选择成功" +msgstr "Selection success" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2781 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2795 +#, c-format +msgid "选择命令成功 %s 值%d" +msgstr "Selection command success %s value %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2809 +#, c-format +msgid "下发YK 选择命令成功 %s 值%d" +msgstr "Successful in send YK selection command %s value %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2813 +#, c-format +msgid "下发YK 选择命令失败 %s 值%d" +msgstr "Failed to send YK selection command %s value %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2835 +#, c-format +msgid "修改定值组号%s 找不到遥控点遥控失败,RTU:%d,YK:%d cmd:%d" +msgstr "" +"Modify the const group number %s ,cannot find remote control point,remote " +"control failed,RTU:%d,YK:%d cmd:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2848 +#, c-format +msgid "修改定值组号%s:%s %s" +msgstr "Modify the const group number %s:%s %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2855 +msgid "修改定值组号失败!...1" +msgstr "Failed to modify the const group number!...1" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2856 +#, c-format +msgid "修改定值组号%s 失败..1,RTU:%d,YK:%d groupno:%d" +msgstr "Failed to modify the const group number %s..1,RTU:%d,YK:%d groupno:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2866 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3420 +#, c-format +msgid "确认激活定值组%s:%s %s" +msgstr "Confirm to active the const group %s:%s %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2874 +msgid "修改定值组号失败!...2" +msgstr "Failed to modify the const group number!...2" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2875 +#, c-format +msgid "修改定值组号%s 失败...2,RTU:%d,YK:%d groupno:%d" +msgstr "Failed to modify the const group number %s...2,RTU:%d,YK:%d groupno:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2887 +msgid "修改定值组号成功!" +msgstr "Modify const group number successfully!" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2888 +#, c-format +msgid "修改定值组号%s 成功...2,RTU:%d,YK:%d groupno:%d" +msgstr "Modify const group number %s successfully...2,RTU:%d,YK:%d groupno:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2909 +#, c-format +msgid "下发YK 执行命令成功 %s 值%d" +msgstr "Successful in send YK execution command %s value %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2913 +#, c-format +msgid "下发YK 执行命令失败 %s 值%d" +msgstr "Failed to send YK execution command %s value %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2924 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2937 +msgid "撤销成功" +msgstr "Revocation success" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2929 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2942 +#, c-format +msgid "撤销成功 %s 值%d" +msgstr "Revocation success %s value %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2955 +#, c-format +msgid "下发YK 撤销命令成功 %s 值%d" +msgstr "Successful in send YK revocation command %s value %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2959 +#, c-format +msgid "下发YK 撤销命令失败 %s 值%d" +msgstr "Failed to send YK revocation command %s value %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:2981 +#, c-format +msgid "找不到遥控点遥控失败,RTU:%d,YK:%d cmd:%d" +msgstr "" +"Cannot find remote control point,remote control failed,RTU:%d,YK:%d cmd:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3023 +#, c-format +msgid "遥控返回 retCmd.CtrlDir=%d RtuNo=%d PointID=%d" +msgstr "Return of remote control retCmd.CtrlDir=%d RtuNo=%d PointID=%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3030 +msgid "设备返回撤销成功" +msgstr "Device return revocation success" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3031 +#, c-format +msgid "设备返回撤销成功!RtuNo:%d 遥控点:%d" +msgstr "Device return revocation success! RtuNo:%d Remote control point: %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3036 +msgid "设备返回撤销失败" +msgstr "Device return revocation failed" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3037 +#, c-format +msgid "设备返回撤销失败!RtuNo:%d 遥控点:%d" +msgstr "Device return revocation failed! RtuNo:%d Remote control point: %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3056 +msgid "设备返回执行成功" +msgstr "Device return execution success" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3057 +#, c-format +msgid "设备返回执行成功!RtuNo:%d 遥控点:%d" +msgstr "Device return execution success! RtuNo:%d Remote control point: %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3093 +#, c-format +msgid "RtuNo:%d 遥控点:%d 添加脉冲遥控事件" +msgstr "RTU No: %d Remote control point: %d Added pulse remote control event" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3102 +msgid "设备返回执行失败" +msgstr "Device return execution failed" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3103 +#, c-format +msgid "设备返回执行失败!RtuNo:%d 遥控点:%d" +msgstr "Device return execution failed! RtuNo:%d Remote control point: %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3121 +msgid "设备返回选择成功" +msgstr "Device return selection success" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3122 +#, c-format +msgid "设备返回选择成功!RtuNo:%d 遥控点:%d" +msgstr "Device return selection success! RtuNo:%d Remote control point: %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3127 +msgid "设备返回选择失败" +msgstr "Device return selection failed" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3128 +#, c-format +msgid "设备返回选择失败!RtuNo:%d 遥控点:%d" +msgstr "Device return selection failed! RtuNo:%d Remote control point: %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3190 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3193 +#, c-format +msgid "KBD61850 定值控制失败!RtuNo:%d 找不到对应的DS" +msgstr "" +"KBD61850 Const control failed! RtuNo:%d cannot find the corresponding DS" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3210 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3213 +#, c-format +msgid "KBD61850 定值控制失败!RtuNo:%d 通信中断" +msgstr "KBD61850 Const control failed! RtuNo:%d communication interrupt" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3400 +#, c-format +msgid "修改定值组%s:%s %s" +msgstr "Modify the const %s:%s %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3414 +msgid "修改定值组失败" +msgstr "Modify the const failed" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3435 +msgid "确认激活定值组失败" +msgstr "Confirm to active the const group failed" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3450 +msgid "激活定值组成功" +msgstr "Active the const group successfully" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3579 +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3864 +#, c-format +msgid "KBD61850 定值读取成功!RtuNo:%d" +msgstr "KBD61850 Read const success! RtuNo:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3580 +#, c-format +msgid "KBD61850 定值读取成功!RtuNo:%d Num=%d" +msgstr "KBD61850 Read const success! RtuNo:%d Num=%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3589 +#, c-format +msgid "读定值%s:%s" +msgstr "Read const %s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3605 +#, fuzzy, c-format +#| msgid "开始写定值 组号%s:%s %s" +msgid "开始改变定值 组号%s:%s %s" +msgstr "Start writing const,group number %s:%s %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3609 +#, c-format +msgid "开始写定值 组号%s:%s %s" +msgstr "Start writing const,group number %s:%s %s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3634 +#, c-format +msgid "定值写值错误:定值%d" +msgstr "Error writing const: const %d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3649 +#, c-format +msgid "改变定值%s(%s):%s" +msgstr "Change the const %s(%s):%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3659 +#, c-format +msgid "修改定值%s:%s" +msgstr "Modify the const %s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3696 +#, c-format +msgid "确认改变定值%s:%s" +msgstr "Confirm to change the const %s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3700 +#, c-format +msgid "确认修改定值%s:%s" +msgstr "Confirm to modify the const %s:%s" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3776 +msgid "定值操作错误:不能找到定值" +msgstr "Const operation error:cannot find const" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3919 +#, c-format +msgid "定值修改成功! RtuNo:%d" +msgstr "Modify const success! RtuNo:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:3925 +#, c-format +msgid "定值修改失败!RtuNo:%d" +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/kbd61850m/KBD61850mDataProcThread.cpp:4179 +#, c-format +msgid "YK 脉冲%s:%s,值%d" +msgstr "YK pulse %s:%s, value %d" + +#: protocol/kbd61850m/KBD_DLL.cpp:47 +#, c-format +msgid "AbortCallback() %s异常中止,退出服务器" +msgstr "AbortCallback() %s abort, log out of sever" + +#: protocol/kbd61850m/KBD_DLL.cpp:64 protocol/kbd61850m/KBD_DLL.cpp:127 +#: protocol/kbd61850m/KBD_DLL.cpp:191 protocol/kbd61850m/KBD_DLL.cpp:226 +#, c-format +msgid "没有找到服务器名 %s" +msgstr "Not found the name of server %s" + +#: protocol/kbd61850m/KBD_DLL.cpp:132 +#, c-format +msgid "通道%d,YK返回:%s,%d,%d,%d,%d,%d" +msgstr "Channel %d, YK return:%s,%d,%d,%d,%d,%d" + +#: protocol/kbd61850m/KBD_DLL.cpp:196 +#, c-format +msgid "通道%d,定值 %s返回:%s" +msgstr "Channel %d, const %s return : %s" + +#: protocol/khbas/KhbasDataProcThread.cpp:709 +#: protocol/modbus_c30/ModbusRtuC30DataProcThread.cpp:647 +#: protocol/modbus_micomP/ModbusMicomPDataProcThread.cpp:3845 +#: protocol/modbus_pm/ModbusRtuPmDataProcThread.cpp:832 +#: protocol/modbus_rtu/ModbusRtuDataProcThread.cpp:618 +#: protocol/modbus_rtuV2/ModbusRtuV2DataProcThread.cpp:655 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:960 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:755 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:802 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:751 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:868 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:656 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:785 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:651 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1443 +#: protocol/snmp/snmpDataProcThread.cpp:656 +msgid "遥调失败,量程配置错误,最大量程<=最小量程!" +msgstr "" +"Remote adjustment failed! Range configuration error, maximum range <= " +"minimum range!" + +#: protocol/khbas/KhbasDataProcThread.cpp:889 +#: protocol/khbas/KhbasDataProcThread.cpp:974 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:949 +#: protocol/modbus_tcp/ModbusDataProcThread.cpp:1014 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:996 +#: protocol/modbus_tcpV2/ModbusTcpV2DataProcThread.cpp:1061 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:945 +#: protocol/modbus_tcpV3/ModbusTcpV3DataProcThread.cpp:1010 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:1028 +#: protocol/modbus_tcp_epm9200/ModbusTcpEpm9200DataProcThread.cpp:1093 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:816 +#: protocol/modbus_tcp_fpd/ModbusDataProcThread.cpp:881 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:1033 +#: protocol/modbus_tcp_mz/ModbusTcpMZDataProcThread.cpp:1098 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:811 +#: protocol/modbus_tcp_vamp/ModbusTcpVampDataProcThread.cpp:876 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1601 +#: protocol/opcclient/OpcClientDataProcThread.cpp:1665 +#, c-format +msgid "混合量输出失败!RtuNo:%d 找不到混合量输出点:%d" +msgstr "The output of mix is failed! RtuNo:%d cannot find mix output point: %d" + +#: protocol/khbas/KhbasDataProcThread.cpp:1091 +#, fuzzy, c-format +#| msgid "自定义命令输出成功!RtuNo:%d " +msgid "自定义命令个数不正确!RtuNo:%d " +msgstr "The custom command output was successful! RtuNo:%d" + +#: protocol/khbas/KhbasDataProcThread.cpp:1161 +#, fuzzy, c-format +#| msgid "自定义命令输出成功!RtuNo:%d " +msgid "自定义命令格式不正确!RtuNo:%d " +msgstr "The custom command output was successful! RtuNo:%d" + +#: protocol/khbas/KhbasDataProcThread.cpp:2516 +#: protocol/khbas/KhbasDataProcThread.cpp:2746 +#, c-format +msgid "发送时间表成功!RtuNo:%d " +msgstr "Successfully sent the schedule! RTU No: %d" + +#: protocol/khbas/KhbasDataProcThread.cpp:2531 +#: protocol/khbas/KhbasDataProcThread.cpp:2538 +#: protocol/khbas/KhbasDataProcThread.cpp:2752 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "发送时间表失败!RtuNo:%d " +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/khbas/KhbasDataProcThread.cpp:2785 +#: protocol/khbas/KhbasDataProcThread.cpp:2844 +#, fuzzy, c-format +#| msgid "KBD104 定值读取成功!RtuNo:%d" +msgid "读取时间表成功!RtuNo:%d " +msgstr "KBD104 Read const success! RtuNo:%d" + +#: protocol/khbas/KhbasDataProcThread.cpp:2850 +#, fuzzy, c-format +#| msgid "KBD104 定值读取失败!RtuNo:%d" +msgid "读取时间表失败!RtuNo:%d " +msgstr "KBD104 Read const failed! RtuNo:%d" + +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:522 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控失败,设备禁止设置! RtuNo:%d 遥控点:%d 当前点值无法读取" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:550 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:638 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:682 +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:703 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控失败!RtuNo:%d 遥控点:%d 当前点值无法读取" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/modbus_rtu_dt/ModbusRtuDTDataProcThread.cpp:718 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控成功!RtuNo:%d 遥控点:%d " +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:1728 +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:157 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控放弃成功!RtuNo:%d 遥控点:%d" +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:1973 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "读取定值失败!RtuNo:%d " +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/modbus_sepam/ModbusRtuSepamDataProcThread.cpp:1981 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "修改定值失败!RtuNo:%d " +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:210 +#, c-format +msgid "OPC服务器%s %s连接成功!" +msgstr "OPC server %s %s connected successfully!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:218 +#, c-format +msgid "OPC服务器%s %s添加组成功!" +msgstr "OPC server %s successfully added group %s!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:241 +#, c-format +msgid "OPC服务器%s %s添加组失败!" +msgstr "Failed to add group to OPC server %s: %s!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:249 +#, c-format +msgid "OPC服务器%s %s连接失败!" +msgstr "Connection to OPC server %s failed: %s!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:270 +#, c-format +msgid "OPC服务器%s %s通讯中断!" +msgstr "Communication with OPC server %s was interrupted: %s!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:279 +#, c-format +msgid "OPC服务器%s %s通讯正常!" +msgstr "Communication with OPC server %s is normal: %s." + +#: protocol/opcclient/OpcClientDataProcThread.cpp:526 +#, c-format +msgid "RTU%d PointNo%d 遥测点未配置OPC标签名,请配置61850路径!" +msgstr "" +"RTU%d PointNo%d telemetry point is not configured with an OPC tag name, " +"please configure the IEC 61850 path!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:545 +#, c-format +msgid "RTU%d PointNo%d 遥测点未配置OPC标签名,请检查61850路径配置!" +msgstr "" +"RTU%d PointNo%d telemetry point is not configured with an OPC tag name, " +"please check the IEC 61850 path configuration!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:554 +#, c-format +msgid "RTU%d PointNo%d 遥信点未配置OPC标签名,请配置61850路径!" +msgstr "" +"RTU%d PointNo%d remote input point is not configured with an OPC tag name, " +"please configure the IEC 61850 path!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:573 +#, c-format +msgid "RTU%d PointNo%d 遥信未配置OPC标签名,请检查61850路径配置!" +msgstr "" +"RTU%d PointNo%d remote input is not configured with an OPC tag name, please " +"check the IEC 61850 path configuration!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:582 +#, c-format +msgid "RTU%d PointNo%d 电度点未配置OPC标签名,请配置61850路径!" +msgstr "" +"RTU%d PointNo%d energy metering point is not configured with an OPC tag " +"name, please configure the IEC 61850 path!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:601 +#, c-format +msgid "RTU%d PointNo%d 电度点未配置OPC标签名,请检查61850路径配置!" +msgstr "" +"RTU%d PointNo%d energy metering point is not configured with an OPC tag " +"name, please check the IEC 61850 path configuration!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:610 +#, c-format +msgid "RTU%d PointNo%d 数字量控制点未配置OPC标签名,请配置61850路径!" +msgstr "" +"RTU%d PointNo%d digital control point is not configured with an OPC tag " +"name, please configure the IEC 61850 path!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:629 +#, c-format +msgid "RTU%d PointNo%d 数字量控制点未配置OPC标签名,请检查61850路径配置!" +msgstr "" +"RTU%d PointNo%d digital control point is not configured with an OPC tag " +"name, please check the IEC 61850 path configuration!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:638 +#, c-format +msgid "RTU%d PointNo%d 模拟量控制点未配置OPC标签名,请配置61850路径!" +msgstr "" +"RTU%d PointNo%d analog control point is not configured with an OPC tag name, " +"please configure the IEC 61850 path!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:657 +#, c-format +msgid "RTU%d PointNo%d 模拟量控制点未配置OPC标签名,请检查61850路径配置!" +msgstr "" +"RTU%d PointNo%d analog control point is not configured with an OPC tag name, " +"please check the IEC 61850 path configuration!" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:1124 +#, c-format +msgid "更新YC opc通道%d,RTU%d,YcNo%d,fVal=%f" +msgstr "Update YC opc channel %d, RTU%d, YcNo%d, value=%f" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:1155 +#, c-format +msgid "YX变化 opc通道%d,RTU%d,YxNo%d,YxVal=%d,%d:%d:%d.%d" +msgstr "YX change opc channel %d, RTU%d, YxNo%d, YxVal=%d, time %d:%d:%d.%d" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:1185 +#, c-format +msgid "更新YX opc通道%d,RTU%d,YxNo%d,YxVal=%d,%d:%d:%d.%d" +msgstr "Update YX opc channel %d, RTU%d, YxNo%d, YxVal=%d, time %d:%d:%d.%d" + +#: protocol/opcclient/OpcClientDataProcThread.cpp:1206 +#, c-format +msgid "更新Kwh opc通道%d,RTU%d,KwhNo%d,fval=%f" +msgstr "Update Kwh opc channel %d, RTU%d, KwhNo%d, value=%f" + +#: protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1012 +#, c-format +msgid "SIEMENS103 遥控失败!RtuNo:%d 通信中断" +msgstr "SIEMENS103 Remote control failed! RtuNo:%d communication interrupt" + +#: protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1085 +#, c-format +msgid "SIEMENS103 遥控失败!RtuNo:%d 找不到遥控点:%d" +msgstr "" +"SIEMENS103 Remote control failed! RtuNo:%d cannot find remote control point: " +"%d" + +#: protocol/siemens103_tcp/SIEMENS103DataProcThread.cpp:1119 +#, c-format +msgid "SIEMENS103 遥控成功!RtuNo:%d 遥控点:%d" +msgstr "SIEMENS103 Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:388 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控成功!RtuNo:%d 遥控点:%d 遥控值:%d" +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:404 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控失败!RtuNo:%d 遥控点:%d 遥控值:%d 提示:需重发" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:409 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控失败!RtuNo:%d 遥控点:%d 遥控值:%d 提示:拒绝" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:414 +#, fuzzy, c-format +#| msgid "遥控失败!RtuNo:%d 遥控点:%d" +msgid "遥控失败!RtuNo:%d 遥控点:%d 遥控值:%d 提示:错误" +msgstr "Remote control failed! RtuNo:%d Remote control point: %d" + +#: protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:1256 +#, c-format +msgid "应用层状态不对,暂不执行遥控操作!RtuNo:%d 遥控点:%d 闭锁" +msgstr "" +"The application layer state is incorrect, remote control operation is " +"temporarily not executed! RTU No: %d Remote control point: %d Locked" + +#: protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:1309 +#, fuzzy, c-format +#| msgid "遥控成功!RtuNo:%d 遥控点:%d" +msgid "遥控命令发送成功!RtuNo:%d 遥控点:%d " +msgstr "Remote control success! RtuNo:%d Remote control point: %d" + +#: protocol/szdt_robot/SZDT_RobotDataProcThread.cpp:1323 +#, fuzzy, c-format +#| msgid "定值修改失败!RtuNo:%d" +msgid "未知原因,遥控失败!RtuNo:%d" +msgstr "Modify const failed! RtuNo:%d" + +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:240 +#, fuzzy, c-format +#| msgid "遥调成功!RtuNo:%d 遥调点:%d" +msgid "遥调成功!RtuNo:%d 遥调点:%d " +msgstr "Remote adjustment success! RtuNo:%d Remote adjustment point: %d" + +#: protocol/virtualrtu/virtualrtuDataProcThread.cpp:241 +#, fuzzy, c-format +#| msgid "遥调成功!RtuNo:%d 遥调点:%d" +msgid "遥调成功 RtuNo:%d 遥调点:%d 下发值:%f 接收命令值:%f" +msgstr "Remote adjustment success! RtuNo:%d Remote adjustment point: %d" + +#, fuzzy, c-format +#~| msgid "IEC104 遥控失败!RtuNo:%d 通信中断" +#~ msgid "CenterDataRecv 遥控失败!RtuNo:%d 通信中断" +#~ msgstr "IEC104 Remote control failed! RtuNo:%d communication interrupt" + +#, c-format +#~ msgid "CenterDataRecv 遥控失败! RtuNo:%d DO:%d 闭锁!" +#~ msgstr "CenterDataRecv remote control failed! RTU No: %d DO: %d Locked!" + +#, fuzzy, c-format +#~| msgid "遥控失败!RtuNo:%d 找不到遥控点:%d" +#~ msgid "CenterDataRecv 遥控失败!RtuNo:%d 找不到遥控点:%d" +#~ msgstr "Remote control failed! RtuNo:%d cannot find remote control point:%d" + +#, fuzzy, c-format +#~| msgid "IEC104 遥控失败!RtuNo:%d 通信中断" +#~ msgid "CenterDataRecv 模拟量控制失败!RtuNo:%d 通信中断" +#~ msgstr "IEC104 Remote control failed! RtuNo:%d communication interrupt" + +#, fuzzy, c-format +#~| msgid "IEC104 遥调失败!RtuNo:%d 遥调点:%d 范围超出" +#~ msgid "CenterDataRecv 模拟量控制失败!RtuNo:%d 控制点:%d 范围超出" +#~ msgstr "" +#~ "IEC104 Remote adjustment failed! RtuNo:%d Remote adjustment point: %d out " +#~ "of range" + +#, fuzzy, c-format +#~| msgid "遥控失败!RtuNo:%d 找不到遥控点:%d" +#~ msgid "CenterDataRecv 模拟量控制失败!RtuNo:%d 找不到控制点" +#~ msgstr "Remote control failed! RtuNo:%d cannot find remote control point:%d" + +#, fuzzy, c-format +#~| msgid "KBD61850 定值控制失败!RtuNo:%d 通信中断" +#~ msgid "CenterDataRecv 混合量控制失败!RtuNo:%d 通信中断" +#~ msgstr "KBD61850 Const control failed! RtuNo:%d communication interrupt" + +#, fuzzy, c-format +#~| msgid "IEC104 遥调失败!RtuNo:%d 遥调点:%d 范围超出" +#~ msgid "CenterDataRecv 混合量控制失败!RtuNo:%d 控制点:%d 范围超出" +#~ msgstr "" +#~ "IEC104 Remote adjustment failed! RtuNo:%d Remote adjustment point: %d out " +#~ "of range" + +#, fuzzy, c-format +#~| msgid "混合量输出失败!RtuNo:%d 找不到混合量输出点:%d" +#~ msgid "CenterDataRecv 混合量控制失败!RtuNo:%d 找不到控制点" +#~ msgstr "" +#~ "The output of mix is failed! RtuNo:%d cannot find mix output point: %d" + +#, fuzzy, c-format +#~| msgid "遥控成功!RtuNo:%d 遥控点:%d" +#~ msgid "CenterDataRecv 遥控成功!RtuNo:%d 遥控点:%d" +#~ msgstr "Remote control success! RtuNo:%d Remote control point: %d" diff --git a/resource/fr/gui/icon/hmi/DataOpt.png b/resource/fr/gui/icon/hmi/DataOpt.png new file mode 100644 index 0000000000000000000000000000000000000000..9028f9e2ca8aebb6c46f28c8b88f7e8cf2510455 GIT binary patch literal 805 zcmV+=1KRwFP)Px%-$_J4R7gwhl|N_{K^Vo~x2{nk#a*zl5VW+j378__3W6pWZf7r`MTCe55t{@o z6od$-NYFwsU_?Ph3nj9D&PZZ+7AZutmn2C;I><(uy} z@6G#W1pnxhf5gFm(3+k8Z`}{;y1Ke{tXpSa2G9=39EmegBgQt4H?%ikgCf5&l}^ZAx>0Q-McMB-^2f7$aR-W?qs z8%#lJm+QJk5o;7cP6YkF?_bG+q>arG+xGewBtosLeIm9a!rK6c8qQH?XXlotrj3_H z-~yZjWP55?y>n1X6#(OiZVkimSuI>omhAkn;=p>Icg|cdKO1wZQmJ&+OQce2Cm=Hb zhl3zET~qj+)ME`n=|ZhJCc+D(bX%4TFRAMdg5YL`s#}2c0Qf+1vxs~WLEB286DEyG zQr%K2l|C-V-+K>mqR~JX3f@7>qPhR(k|eoi);0tc3dMbv#VM`P7e)RRrPOXf%3AYO z6a^!H@(MNtIgVrJ^DXylk)0#C6~H@lnWhR?3tKS^wK+RVN-N2iO-=UL`1ttzY5{58 jil9Gj_*WmkwZOjvE7EYC!#nNd00000NkvXXu0mjf_nmEX literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/DevRealData.png b/resource/fr/gui/icon/hmi/DevRealData.png new file mode 100644 index 0000000000000000000000000000000000000000..af8f8bc641d5e82e2588e7851929bf32c7f3f1a6 GIT binary patch literal 795 zcmV+$1LXXPP)Px%)k#D_R7gv;mO)5UaU93Lzn0J;WrG$8O(v8VFO7|PD9D*;&<^jthNF`m9HulV zX3TS53RD($NSZdmgvEOAd5FS;krz7%tCNQ?!OKPq6ukuD`^SI!=I~A3zt&D~yx;Hp z`Tu_Z-}n9hq$tWQ!(b^QI)~c*J}_q7(RF>xlq5-#3pIumwHd>ZuB&4ukSr^V|EaI9 zM|XEOY_?ODx)v8dqEILZ)yo(Xx~@L7fc$ zFwh?<8*k+s5iW^>>gwtciS(hfv-7yrB!DOp{USwCt{MhXqOififs-KS0+K`&;XaB1 z?1{){h_`EG2zXp@&%XN^O1;nc`Re>41kFfx^eJj_*;;f#~8Z~-~oVZ0Qe=8k0V$H5HPx%hDk(0R7gwJma%ITK@`Tnx3|Uw0=bPTuCO?cYEPdIPJdqe*510 z=FJfLT)yw0jbqxW)mESMvz4+23n5(3^Bw?nskw(A8e=YpVYrh;BNIpnG3J)Y`?AQgZ-3V&*qV5>MCb^)GwD_5?{Oi$wGkphA+wvR12gZ2sKb z{29k#4e%y2pVnG$bb>WNrPBOK*G(o`0Yo&)%=Z8)0(=9&^KNBfW|8)6BT1YE$4T0I z76n1@ihSR{%?vAcV2e2^lT!WDc+Fbb|m*5jig{z;$!^N~N;hsYm}0XlBMg zIy{WG0Dm>c9JBXMYVXgDB;8!WX4$-_#yPx%B1uF+R7gwBmd|U`U>L{0PjV5n!w%l+p@I&fQvDD711vOeafe=<4q+a4=%qNY zCpR(PJnT}C(n#+)&%+A+4<;2{>!gQzQmBG0(vtU)w{1p$Bwae&Vs1%zzn}Mc^2w7> zDwTR5B^Qb48kTS{^AAm<$7Gt~`?4V3z7>pwNbwR1nTlK`NF;~&b$|{4Twg?m%-oO? zIbFwZl}DqYLWmbb*aBFba~$WD7euCM-cu)1YKE@k9e~>lpa9@1fL&(()vxHklff{q zA{xDcTCIj&uQzwmB*Z`lDd`FkTSOF{Oo>Dyu&mcG3lA*#usMV)igP%D2xn2AdlQ^enTdcfs`_^oeKe}^lUbZv$LV^tvfxfA)n9tNHH-PM)lS- zwt#89x3(T3ne;~DVAHCKV$nvqTn>0PYSxYD9Y%&&EQbC4mwkZix;Q>A!?x|QR$cT4 zhmt{sY;4>@JRZl%$w$=d^^0<+?yJdgcX)Ljz#%|)=1%cn@Y!|oG)RW!eI`5^0IUHx z@RQ+k6><|m4#3aQli_lp@l~N^_*dBKez#Wj1Nj#j^ZbEGZ`S|-0000Kma$I5Kn#Yzpbm^3*~-kqidg9K3n@#wGV>m#BO@<> z#Kg|f3du_!fsL0yYAg1J0Y^GTBp0D0tx*5PXXoV4c22ouWm(dPj(VZ|OVFSmkd)-5 znOPS4yX&Y@y`rvan#leg21(D7UjGy%X#(5;*OF!)%O&MWLBKdz-${A{=D=LieM->8 z?Wf!G;MqkIkfc*!I8#9{%Q!ii$+y;A|+LCk`-Pr9i z44T;*c&QcBsMe0W>LT!GwJpbP3nGe*?lM>xZ3!jiX14eh$jla!-hnOOhu|lj0NXZ5 w6y&h8*q$!h{ntCyy;P~Uj2BR0px_%% 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 IM6N<$f>U{4)c^nh literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/alarmManagement.png b/resource/fr/gui/icon/hmi/alarmManagement.png new file mode 100644 index 0000000000000000000000000000000000000000..b383b247ffeef9203f442db4780951c22b7dd96e GIT binary patch literal 1281 zcmV+c1^)VpP)Px(yGcYrR7gwJm2YTMXB5VtbCXF}2PSJNg%+VuoYJydBK?DIMkkDvHr{(%!MSyD z;J`YC>eN=W)}dlQIOm^@b?8u7%Qoh6Z=38xM@u7EO*dwsR4OiFM}@gMyg@2-&U?@L zUK-Zbw6^;&*!^^Q^WO72=RD6jA^b-VEre5DU7h7{JaF)&879t!5xK-1%{pqxu)eMTFY+%MEB3xqTdcY9`td#)ri0F4_#4PJcyTjpF z4^TTZF6w&do!JaBr|Sd^z#f2#0JxcX1i%OpT@hGOl;Z$3FTW4qJGZ9n-@_1g1Gc%G&qh#^oOs^yfEon6~mlMG~F)@)tfq=S7k|4@o4WNjK zoXkiNA&(g+bUoB80;X&aa75Fzjngw%6y-gDKAzO=D?r2ogq}o*0TA~){$U26&-a4I zu!xJhHR1VVWjRp8Qb2L}fzn+bP(5 zL5%=fFJHclD_8olckdny58p&lQK20?_1@I9ADcJ7fs&FE5xK6*S2B16~4&%aw zi#U7s403aGap%q*Tbm_ImLQQxK!Ae5ASx^U;#_Qy{Dp$6%61qD!5Wo}SqWo3@j>GC=ph%jR-VD)x%bcCHwXHk25 zJ0g+qaO%`YcDn`!2JBqR%1Z6l?c3LAR~rnzjYW$V&E7g$Rxc1?%gh;26a{s4Z`s+3 zs+yY*VrXax%a<<~0Wmf;+u&_u##L+e)vX^dJ*VWY26k3+Gg_)e`V0CqGisdR=>lPcK rudffLX<_~P*X$Nft)PaP5b?ub`iw#wM4~9200000NkvXXu0mjf0Q*o= literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/alarmShielding.png b/resource/fr/gui/icon/hmi/alarmShielding.png new file mode 100644 index 0000000000000000000000000000000000000000..59a11146f709bf43c144c58d979b4f85c99eef63 GIT binary patch literal 1100 zcmV-S1he~zP)Px(21!IgR7gwJl~G7rR~X0t-)*7}3YsCJ;G_?Iu+VmeiA!kbGA3-ulALqv<|=}d z4a`fYgGn7L?4{6x4|9lb8;Cd|!`^e$4kr_qX-kCqurZ;fbF@>0&2>{&VOtaLH;*JG z8snBe40c}v_nhzi&i#M?{};l4^iZK3DdlBmUea2BQb_G%fb6@>h->Y1{69ca$_PN0 znB9=p`rh7KOPT+Rgb+uFNHOyzt@YLH+8pUZp-`>I{TMK86uIhFIg6AfEScf&j}%(A)=R=QA>nB0enM5*BrWH`FyvSO$j$bS1Ob>?T>{Hrd0rrn)TJyRouDr{gP77%*x8jlIvOv$>bjkQ&UraTo#R*wN8`W^(cxMn*=EOeS~r-s|%ftgWrhz&4GnM6@%)3ISbSTU+ZrfBx;9FWF18EDHkz1E{L1yh23p6$<)p zbaeFi*x0V2oG&(LX?e}acze57#|i}{`}+DkiNw6g4T_4q`$8T*OqxibzP=v4y%&tV zcQzIxT|uBgz>l7up2q^+ip65JvDjyM<;q@YZf-_v>$ycDI+625k;vI+EsMJWJ`B(+ z02Z0CWHv^lopmQqo~Slva9#I6n6Y_(|A(lms>(G(Fc|dsd{3G&Vr-oAl$DiXaBvXQ z)6*Cp9zGD1wzmnc`D@>8Z<8H>elh9KcZx}VcXt;Y$AOV>zreP(oPx(5lKWrR7gwJm0xIEbri?HCpVVTjxNzUQYeM8iUar1l7W^@dJBTKtjWE%8w}dg z2@@2Z4gG_&I;<#IZ2KTxSZlLx;EIYf_ojc?1j|BwiHLSXO820&GKyO5ZXPOx+Ix@t z#iq+*lC?ev{vLmv-}#(B-*bM1|LD+eI89AWrIPf}n8SfUI2`_IH*a?ZQWT|{$T1JF zqU(C({{d1It&0e!ENfGqoSghMJ?aN#q^jz9W*jgKy*@MBf0Rzsw8PB!l9_MCpl78PO>aJvqhpPiWi_5K-2N~o#QDRRng_k)uwr;G9`vB=?~gA zUW`P-qr$0hS?AMrXIqL*}pnV%wpE0IWe$mi1zI~)+{9|3TXh@8y$ zfe7Wy7&MIVS>Z4xdw{2PT|b^4xvHu!19a|g-#!6^FF^E@2r&S{e&Rkc$g;f0?RI;a zsp>8$WZO6qiG)8DJI?8Jeglwa|Nh604Gi=P^(k9|aIUYf$7g3}OK;x%K5*m4cgvP# z#WIIItLicbQ&rU|fR1{-UIYRiC@wC})ps#(-9!}J(ZHsIOw;_r?RG!e($e;vqWI2q zc6Onnq5@rAo%uu-AfgY_4R(|fGrIsR0`O>BGxqI!6eA-e`9LBw(eEEqMmq()2B80M zQQQMcI6DP>1wg3sKG4|M7_MHuhG6hqHrOvjv>m}tK|hPK zWrBu>hjIOS6hlLUsI08amen32`eQd4{RW^kAIRhJU~X;>_4V~AC@4rlbAuWi8$C{E zp;wYH&5TokJv%Wmp%)buRp$dOF5W^Y6hcSGtEj816Q;RKrzqM*BAm>uf#2^#dwYBG zI$aFurCV57!1(w@oId?ZGAjU=h-mxU*zVERr*=DAp^J-)5DW%UQc{A}*0yBh2L|59 zg$v`DnVG@J$a&1q&tr7-L-h1?qqeqI$omixZEyQ+kSxoEE|>c@5hZ((d1`8^(c9aL z)z#JHW)M&z@0FF6q!292!qU^BbMq6nZJ%T&XEs<{TZ>q(ttnw- dvB|lD{sO>v`V1WVd~yH)002ovPDHLkV1kEz3se9A literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/alignBottom.png b/resource/fr/gui/icon/hmi/alignBottom.png new file mode 100644 index 0000000000000000000000000000000000000000..b73c5297b490f36e581048492ba061683c844b1d GIT binary patch literal 321 zcmV-H0lxl;P)KmOF03KoEvMqm(J2N=i%N0NemKbB;7zgq!37Nc4Y! zZvgZZa055greI7AtR)_+Ef6EE=CL#SGv%0QHA-yD&l%S7C3(c$q#(}L$(jXcL zs9f)Wt=nT@A4-0vbt~6@k_t(M`-NtvV!n0ma74T>&r&>NH<)OBG$0nDs$KX=`4kx$KN(wb3MtqYCjD3YvouXkY&VBj@e T+deMz00000NkvXXu0mjfP7sQL literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/alignHorizontal.png b/resource/fr/gui/icon/hmi/alignHorizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..71eb1db93a03fb93be10770c644d9548903dcba3 GIT binary patch literal 361 zcmV-v0ha!WP)KmZ46>KoEw%B{&dBP*-sez#CA+Ji}Qe5}ts&Cjg1W zqIiJc&;*IN2RL!(kOtuAxyH_nZGmpZ8w`~Ls^!LVLPKx{v>F(Z=so8 z0B^v`r75rvJV@FM1_G{Ip51f?nb{0D0+ucv`goS~vO057Ta+TQ3EI7sLP zkh{N@H200=eL?RIDm>17q1Tq0Mr*ruD*#Ekq@2$qS~eB*1r2JWfkNEt%xuucCn;3^ z?;M?^P!0UHMe)MZ7ST?NdOmO(X=%_;+Ez5xDS(+hdYt)uJTz#}=aZVAYD?b&ozu`% zqnyml=9M4ibq7hh@37Gca8=X32I^p!G<^6{$>IMmXzM{Au~Swu0XsDZ00000NkvXX Hu0mjf6#kk` literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/alignLeft.png b/resource/fr/gui/icon/hmi/alignLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..d3d9d15c973762243e25d7079364a1da24fdfea3 GIT binary patch literal 333 zcmV-T0kZyyP)K*1c`QKp4jHKPVjy9qE#SJ|G6LDV{!31_%WMWE2LV zfDP#10*{dNL}CPr^p}E*A}n!tHnQFDNR}<#>HSIf>7H|rHqviJ=?s$OBo&QAP3GZR zgQPX^27CiQkvcEH(affmAz%y)fmsCk%X6qP1QkFA%+0I_6_MnCuTY=v=ZOEISV+nf zYCYZxy(b_5qq@+}zdwOf1j&IzEy&DPz$yYHr~Abq=>vErZRpCG07Em&qmV~3|JU%$C5iB5*aW f%~9|EyHz*8)d@ItspMit00000NkvXXu0mjfPKSv6 literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/alignRight.png b/resource/fr/gui/icon/hmi/alignRight.png new file mode 100644 index 0000000000000000000000000000000000000000..0a2cf34ce4dd3a1b84a87cca3d4b46cfefe87636 GIT binary patch literal 334 zcmV-U0kQsxP)Kmc4PpKoEsLc?ccg2tv)60^ET}UhEQ_&C{r2s{HTGn=_V6=Vox5#L#p&_E2d12Qv9noN?Wz#7Oyp5IX;U<@E>5%Hz9 z=mw3dIFI=1KsRW`sla)}Hw0dQk4~Uat9H?Snn6+y9DuDe&t>b(Y#9adeK230pr2|5 z0{8^poyk++4Jbl}TcEt<807*qoM6N<$f=xAqWB>pF literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/alignTop.png b/resource/fr/gui/icon/hmi/alignTop.png new file mode 100644 index 0000000000000000000000000000000000000000..c4df884b4bef85f8b3c81fb025f775ffd05b44ff GIT binary patch literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px_Tr z7sn8f&bL!-`3@QIwC-0j6EnM!kihQeAh{>}5fhJ0!{P!4vAhHCSo0XFCswhreKWe^ zx^Rn-Q{V&v|4lOL`jw~p=W3iUc3L3nqPisDHm}Q(*OsfYLbO?AYPoiHIN7$n>SGX? zsB6H)cg@t~_Uc#1EV30Cjf@*4JVHyqP7~O`uIa?%mb>bLY)- zk0u}1ylvh7{9LWm<-R&4E@4eynuKV6M_Fss9(YVY;$~o7xzm_{y zWb50ULirbrE5j8-=hp2?5Z+hk{yrh8?&TFHjeX+lonk*TZx)(sRkT6=+jpUFeBU%J V4P+uVJqCsWgQu&X%Q~loCIIxYejfk; literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/alignVertical.png b/resource/fr/gui/icon/hmi/alignVertical.png new file mode 100644 index 0000000000000000000000000000000000000000..a9d4acd1a093bf8c0b94356e01bcc168e3c579d9 GIT binary patch literal 395 zcmV;60d)R}P)4RxwV)KoA@wIw&X;QN%?azz<@Ic>`@qO7a5C3!tQ= zrOE@gfb=QyfE1*oqzJWBcu%@)_AFu{C(1~xm1g7}-`?KYSyff&0%x7L9JLY2isat? zKHe3zMV6X6l6L@J0sI13M$$<0EaHX$E&$w%$h%kXyx}GK0IoEy9ew0*{Zz3gqlM;~ zh!lYggCHVV#C@vq0ts}sM@=j0Y0gQORy160o@r$?0PyJO9@olfj(W0wu-*G$@Dy=3 zsE1~rDwZ7Y6ue>h3wDf1J^*;$%Y7FU5qXITuXSt9D*#`P?j6{G9QB^At>77jTi{JZ zN-IXKD;%vvy@yMy9rPRxHIGRasR#8ou*jntTe@d-sd=E0f_K;18jVI%&EFapADV9+ pt*0@yLTBgb@E^Ya#_9btYygfkSmci|kk|kK002ovPDHLkV1iQ5rndk9 literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/align_bottom.png b/resource/fr/gui/icon/hmi/align_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..b73c5297b490f36e581048492ba061683c844b1d GIT binary patch literal 321 zcmV-H0lxl;P)KmOF03KoEvMqm(J2N=i%N0NemKbB;7zgq!37Nc4Y! zZvgZZa055greI7AtR)_+Ef6EE=CL#SGv%0QHA-yD&l%S7C3(c$q#(}L$(jXcL zs9f)Wt=nT@A4-0vbt~6@k_t(M`-NtvV!n0ma74T>&r&>NH<)OBG$0nDs$KX=`4kx$KN(wb3MtqYCjD3YvouXkY&VBj@e T+deMz00000NkvXXu0mjfP7sQL literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/batchCreate.png b/resource/fr/gui/icon/hmi/batchCreate.png new file mode 100644 index 0000000000000000000000000000000000000000..8f40fc7e7784df4b35ada4e651450c888bbec9e3 GIT binary patch literal 430 zcmV;f0a5;mP)Px$Xh}ptR9Hvtm$6cWFc60Sg%`M|ux3~)E#w+2Eqx0M-@v;ku=6D>>}~F@u_6p_ zpyNAO!a8w)L52`Q#ybm`pSEmgS46h60Foq0MP#QP1VOO(fylDV$^J)yIF2_&^gu*wR|h_@+SUr7)$s{p zn~)KpR^=K1djRZ}QtL5$BLFkM1Nb7MI}ZTNQlQzC$Ji5t3j9j|X1)c`ygsX<)AU&> z^<>O~AqANE1;9!~4nEO|=nTMRS(X1t! zl-`&&#m2^~s!F>($gkeevUZOma_KmcdQKKoCWL5Le`M5MSqnMFW@$a0jG>l#mi!Lg*lL zU>ZR7X>JHQNJIffEBzHCvtB#K@`;fw+ne2ep1-qyvufKGOT^V8lqEseb4(&4LH$*A zbumap)&Md9Ie?Uxdr#Qq3&0znZTmQoh-?8A03HXrzN>1^F%^LOQ6OgE2HcwF20(4D zld9H~?iBlqSVjjz&H(oAT~%X~Wy}PWZZs(MgH-h+_O*Ml4J#sU@(qAz0K0)~ z1|znQcDz5iwGxs1FQBLeaq^=n)mOJ(s#^69ngYU4^_9%bhXa07*qoM6N<$f@l`Ns{jB1 literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/blockInformation.png b/resource/fr/gui/icon/hmi/blockInformation.png new file mode 100644 index 0000000000000000000000000000000000000000..a752d1633440a3efdab1ad8ad2c39234b4da20eb GIT binary patch literal 814 zcmV+}1JV46P)Px%=t)FDR7gwBmOp3|K@`Tn?@STU;!ZqJu!x0Vp`fTJsCa^)MPPR}g*Kvsf{i4g zg()Nn7N#%|u}nYU1RjA z49NEb4Pbi|&F*L)MJGhx53T`n1(32aCQ4$^_thi!VvIi0N#OQAO7)!vJ@`9_ z`yT|sW)bPP)?Q5;z+YdmD-Gt4KuW2@A{=O~y^SLB72p$6#!%$USO5q<#B(@OnDKqjrV7nAg56e*=V5sWXF&qf?K zdTX`XtHrgVCLF{)i^P|WF=I)e)*yxeI%A#GTAz3SR-HPRE`VVi%P7fhPC*24|T3#4aRULrT7l6~o zRL?pEp6Bf=6xM_yxbFgHRRt3OdbO@@S~Wid2_Sr`|I2aGW{m%ax> z^J<5+uCf!*M?j{NBBz47lxFJXb^}0qjnU;*gBG`b*%?K4Yub{0-!G=?6-80KR9gR5 z1W(g7>M}+j%40FftOI1U-ImhzBIRXf);S{;!DT=$kbJWetl4b7tkr6tv+GDkt+gX* zPxJlY5{Vm&aWd=3NiIAfvFBHcL?lcOFllE1@X5_McT^+c4D~3~fO-tE=*8y^nCe3G2cM_yDnFA-ssI2007*qoM6N<$g0gLVQUCw| literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/blq.png b/resource/fr/gui/icon/hmi/blq.png new file mode 100644 index 0000000000000000000000000000000000000000..d51134701215de3d4da3ca217814474774fccb75 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px`-A z7sn8f&bQMX`I-y_T&}_kE6fwjz4tV!uUMJso6KO}(Hj`=6t!$2 z|BI3Z1?LpmyLG1Zi%l%~SFt-o>!wR{qrdyFu-X`9j;)ZA<}n zvmHcD)1J-eGZdWkIa%p_>J_PpG38%HQv^@SHkfg4RWw`wA~a><%(skJJXi1;a+*rM zGn%wAB5g`Wm%^v@_a+BkU%@4MK-m11WuK<-ibb0ipILJxJHO{&x<}UCgspW?j@#7~ fe@b1?cR)0_!$$h~F0BZl&lo&i{an^LB{Ts5M#FEL literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/bottom.png b/resource/fr/gui/icon/hmi/bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..32ef16c5e668716c88b2ca50e13b4f7bfd44465d GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px|Rq z7sn8f&bL!G@-`a?xXK4sg)KP2kRxDT&$q%TU$9Gs36rIoTyHpqbo&B$YN05=3dEUB7M->#< zwLFh9EO}rV{!?m!P)6e#{^G)C-%hPm3hY?v<<%(Fv3ISQ!L?gytK2T67PR(g+ekCr z>ts6fi6thshVh-Se8m2w`ytwgO1UeZ=k9TScbCcWtwdngcl&mS-mTYk7J95|EUwSB zKeu68Th#Pji}eGgn7Tgx+TGSPCy}@Ierg4Shn1bc$Nv`2K<_emy85}Sb4q9e0Q{+T AssI20 literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/brokenLine.png b/resource/fr/gui/icon/hmi/brokenLine.png new file mode 100644 index 0000000000000000000000000000000000000000..270a70e0640f88ee4913fb686d81f28f2103ec58 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkR@w zi(`mK=i4dXTnz?1F6xi27U_MBv5dKswem@@M$o5eOAo(JTDD}>jDu!JgBA(d-n`A6 zW@qatSa|oh2&2WEn~4`wQ}*yzI$oULI8&6trA2Ay*QoGCCVQ)PZ)m&AXQkV;cX{GO n(-(RV52i(~FID}u{{>t4Dv2#~)n^z2ZD;Uw^>bP0l+XkK5%ous literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/browse.png b/resource/fr/gui/icon/hmi/browse.png new file mode 100644 index 0000000000000000000000000000000000000000..b4649dcad1e5badc0c718314848f2a178f81802b GIT binary patch literal 471 zcmV;|0Vw{7P)4mdj1UKoEw%AntJoqywA^a1L`OR1niaIv{jF2RIb~ z=Q$))K&3`3nJs~f@cnUe1dNEn zWo89X>zqgWuRsGd?jGKo0!66U`>K!3Y%D`P5(fZ9ZcVHhX$rUBpT774vym-o7>Vh*T{ap=V|p_lSFIZbjv4g17SlxQ^b zhQO`PFe-+L?ldWb$1U#&tl_U4R(-Mwzx*d7NS+qqiiv04g8itkT7eAQ>2#$#_S5@g zA02Ia1C-h)0Mobta-?vzUYA{f`g|^}WS3{CAX;`IeOYyXN&oM6>m7agtRi805aIv; N002ovPDHLkV1j+V%*Ox# literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/button.png b/resource/fr/gui/icon/hmi/button.png new file mode 100644 index 0000000000000000000000000000000000000000..1e309ebdd525850ccb6955f3d7e1091e4ed602de GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px_Np z7sn8f&bL!9@-`U=wAuH(w`x+hU{WdJpX1Ub(huw!yI;qxVWeTOZ$_%VGC_+4`8+!loWW!-9(+ zxJ1_OxX9SisJlUM;%+9P>FFy)~xk_@yWbd!UfMt4;@?}6~X@MQ-CkW6&{CY+Lz44;?%R>-uAkDrL4Gi`sv5F pEBgOQ`IQ;Fd=9p2{wMy0W$~YeFIkNaeLz1lc)I$ztaD0e0swPubF}~f literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/byq2.png b/resource/fr/gui/icon/hmi/byq2.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a5191d60b57b2957d7f33d90fea1a3da962f64 GIT binary patch literal 499 zcmV5QaY<65=6Y-@p<`xOQ*?xB+kih8wVCg+OdrMY#da39ygA4cPtT-5dcgNE9WK zvzTh!8m8MgWD!OArP1_sSM}H3Q(XoB^_yBs4NRxg*S4AM1J}TD!)ydxOL}^paH)OD zxgawufct3Z(cgzr-?^kg4z!#CIpidQ+yGrkN0N?!j`soFyKPd*9rgSD4p0Hx@ruoC z4M5U&|1Nwn6QEa?<@2IDI&sKj1X%@s0zb@b(}4r(oFe-EO*9pC`i^@oN{ zkAzk;pr9%=B#r0Td*^p&TeUT>^Vie;nRt{)`(wZO^_y zi4$PM%$7apbsb(%|Fa31@XppFPyG+xbp?Eq^x}Xm>TGfAyP(UF+2Mk`9Gxs{tRf|AgMMFd5=AVP$Sq=g3dXC+ifMGI-szfCSI zqFvy^%5YIsE)=4{?n{%vY9t+`k{V~8Gq1%t_xXDIUKB1pn|pu1d(QcuKi_jMm*sy- zU;ANfYzzi)FSg(=45En!_Ti0Ge+nD&JIvrqypB&WTd&t!zUOrS58xiWid%6M;|a7H z>#!=%D{vxp&Y?)#(fs}?X1f7xz-zb>FXK&|#$w!nXYgQFVowJ2EzaUPY{ip#-^9n2 z0rjWB zpV}B%6vYBTf<=OT4J^bm(Zg#K_+&mSrnaP$3^Qpoiix5qUna%#eHa#Wt&Go>WjS4z z<*evS1-deI`|^Cz$S)>m#2OhA8~Hu_j9O6?Q>jyBygYS=(&o&6$*3V3I*#>tI3pbp z!?;xRYEblNed_K{+Y96$X^xDHv>#82RkT+82$wj&=VrvrJT0jFn;7cPv=L!)aBFn*UeckAcE4nMcp@xUAIa!y&-#Kl-JWai%h0000jU*RJ1@J+Nfx8>dR1&K?_8IUxcWTf;Pb@ zEv%so%r-JIBB-$LNJbkbb|WNlbeuc(;hb0BZuh?4=)lW``JJ`Tkse#U25(uspkfR4n+7{Dkt;$WPP>u?^f_`g7Nuo6e( zdc1`lc{YF{+=pej1rzNYP3i0FYj@U-mv9j-PLSQD^KDpzX$d$XGXIy<>vi1~+04V) zcoOeb=sku_soPfC0rlc)(fFUL9AKyD+aS(IPb;P79`)mK9FLPlS#A7RhR za4KeFIcoS654Ou_Hr~Mv_yr@P@h4$1-bA^f=i&q0owi%?E~aAO3tb?*cp`M*cNfwQh9bVa&yqcq0wBWhQ$tj^f@nPNm+ z$qQJB?SkLR@-?o)cP;FG!xkJ>08NTzn`{FFe~J>97j{BSV>`Qs=+CqQXiSW4e;b1f z@sud>^aN<&0GuhZ>Eoe<2iNpRuqCA)=q057M{z0B~9Sim)c7@x`i&&l5# zv0m)fXnym=S`?IXPnPQxT#nWGUxRLdRE1E$Hsk)Cw#Uc(14s0jGg6&sT=u`rY3HoW^eftKZkQrjK7K?H{TLrYgH^T<8 zupi-Xg$slLotxwZhVh>#nSHFpOa4Cbzg~lsuzbO&>t#Z bJ2BR0px`}E z7sn8f&bQMZavm}eaJ%pMf4lSz-WW&q3xYBS1xuLS3s}v8Xod6@PCveNPR>`Nk{n*J zH^yClR(SuZlS}Byg^^;XSblK_T(s@*;LSO%w`A3CfB6T|HJJ}@TwMD(OGNOS=#AQm zX9Oc!^v^1W=I*j!%L@H!G(|}%S75fWdP3eq>kAs49#0!e-~3NeIFO^&xO?X#N!zJK z)zVLRuJFCpte024aQF4)9i{fCSCqXzwZYEQaaC6CM#iuMx^wy?!z=Z9LPZ(YvS-_0 tsuI50ub}-%v9n*$x4eyWiX@8-gYU_XM;;;3?LeP0c)I$ztaD0e0s!`ab2$J2 literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/cam2.png b/resource/fr/gui/icon/hmi/cam2.png new file mode 100644 index 0000000000000000000000000000000000000000..0ff47ad7683e1357915c4f431ad9ff08e9045179 GIT binary patch literal 766 zcmVPx%xJg7oR7gv$R#9%7KoFf-{D&oz6O{g0EK;2lq&Y#|6T~?|ofD)vLDCbH+#o$c z+Y^LJEcRdN37Saw4|b|SyJ$_Yanc}JmSMba-psr=APih_9RC1-lRaUlS(b6k-V28U z4A2Y!Qa6@}0z`ZV0Iv!JS(d$bf#Nvk-``&wh%@hF#7zH>(R4ZuJl-3U*Xwm*LAi89v_Ql&zDGpKX0y2{isGR!u_r(VFGI(=ZGJ-}e(l{J_a!TV+uCB}0!2|Y6GGe*(H}%?h1vsnqP6~#=lRl^zJ5mb zP-7*ZO*#4da>&c1l-%%%QtGV>hcWLegn zWu2wlZ+E;KWtU}n#1_&8l2UfZzY(Qfj26i5ud*yd*NR+5&3+-GTcy;(1u`Y!-E&n{ zRWcfle%sQxK#qkqXY>k|Z(6@%+Cm7Pw5CU8S*ENrB4SqDleyK21>#EhzTa3_m(5m> ztZ;qbPuU^ZMi8-GY^L@sz)7c?qJ5AL-FipQR?*mZR^+((IJ}vRonb=3I^>UZs zdl#R(W6a?^VX4+S^*rx^h-UmjL{@&lS|g&l>urOKI#$A4lwF+%WzzjK?=1k}&6@1m wtXmdzh+~_HYD254DxR~m2H)!rN#c;0f6DgBDkKID(f|Me07*qoM6N<$f}pHo2BR0px_rz z7sn8f&bQMp@-`U=wAJ@88#Jx|zC`+jhDBpuL*4Bm=*i;^@iQMhkXy;Qr{x%H zqsS8(uExbBdLEn!>+^yIFFwunxOeQ)UcVHF1!`|sT|1`UF5dB^G3C!VSeCg&smDB1dTgF*?b>kPh4ElFwyXp3u S1nB|&&*16m=d#Wzp$PyuBY&d+ literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/checkAll.png b/resource/fr/gui/icon/hmi/checkAll.png new file mode 100644 index 0000000000000000000000000000000000000000..1702acb982b8171971694f698bef4c3fc270d962 GIT binary patch literal 328 zcmV-O0k{5%P)K);(^*Fc`-1e^7TSF4D|h2*Yy@I0C&vdxBnpd%R1I z5ZEhm1Q?jpp+RyZW5*84fOw`@mi)_WzxgQIwq=UUCQ+t@UfhACA^Z4cW}m(ZNv}W& zG-h_X33WLGO#nIukQ#UcR^4?FYRs$(Krv+RyV22S(SrB(d am78C!e{fQ?9ZCKG00004mOWC#Kn#VyFx12)r7PON34lVqIRTp+z)8pr*qng$ zYTQzRZ;&G-CkTbL$!6oVVTObmG~=;lOM3cwvOU^tHk?AvPJ;3;fzF2vM5F+m9h2m7 z19-rz>Z&i!sE-UHQdyw!Kt5~0sp{g#KqBIR*XY(9SO6jO0;qt;$Y!dl{@XxS$(yN- zW&4>)sI&w^TOYbAI{>noENR=-0Cz+EH=o+T)BFjxkXLIX8B?2v#JiV&eJX(fKLdL11Zc8^Yy9C0Z_7h6QH(ib0C50 zfzqyP$^Z7H8i5`EGZBFu|HJp2^8bELP6qS^B0{uo3a7#E00000NkvXXu0mjfw(84- literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/circle.png b/resource/fr/gui/icon/hmi/circle.png new file mode 100644 index 0000000000000000000000000000000000000000..7bb11686a4dcc885cf89d937a6c8a7de19dd53ca GIT binary patch literal 447 zcmV;w0YLtVP)4md$a(Fc3x`ncU+Ja0k#q$U%2^fYSjbPy!tUI`DlD zaXK&^;11#noP*bc5c)C644Gjs9!b03^RDETXMNvu4|}=`;61ac9Nh&UXxz}X zF(#i%P~Wwq5e4lS8YV#H9FPzsv&1{qh=X*WHac7Ybu2Sot2rO(jqf9mHPt=mQgjUc ztQz~6_PB!K;~cM!gNT$qz0@_a0k)P<$U0yvB3C7w1X5VeP|AYqd#PpEo1KW9Vme8X p1I>V?4x1?r_gA35*yH^L{Q#xpmi>vsbb9~*002ovPDHLkV1kggySM-V literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/circularArc.png b/resource/fr/gui/icon/hmi/circularArc.png new file mode 100644 index 0000000000000000000000000000000000000000..41ed7f67f8b8327886ebaddee245ccfeff6f8e4a GIT binary patch literal 356 zcmV-q0h|7bP)KmBEd|Fc3u_tGz=9q=YRYmpSit!j`fnqy%!Fi%WnG zLI>MHIAo%=j3-V2A+h31mKD#>|DG?$S@nI-Bk=YRmzU8~7`=N15vhR>U<1?zodEm- z2UQI@!YV!9BC-cQ=kC-&tEyk|Law9OgvE*V9fY;3NPA=o@8zL66=f_nuqWW58nA~Fh8{C$+;$4s==cw!eK` literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/combine.png b/resource/fr/gui/icon/hmi/combine.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9b07be9ce5882084aef194332f86702c1f7d09 GIT binary patch literal 322 zcmV-I0lof-P)Klrav1KoCVA#*#$upuOHeo4JoSk^4-c-T->^R6$i5+aSJm>JI{;7Mn#it!TvZDb1e_W` z7r+m4Y{-R5f&d;sY51{s2dV^M11v+s0+p(|PtN#JmCA|88Q6v1Xl3|=1_NEN8~3%c zJ|{>-94+dts+l+9%g}1$-``833O6aSod5s;07*qoM6N<$f{X=;!T2BR0pkTVE zi(`mK=i6xqxfm2UoQ;2(?!VQ)d9wJzC;_#L)@>V(wRxPx%!bwCyR7gwBmO*F}K@^7nx5g%i9+HaCL&1o8D_Bs`gF-|_TA`WQ6g+rPLBWGZ zL4*p5Jp}Yn@FJ+-MJlK}vmp?u9&!+@*h4|V3I!D_B9*4WmPDJ~C({rqB?+5Ui+fsT zcK+}E!<&DWut5)P5C?xi$z*Cjkv~jC2LVKx`8z-_m?`bLPhYLKpcPOunL2J+tN}#o z3vya1b!9y;8WP}sxJId%d$ot$N4lkIJncYLZ^vv$rQlsU(;G&Zx=>V%F6(y znW43Iog{fr1l0TxOrx1NY?+qao1 zNJ{%FfbQkxUp?7u_DciMHs9x&>Kt#?S}z2JNokjuIYdIpWg-d{3iF%u`Fy33fDra; zBJ6GEyxv+VZ8qb^(aMWbPSZ0bgnfeu!^{}b+PNCUQ6iD(jK#Ws09Z7jlIg0YrNz$i z@$scb0?DL((z5WVQPb30*WYjVL?Zai%(JHJ#sKsvr4BW#QV6k!$eLuvq}I;9AdaMz zy8)VF=BdCDB!q|)Ss$4BqtmVD3MhFu%MI^3j(U0QGjp#W03tA zz!1P^0)rBXL?{}KmCR8nmrIdcF88yUEAxFU)-`9MjR^6;AR{WJd;?Ig?|TPa*KL~U zLJS=t@}DzfMr&tRtDu_znUKAwlykm$m)eR5q87$2frJn{0GcMEisx1O8U<{vtpSuh zuM*E>GT&MPRkzQ+3*a1p>2evzaye&qwX^EA6MhL$-1j-{y48EEWl%L%Vn(PJ;91|N zkz#SvLtw5Fjcz$X#G@tv0G=om3WxLge7P-Mtk_$!Y7OVDqBML9q|w;h%M0000Kmcfm}Fc3vwR@`Y}OGpO`hhGQK!L~pp33bc?I#^0b z32X)75DR644HE;ouwRN4+mYXR{&~K{L-slDzrdm|2|-3i<_(k@*ss zhxbYnF_;&$1)A6fk`BNZume^pSkbRKNec(`WM-F>^*~GD6R5({pEM4OVefc;B&}l+ zgpD_0SoPOpsmt|ZFDb@Pf{tdk7*3|Va0HbE-BS%5=u%VBdGVbH>Y}U*d&`TIa!z#9 zi)VmbUOWsM`T%h+QhL+w?NR6!>o6=|2BPb8Nxz;6s_8EBYe8n#0L>Us8Oqk9D=)@? j<~Z-h7#07&Te&&|YawHs=CjKmBCHJKoCWr5qClbP=Y%kmpP|}P(hLkuq(iH;1)Rl zQ#x=7qyj<(=8#!wWv!9cSP?@07i;Ew{XDZfcG34e*U-&XC<|x-#k&2;G_w*|dDuxh zPX!gJIdVV)JPoW`QZ)<6%pQRbxEopXCTX7wO6^e_K@O4%;2wDQ+|JC_bAUp-4w4!G z-yr zfS2LgDFfU1^#N!D%*^({t9!@cqO8^hnOOtuM(i)3l=KlNCw+o^j_QPU1lB_cOspu# s+g5sbmeh^i`zuh6{@-t60sVc@H^19o;bXFK7XSbN07*qoM6N<$f+`h{h5!Hn literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/cut.png b/resource/fr/gui/icon/hmi/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4dc61e3cbda6d19197c64e69a3c109a022a2f5 GIT binary patch literal 548 zcmV+<0^9wGP)4md#ZoF%X15_Hl;{))_EFfH~-F69FayCW93jOa==P zV9s@5$N)01GcXaDgIZV?njiM<^MSrt(_QM)w5of2wB2qwg#9`Q%OQ!5`-0B7Q@{g_ zq*VuI0@Q$)wD~6@Be?}8z`O&~05e`_LZ?n zia?z=T&-|Scbh%g{_+mlkVM{eI+q$2qn3+O^<|fRQcev^1Kq%d1c9;fp|)2BR0px}N_ z7sn8f&bL!f^Byt~a5>(=q@k!9z%>13vtNPcmyPU`{DPQdXPjP_B55gMd1KPi-8si5 z8K3O4*K27IlbN;SPj8mRGG>+XNLi&vNw#sXf2F1@vDH(ZUU)6zv8(vs2{WH?9=Q4C z+Me~j3^rS=Ogl@b{gZs!vH5bDXzI_49ZRks-`%lhnd_0sa~NWL!zCGaWX@$=Gw~b4 zGM8{k-KhDU+cvVY?)dU(b8W!x{#|oRZ(e&_+9iGV-wWNv@rL(I4d-3tHkGxvZP>AB QInXN%p00i_>zopr01k7R5*?8l-+H@Pz;5?AO`3Lzy?V6dl>;XV3WcI=>%j0*Z_F< z5HJC35ah}?q*16672dFP9(?_Oj&!rKEJ>!SV_+Wmq}`6d&S7S!^jI}g)fMmsoFnl7 zTpLY3fLRP00c$f`{Y1Qxh~y%26_KU;UEsMLkSvKfX z_?HdLEb&mN>axc+o?9e;Sc~PrCP?p0b_hguTChKfhEu;C*f+3^nCDC?#ki|hc2%p1 zR9kHn3iPsiOKma$3$K@f(&h}Ov?#3nExXm6u$U?HSEpFkhMM=&oC zQ>L&G@&E?J-c)~S%9JtKDV!Y4!4kaNy#s@VKMXfFv-|%$yTk2u@;ql3*xQN9pB6H+ zys%#vYKulfW_IzDpMs>WbJ7XW-AcU!nWV=UM^wnnGT`1{Uw{YqFM(6{uOv-c3z=CD zSO%3WfHU{!z;RGnU(&jYD|SYii_Dy?Abxf`_SnqFWOYO_p`Jg-UdaYHa@%-pyfwC! zP>Ho~;VOu&JXX0~ZG?t?CIjHZZQ!wC3PG$H`oJ6T2^{#Dgw4|q(%JyZnXpO4L%`( U*8spWrvLx|07*qoM6N<$g4evbAOHXW literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/delete.png b/resource/fr/gui/icon/hmi/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb1bada4b8dcf60f4703ea0a5d6910b429cfa7a GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px}K^ z7sn8f&bwC~xta|GS|8rO#Qa5}DbC?S>+-UTPWlN4o4>G?U5xCQJHuS$h?#=Np(o0U z`kK!w)B4M9x&HKivFF{3-~X7d9I)UyY;1HhZ0+_%QahN;wR;rISFgSPSk8ore?ibj z)}Y9@Gg@;_uI;k)c%8emS|Y^9b<%_;SAhnla^ni&TN8RbCN%qAi(S>hqq|`@qr{CB zk=EBlx7^q@>ARQO@9EBSTjw0Ua6_EytJ)N+Ll*<`op#P~F%%CvEOF3oLB^v{ov%J8 xI{gzq8DCu4(OhbAzNN;v=5}AH@gI>dOd?lSOD+^GSPJwigQu&X%Q~loCIDr}d`tiU literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/devInfo.png b/resource/fr/gui/icon/hmi/devInfo.png new file mode 100644 index 0000000000000000000000000000000000000000..14302840afe1b23e6723e205a3b9ce248a2197d5 GIT binary patch literal 347 zcmV-h0i^zkP)Px$6-h)vR7gv`mN8BPF%U)PTNE4sEDCNxLA^D_+CBlL=_t4bk)R`GE`YSDwhS!= zx1c}^MW{B~jXY?P5(=bb$B{kt{CR&o8jazcy9$A408S`DF!PsExP~$IGZkdxdw{`O z#|awwS8@xQPM=6?y_4BA4S9bP3qgI% z=g+S&#ytRZn*#DzlPAL-wM2BB62#2wd<(m|M`O-J*LCE*r{(fn`~ade(Y7n9>zew$ tj|YjBLP7o+2@Q(V^L3Q%yOrw$`2&B_cyohCo^SvF002ovPDHLkV1kv9k1qfK literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/discombine.png b/resource/fr/gui/icon/hmi/discombine.png new file mode 100644 index 0000000000000000000000000000000000000000..0d6b99135d4eec8ca74054495707371b9d4e3af5 GIT binary patch literal 307 zcmV-30nGl1P)KlsyWQ7_x3j#3dAy*iD#l8k^a0PNhw={qfC>$*U!n$A?<*J%^|JbB(=SAcQZ0p)+VVIwhwWFa# zubq5oT}B!HbomHz7H<*Eu7W1(y58OOlMw^Ds|^uJfwKR_#&4FbsX-`oGx#Z_td;4Pbmbd!#dZs2a< z5$FWw400o09j9;*_<`~28e3dRx? z8HU+PCMwJJt`?~0jMVr^xg-59-_?AS0{LP#AG^z`Y-eOc0To{h^wz>8+ftyN%58fe z$R@l`&L~@%!EE#xXw-NZA9X5_%=d=FLbb;Hzda{lgx@5f3w(X2;(9RmP+p@!FMZ-Q< zYd6xb4D4bnXwjuw$nNJ}69pJEfA5QLB5O~Ma|Oj}ng2hxzD59E0hq%b-VaRCX8-^I M07*qoM6N<$f-j-G%>V!Z literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/dkq.png b/resource/fr/gui/icon/hmi/dkq.png new file mode 100644 index 0000000000000000000000000000000000000000..275ec6317c078dd828b64e5aead1f7e2469a4105 GIT binary patch literal 345 zcmV-f0jBKmaz@OFc3vQh#p!BB-*Q>qRs}40BpbrumPDMi~uDi z8_@ll34nq+=%fp>5OIP75kh<^(mCh&`M%Cc8fluM4mE3`d^Jc!QoTM73f1p{O0~C$ z3;`?vj2}{4y-)H`86+Z80ErDR0NPLD8OgP89j|pF(g(1z;SxaKNoyQioLJRiAhSz% z9g|dx&RIfZl5+<(uL7DlK;LHExj~>zr@Vt|Rql%xXcgqumPhXg0InrBcvt1Ow}^DK zV(mhboxFMPIIvk;Z+w%Atjm?t`eQp&-mZHIWH#*pbOH42wn8Ge_1{sEHpa-}quI79 rf`ouF?MX(jJn;V>1?&I26(#^T3)fa;HTtpJ00000NkvXXu0mjfx~htQ literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/dl.png b/resource/fr/gui/icon/hmi/dl.png new file mode 100644 index 0000000000000000000000000000000000000000..ec16d8cd565ca577f065162a2b5580241d0d620e GIT binary patch literal 2902 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 AJ^%m! literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/dlq.png b/resource/fr/gui/icon/hmi/dlq.png new file mode 100644 index 0000000000000000000000000000000000000000..6184018f579e475073417ff37c240264e11a7f0d GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkT14 zi(`mKXY!x_|LvJ=8H8hVB(I2NW@Y_jPn;F)qPJkStIKk$n1iK%f0eo=ed%AeE3n&5 zS88j<6(udENw;}61kJe-H2a;M)E-B7J&82O;|C5fF!a32BR0px`D? z7sn8f&bQMX`I;33T=y@l-g|7#6SlV(zp}l1CNr-gZ-t_6yo~7#lRvU7pE&l+yioBz zP$^f?%kzS=Tt~-CxzMeaEL@QcXJ*#&Iiy>LaG9)rm7P7gqlaOh*oFTm3;IiS&K#Sw zbmP?B4vHIlnH%H|xLo@ek;%B$tZq$m*|IfzzV^mgTr6+PxEIU#%ER#6HKnBr*LF9> z2CqxbSz6Y{6_xywXU)Dz+2KRy|JwQ4k!Az5D~AoQ}#`YYQmsY|zG*(n|0T5K8Q* z>`bt+p*Z*jV6`p$1Na4J)(pwZ-8;S#i3O9qu15U#Sgk&GUlX9!QItnZsDdh(Z zBGf@3GLnVkorMBiDf|Y|i`09nA>c-_NvNd}o|u_Gc$}!1=E;APDrCY%;wcaR%mW!oh&zo)8DPb0N@9UjD{htll&t90000< KMNUMnLSTY2^U^T@ literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/dr1.png b/resource/fr/gui/icon/hmi/dr1.png new file mode 100644 index 0000000000000000000000000000000000000000..727edec5bd5b843d29416b97c873304e265dfd83 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkR`x zi(`mKXY!x_|LvJ=8H8hVB)4WMQ2o;5mKb1V`A9|NraVa%!9s zejF9#Hewf(S;A0LHKDmQp{7MYsc>hFiJ<^9-=dX{&mXfcHhr_gb+K3=hlGR#Lt(4p V-sLx=)qu7!c)I$ztaD0e0sxwiIokjL literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/drdqdz.png b/resource/fr/gui/icon/hmi/drdqdz.png new file mode 100644 index 0000000000000000000000000000000000000000..a9157540068dc2a193a53e338a25545ecd86077a GIT binary patch literal 390 zcmV;10eSw3P)KmN7~LK@^6+h*)ay1Oc0Qokxf_NM~t0f?mK2Sa<{D z2^4YwBeoV={f&j7wU{;_DbooHq~pqGTY9`C2~Buy3q0Yl*AoA`BQ+-VGoSx9>FVe~f*HujZ1?}Ih7 z5ikJylJ3oHH%cezstu^F8Mc7f#{1C&mu5C>1N!j@@~jSkqN4qwq)`)4T}EfX%ptR+ z8P1z#HW%dW9Oc>op4}eDEc_-g_L?1e?7=sZWwqBtQl}~K4s5&MlXUxQ zpb9M7tHY*c>*s*7&N@l4@E0!Ej=x74?{e0ETFfZ-2_baLxgmtd5JHi=w$bS==`9() kG+Dd4%3Is&cdMNNAHt@kK*GqZ-2eap07*qoM6N<$f;C^PyZ`_I literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/dydlq.png b/resource/fr/gui/icon/hmi/dydlq.png new file mode 100644 index 0000000000000000000000000000000000000000..8543cbaee41807caf34c57ff20459e9ab3b034b9 GIT binary patch literal 331 zcmV-R0kr;!P)KmN9AqK@^5Rjcw2(2iS6c(s%@mw1I#JNUo3@B?n01 z4fY7zy~aX|^aks&GBAS3>h8?0g0eq6W_ir;@!tNtnL$~WTtmaFP;LSwDVJ1Anq3qW ztNQ~*+gnlrY=9@=8TbKSfHyPCPn{b@LNdU|_#izGYj*BzO6yh?xoxO29VBV$!+)EZ zhfIJq@Cm#E3*fO1g#SmU!a0{Y=Qbgx``q#Vs@!qZnnBVR@DBU|Gczmdx=^Ls)|uG{ z@Er`0@7vfps4G}w*R_R3*}Dxa>Eb&u$iJTuW_I4%sY5kX_6s}!jjC!hRF^TE`}-(a d{c|f#zz*_Fi-xQ9XJ7yT002ovPDHLkV1kr=jC241 literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/dykg.png b/resource/fr/gui/icon/hmi/dykg.png new file mode 100644 index 0000000000000000000000000000000000000000..e765c11343328e7e9bd3404b66553147b4120f76 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px_Bl z7sn8f&bQMx@-i9nxc+yaBC?%P`wqvIkemZ+53%(W%s#;3u|;G9qbToD_h~T!b91__ z1Mf^%Qk^(QT>D>`24`@FA?MTgjw-H2##Sp9iFBkGZ~4dB@r3Wd+?3bR+6?KFj$dF5 zyEl>XKwdrLhb;yS=JU5N{GsuJyR7trHkW6!%(k)%io(;^S$Xo$pJ!B9oUWmLW$#_> z-X-g}y3$hq-JJa9w5IB*U7t6-+dOTB#5SJQ64w&)8E$Xn&3?b-i+4R@XC**CF?hQAxvX2BR0px^^f z7sn8f&bQY#@*Xk}XniOz*1)@Zw{Z68SPIE* zb5`PtdmPdA_2j-eQ~Qeh%r51+{?zoiOZ+w{IgS8$^WKtp8VN087xfO4sh&XSUrRFr0JwBEM*6TC62#QljJ&T z-}>^2BR0px`A> z7sn8f&bQMJaxxhTxXw>v6jRvY{`^VVgJ};6`==#HPD|8`K2#;uFQ;>Wsl`L#P*ct( zPX&cH?K@ll8`Y~#XfQlYg=ncUN#_(-#_j8Q$kn}<1K?JC39|CHlPoFj@- i;?LH%Nrp(U)G&O#Y<^JiYzY(4cMP7celF{r5}E)*uy8a0 literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/ellipse.png b/resource/fr/gui/icon/hmi/ellipse.png new file mode 100644 index 0000000000000000000000000000000000000000..1ca597462d4144e7934346b90151a98f3d2f2f01 GIT binary patch literal 369 zcmV-%0gnEOP)KmBDesFc3u_OzxxvcaU^oE_)6gKnYF-aViKUm=4H! zFQxP&%Oo7B( z+5@Gk?)!X?Gv5F+RsHgPhDuj* z$YNvBuG2BR0kesKB zV~9uR+i8Y;Oo}2d^N(FRWWD2Th?ty%O>_8-qH}@HueGM^Z&b1L{GRW-xBYupQ{Bp}1-@AtFS%kG*gy2F$!)YP*nF+eRUv_) z>_FkcrR`S?*gqY#U`)?`dwYV1(E*XN#aVx3O9R-qvYs++=6tTA`8+k~uuKLUAGdd@ q9$TwfpV=q%EPbB8yF=9;uwGuKbUStWl?I@r89ZJ6T-G@yGywpd99>ud literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/equVertical.png b/resource/fr/gui/icon/hmi/equVertical.png new file mode 100644 index 0000000000000000000000000000000000000000..ca1a9d8a9975cad4e034698b6fc2036068f42d11 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px{AI z7sn8f&bQMx@*Xk}aE%v8v`)Pq zaqVQ?rJt{#oRV=3JMFfQPo^5wClw%x_)ii;fA3Qv65)B8#7u$tGg>APkr`sN;a zx^?vfVbjOA+&iSg52{x!=}`#Z_~E6l(!yLWr_kjJy7x8Gg4{ROZokA(XBVm2^+qcB Q70@#bp00i_>zopr08RI2DF6Tf literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/equalLarge.png b/resource/fr/gui/icon/hmi/equalLarge.png new file mode 100644 index 0000000000000000000000000000000000000000..0091d9e1a4c53fe483ef78227a8a698b2c77336b GIT binary patch literal 428 zcmV;d0aN~oP)4md|O!Pz=VulpG7m1jUe(PW1+D2gnK~BXod5+YLNI zMhJ9(v>T)+odTf~G|;KkL(bdY<%sk1_0O6bgW;y&_}xP2Ia~B-bPbDv9$Tu_J(8Cb73qci#e-*#{xej+ui}#LW8>kw|uz17%HnVw2Cc ziVZV&q4+@{g}g-G1wliX_Zq+hfF*#vc^>WU;0;SeBA4{yR$&VOZ_NA}@*h-@gM0ya z%EeTJ0ubrf??pihxdG6eAk6#&;2^T;2LvtJBeR6p%zQAFh&=-MR!EVhDmpFU#>s_R z2nwaU_C2YEoPk6xB5IvaR|}CGexmz|wq|F~^}5h~@+@P9h?;@|IzQ1<(%H%c_O8LJ z0??VIX5B`wGFGfy$wROjq*FLJATI@K^*piAmi7OCzgy#g0Q>=2 W;Bb4DX+d}Z00004l|635FbsuXii`&0BXoUJy?3aO(B3RZ=?&Tr-IIxH zj^F~>T@YXanUE+uH9X`29wbxzK#4!QaU8LQ9yXx>*ryAUea=WkJ|ib{&h6d5kAkmV z1e$ZsgH%5NP8G*qUvAw2IHVgn&`CtHS5cC;C#hHVlJ2dN3?y5UuaQkIqPfmBiUGg{ zfJX2{@=ZkER|Q!Dd;@3{0^n@GtZpt?l6vrJAcgcIGL-E9`$mny^m~j9*GLA1Jp*VX zqdV_)UY5d>_97y+c9c~uqQO%5dW-W^6OcwgvP-ru_Snr5nELP?-AAO?bTs4kui~vv z&Iq-rBEl_9kBn5`^$=loDtAY-G jXw6X7{{C9fHXs1MaSU4wcXX;A00000NkvXXu0mjf;<2S3 literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/event.png b/resource/fr/gui/icon/hmi/event.png new file mode 100644 index 0000000000000000000000000000000000000000..2eed17f679fa6b407ffdd1fcb6f5972c228ea53b GIT binary patch literal 418 zcmV;T0bTxyP)KR?AVtKn#5_xkCr!xVq6npaVKE>0nE62`(Y&ARXXz zkejYf2T*|-&%Bt$mNs?{fnm^$F5V}-m8{R+v~7!P$n8~F{v^>NcPJuH0LqEJN>!~d zA_A}h@Gz06!!F&^uIeleA;b_u8$zf(%t<>8vC+er|42mclax(KU5};hNW5aG0NerC z4)ZP|n@-bj#B6C(O(GJJM*szY4=0*}YDLxA6!eiNN^VrCYGd8b5@LJXERl%309XMy zdMP*~6>V4ayE(>j<71fW;y8bp^nF3f-M?#xED=v|$?f~pL4Wi`?z>aE3 zr0t%*+=$YfL=mw@N=^MH#KwUSpGZ{?N%L8Kbf6BUOqzUjZf;oSx}o87ZYtwz%D=H; zmsZ7^RY%}Ov(9Ua?3+PEni*^2sH*OoIJb{p=PbV5;r}b>mlFZ_1bRQXIu33P(f|Me M07*qoM6N<$g4$!So&W#< literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/faultRecording.png b/resource/fr/gui/icon/hmi/faultRecording.png new file mode 100644 index 0000000000000000000000000000000000000000..168f5d0415aca6645cde22972bd5cbba0dbefe3d GIT binary patch literal 555 zcmV+`0@VG9P)Px$?DD9?$gF?Ht zsNhg&pdE!yg+c|vb21iMNTGuu4xJqA;83XBOTob*xu;&A!5EX6;#&$i!@I-1@Bhv@ zoO{ltFbwlS5G(^U10VFKTLqnO~&H0U2Xs05>~8b!HAy z2AMaBAU#i3t@v;15w*NF#%coCBEMQ|@2TP?fGGf@s`yEyUjVE#^N)Xx_EgkcJIGr5 z&^Z+%%5@ji^*D}~`W1{Zb`#JBGe0@aS2vI`_VnfI#5i|}lxh%x34KwhK-=q~^Zs`^bt>g96z zb~bzCDG}DZGk`v0<_|qVSLHvsd$$F!JNP7s#+o< ze?^V}{qCH5SFKh*w>vQ`1`La#Z`BPu!~fA4253Xq?+jN#2H7{pd;&0`s*57B+q2gV zBG&Ir6xn?uOafYOHk+kOAOQ92LeBorC!+%JGprr7m&};-&AB#^Z~Mh!aU?BFqtVS@uk<=N7HPx%6iGxuR7gwhl(B0RQ4q$zZ*PkfSG@Bth@hAvmV!mZwGYScRTdTo6f9CiNWelc z_JS6c7S~^V?|FM=z_qZlut_>WEi3}ZWrcu;?Cr?QWi_ss;H_|lWV_v&+24HMn|Z{H z9?pn^Gf-ux|5NLNAn=t^^|CK%nr2Co90Wm7S4#OsJWbPKk|e|8JqUt1rPSO>argbu zx-bmqN$+DBBqE8m=0+GsuSo_)TtqUGc7K1c;u;CV)>9H|rTBK1aXpS-?*0K1ksgT` zMZsvqez&XN9)T7BxhWz(;DsbsMe42oisOUCF%*}AspVY5&)7!3B@bd{}hw$y5V0>}qr%(YWM?_Fcon#+~WXl%=2 zx68(8P698+2|=5DIiM6hG6zVd6l<$;Jd1mpsV+al7>^U>9A zx4ZY(pyPW4!2K*CdC!gRggxp5>}A>ahrM3!%g;Tkd{a(QIJ-+V3|o(;XsmK7qo^g7 otEVWOopn<*^-rm1iYnXp0~dKJj*nO`;s5{u07*qoM6N<$g6EDHvj6}9 literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/fdj.png b/resource/fr/gui/icon/hmi/fdj.png new file mode 100644 index 0000000000000000000000000000000000000000..d8d2d614111a328e2206b33625932244939313ce GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR01_nk2 zPZ!4!kIuJY(Y%KZcx?C`6v!81?+&NQV{Q0x%tftk$ zbC3Qs%)iH+GV`W_*p^M~40$$Yp^YXlxi0y5ZjD=MqaS;Yht*)VjC9cN{5+_@}LhDW6Zyyb#V?W-t>mR<=-I~mrwbkg~{^D literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/fhkg.png b/resource/fr/gui/icon/hmi/fhkg.png new file mode 100644 index 0000000000000000000000000000000000000000..2ca61c1acfa3fa6232f3cb9c634c332245ec89b6 GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px{kU z7sn8f&g4J;|JyU$G6=`!NPZDBG%_+XFf#g=o|00sV5RGmhQRI<> z2~^7l#0EdvMObC89A$T46Y>zT5N15Mpm~>=7{9#3K~~ZE4PyR`F09s!@|+7KdA`f8 zoN>eDLBq4%Y_lR-4wsipNJxBHktaCoeVl{tXT>o2ld6aR|Nrm!(S-TbU#B(uE@n05 i7~Hy}#BX3=z`&5MZf5pS+-g41lMJ4&elF{r5}E+CKVcgH literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/fileSync.png b/resource/fr/gui/icon/hmi/fileSync.png new file mode 100644 index 0000000000000000000000000000000000000000..5c10001103b761c9fbb079c0a979066f65526523 GIT binary patch literal 396 zcmV;70dxL|P)KR?$tvFciEZ{#(YlFR}q;gE9f#05JjW1TX?jP&NQI zNWX54c7mW+JxiA3Dv1M;khq`7=h)|W@8vnOrfDz*E+$c#Qs^=zNWKENAGzgerM2=e0vP6aCCxDxjKPQwf>_peWI)!qlD?z7F>h-S)<*X~o z-`}r;1)#E1a^_g(VsTnk$fS!PS*_*@<^V1_yyoj z(gMI0fUWZn0LBTqT_+LCMX*WI0YKKWfT1}Gc5TuLNj1q^0NG*~8j;!aC@I^PoIm`8 zkYPbGdur#OqdXQ1Eq#*@l2v9tSh^o86k|owD(+N`$@S36VegC2s?5KS%1b!F-knF| qt)yN;*{eKmMJ1i#|97hl0KNfOQ+e$$c~zZk<( literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/fldkq.png b/resource/fr/gui/icon/hmi/fldkq.png new file mode 100644 index 0000000000000000000000000000000000000000..06d88c13ee45f9e8e488151ea73ee6d92b0b6b4c GIT binary patch literal 710 zcmV;%0y+JOP)@L(eiT(Au)^tge~P3Tbr7i1_ z19tY|>npSkqd1KpaVPwvDW#T3Pl*43@2~{h`w8_+-3sMm&*CoH(JiKwZqiOEjpA>m zK;Djh%lira*Md??m$3@>@D85fmQo1IuoRba&g)Z38*nP3zKvJ#dT{=U#c_x|larG_ zHzRs4aAn}I@^-QEqnsrJ5xAf@z6jAwCBNf%tkVfcokw^+)hW zjPK)HTvaM_SC^3TKHy=_d5=;}cdKb~{mr<8ctmrw~^2)q}# zKgiqIp`=PJk}BnI#C$u}@2~N-V!ms`Ochb!9efevkMMr@$CSIPKCJ3~PT?#6KZBVN zTGotcG_W4-73{`mxE{W#obwZ0i}7sC@7CQBD!$>S(4xSWZo8&5&-HkQfyyg#Eng9R*07*qoM6N<$f`aKKmOW0xKoEsrP|8R+5(l823T_Z91$B+iE%Cf{5x*3Hsf&QX-m$hbg4`2&m z1K?Ka1Atf0ll*M+XuWl2_6Q&g0J-8S0H!2AVm{H0Oap;gGxm@=(pwSRR~VKM;V6 zp4T8dU4SBH-W62Wdr*nTy_voJ2k5IIcXxFV$tPXuol+jxR|k!GMwNO)dVyq|4uPQS zqgsOv(#6YQW?5j8=sdmw99zs6+H@W!^(Hn}w8C%A1?{4y^=C~#CllyL08T*Ybjjc^ R9kT!c002ovPDHLkV1gaqn6Ll< literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/glkg.png b/resource/fr/gui/icon/hmi/glkg.png new file mode 100644 index 0000000000000000000000000000000000000000..bcdd73e270c80bfea84e779433f905f514c470c8 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px{YQ z7sn8f&bQMp@*Xnaaao^J9DRXPg3(N2v5E8nj+qSGK3F(T?P<}v=^G`b_+Uwm>htRs z8!ziU?-9FYy0FHiBSr4`vjt1D*tB+)s(fc)YB-#t#VFzOWS^8v5ktYe&SKGtleZu6 zl|AXrm~ti1{=}4>%D&gvGJINf&uj7a#Q~g!wsIL&A5@KO|BG$m)X?onudKR?!VaKoDIQzcio$3ZM@S(0~TE0qURu8qk0SRs$NK z0GBt(Tz1{wxet-totI1ucHet5CL7MWuHp>bPEompzCy^=Z=xtVbOe=B4(ER~bzvA9 zx#xLL@6$9DK@d=$W!YOH<7D7(gpE~IQ6x!1gu^gUv~5dko2H@bJkQuiMy6?^D2jsK z?S3QODab*ll%m*H1tU6q-~YTKpznKf7ss)&0q(gXm|!8S>$;8%avOImLd(z!5aoF; z#&M))s8ok8vMdXU)OBsG$SQ=zAm@IA03x~&x0Q#6g<#AE*Y=Rx1Aq(!5N0w2a&9pO zgiY|UY+)4wQCXG`!R=-Yhm_JVW6O2C9EKzC+egs#&u|HyEF^@u18{enJ1)n58UO$Q M07*qoM6N<$f)lio?EnA( literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/grid.png b/resource/fr/gui/icon/hmi/grid.png new file mode 100644 index 0000000000000000000000000000000000000000..2febe7705ac0f81c3766d855e6a51ca787339cee GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkSz{ zi(`mKXY!x_|LvJ=8H8hVB)4`59cc2saP{icMIxK3zvsD?Y;620$dgbkd1m{MCmR|c zPM2t#?^+?uyzhjnDK`(Fe6QO3iK!Pqc;D+;+&ek2JAr{gY^h@Y^54s%fEF-#y85}S Ib4q9e08E-VegFUf literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/gzp.png b/resource/fr/gui/icon/hmi/gzp.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec52aae6a26534a0cd5e39893daaa16fcee3082 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px_}- z7sn8f&bLz!avnC|ajo}yAGy%|qs8wTkGw-1lCRY@9{%G#} z{Fu1kCt%RjY)M@{23Z$e&*1;b)9oeMfj{bF3k>2TR&KhC5r*pVqQIJ&?XGo}uRH+Jg+svc9Rkn6qy6lJsp)mVfhl z8=AW=Ep(UKDTPHIE{@gzd!|g>^kx6Gu9$bT#CGaNn_pYIv;7zEZAaNF8VvG>go=A> T{~kCA^bLcjtDnm{r-UW|-V1QP literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/hgq.png b/resource/fr/gui/icon/hmi/hgq.png new file mode 100644 index 0000000000000000000000000000000000000000..cb37d9840ad7e39e3dbcd0eeb4f44a5c887a3753 GIT binary patch literal 327 zcmV-N0l5B&P)b;@5Jlf^VOsa;SL>3TA<6+La|fVK4!~771nDV|0+Em$I0Ze$P%xH^jThr}<$P&1 z(){oFE9=j~&|pHOh}3#nmI*+f=e2K*X&z^vzgsu_Gb3Y6?X=-ykN`7aZLJk+tpIE7 zCA~NRFTfU%hO<>o6q1t35tumV#5pIxM0*14fKiOmR0kb^6u^5g-uq&~Qs7TD)6k$t zsr%6S37qcmC*Z51?PT<-^*f+hX&uKHwL$S4&oM?nTHgYicdh#vqovjb8ioo|<;vPl z7;%kmQ@jt#{Sp~(c)YMXdRW*32`~pXr6*{kz22Un8&npyHG*Lfk=kj)J#Ew{hG#T9 ZTmakpW)s4W-#GvP002ovPDHLkV1fPx%vPnciR7gwhmOW?`Q51#Goh&3picKmD!GI|uC~RSoBEz9G2-z?>-$=@-F8fJ?6H z-fas~%60*q4}#qbog(T)*IF-A^gl-p zd22Z$nXxQuzEY{&E|<$;$ErI?j(p#L-z~2v>Z8fY$y2?(y>oyllC>fdk!^tMQ4}q# zt*w1)25@YU*7_zOOCh-3)J0}(tTxe)}FiKagq8v-JDp7+c^^Z9&V zHaqxQ1fx+D4yTq*YyB9Ic@c~_j`O9tlcPLSDRmZ*Z4o><2FTw0E#FtybtewW)y|x? zwo3qp66Z(+MaOZLmC`>=gs$s8Yz2uRM>dOso{`ZgK;nL)9GTpZa?kfWf$XOMbNlc% zprl@>wY>#!r&YRk4Qr$$dHNVRs!IWIq_wPDVM?hX5z7R&kQ!8XgT9X>HiBUHTD#wW zy}SoXB4WyWzZjBAXQFPn!gG>kfOkC4J2ccxO-&73R%THI<8h1|#vPH3z8hkaS<^tQZ%kmv!MNP3!hAXbaUalaiSVU(M%YIVoa69)#eBw qB4!=$FHGxIbl* zx*O05%nx4E5V=LMgqxErMYisJ&eJ`)NhzU*?y6804ITcS)l|v2yHj=^=GESYOC@BEgxF@Sz>W%<9N&O{LPM*%Sr?taRde5pgu%(5< tT+eM%_n#_xVMDEFBKVr6<+g6|pl=5LI%|zhtuO!p002ovPDHLkV1jd|k;4E0 literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/hotkey.png b/resource/fr/gui/icon/hmi/hotkey.png new file mode 100644 index 0000000000000000000000000000000000000000..6c057b65c9ddf186653ac9d1978747a9c0203e1f GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkTkJ zi(`mK=i8|ld0Py4obL)VZJM?j;Ozrx%{>&*iHh^U4-_XzsG z_{?$Ck*|t1UtP)Kmc2~_K@f#M5IKZonD9kF1waS1Km@UB@nTxD(2s0ZCd&>LlI#DrkuI z4|G(sNYW)RAF`&_(E>PY4w7_Y7x;!9d+5CxNYV&cr;GfKh;;Mm;nQZIh*&!x>0+Ml zfXO#l8<3S7uYe0+77>p?IvoSIz_M?H;-=~&T-w>aVZ|EMy(QfNPY$mlqSwhrgRXZ( zWUd|@Zt~S0WY`pVb{!QLZEeBk5xxP}l4d0fs$W+ke-KrDt1uvvbkRO)FH~;_u07*qoM6N<$f;Y&EFaQ7m literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/jd.png b/resource/fr/gui/icon/hmi/jd.png new file mode 100644 index 0000000000000000000000000000000000000000..f15f4a034e28041d00554ac76ca52644df0d6698 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px`o3 z7sn8f&g4J;|JyU$G6=`!NL~@k%*y)5o;WMoMNeXD#+5~Z-E9+GExhx6eSKNk*w|Qg zf_^XDqAa$P{rdX&`i8SMVm5sq2?+@+jw|n%?~YJrW_D&?Db^TMCeUxAXB)wISIe%( zj)~dV_beNeBL`D2P}gy(6a#|~EBkIWBwRSyux!~g7NEJzCJ(uRa{3Bx_7}w*bvLSC jU%dFN?k5IjW@d&{%hlIi41ekebTNactDnm{r-UW|gziv( literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/jddz.png b/resource/fr/gui/icon/hmi/jddz.png new file mode 100644 index 0000000000000000000000000000000000000000..5e4f6eac87fd4d83439c8a76ebc405f76d076d34 GIT binary patch literal 371 zcmV-(0gV2MP)Kmb*;@K@f&NBXUy$h-e}R$hi_I!L9&003-@96#yX_ z9oTe$qlu7Q0!Rd8hgOWAmxQk}_Qhi+NcH)gK%E-ZTo&Z3sN z(mS&(#p4*bi$L6<4EAi@ufag3@1h+H)LUI2Y>LS;da$ZaejD$)y;DqH2e&Afh}=|` zY-;7gTaT_Q^U3l*0o_*StM^@`@SOsSa$Hp#&;Cd$PuI|SVEvZKR#A@-be4Z{$_Fo?EoMNt$S^I8l@hN_yTQ71wYCIQN_ zqz{BymeE?C=ZCG^B?1Xrf)-+InkL=R9#FutEachV;afzU6dTdTBcK=*!AR4T?&)nJ zv}m4ZQP(w{sH!T}8YD*nxO~KjZ}D&&SuD@k6$20i0TJlBP62BR0px_Zt z7sn8f&bQO{@-i9nwBA>&3R_TmG?zhnBja(l9u{ebr_%)UniVFzd^EpBgLRks(v#hP zRQo;~FPU<|d9~h@c?(KY1O$B<{JLt>o}KJo_--Q0|Ewv~F2~+-m%73f8p>(Rzq3xi zl%L_a!egd{e?eC1Zb>Hv27d~}gnAqWDY$kV1AR~Fn8jsWEtNj?_luFFk U1j=$82l|J>)78&qol`;+07`CW%m4rY literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/jx.png b/resource/fr/gui/icon/hmi/jx.png new file mode 100644 index 0000000000000000000000000000000000000000..717bb364f6250238d3c812f72fb0d0cc2d033a76 GIT binary patch literal 366 zcmV-!0g?WRP)4mN9C>U<`#ng&x2s2$?(O2tG!KK$9Dk9w4+Qsi)8} zM+o!|olB;ShAbTde^7V^<4G#UgbD<|AC{hFJ&E5+DNJFrNm!;NdWgPgW)-joDnTvK zlv3JIe6&X*It<`?bfO;FQIGQ|37KE#=84Vht2<|6Js|AB61d2hsn{fmSMe=xGh|Vc zN{M&CuY4!0isT5*k@~R$9$gc1Kd(krT~FEz;8XAu@Dr7IW;5K90w;MbEM(a^dJ_Sv z&^JSjEGh3Y@H!fMmrK=!@Ge21{#?RL$vJ9zSd*EfP(|8tFTjVHb?`H=3Gci_MSEb| z6T?>6=oR^wzbZN1dDMyqeL2gUOlCmd#DWKoEr=h`Un)*LNZv5IS%Nq=b~<64F6T2PwgH zkeud93Ah5ImEKC0*&UV@L=lX%vgCblzMcKEZ>DL&CF1rXl&c1joI?9`P;LBE5Xo&# zUonW}J;@V*gCjcxP0&_>WDJl80B0x1SsEASRdfW<0C)kgadaDL8hOe=n)g`A&dlC( z3DmcXmF3nfS5Xvq9%KRQ7TzMzBY@G&Qd9AywuA-kDDS7Za|U|KjDGmSlLTGG&9JV> zm-Xa8uVK5AY)c8!Hu4sOdObUms{+Vsw(I(oCJ8dLes<#b9!!1vc<$sa11VZ<*Jl7j zY8v%!kY)Zgt|9XCy3qpPR04gMK3Z*ry!8 Y2cuhNP0?o{(f|Me07*qoM6N<$f^iz4bN~PV literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/kx.png b/resource/fr/gui/icon/hmi/kx.png new file mode 100644 index 0000000000000000000000000000000000000000..82ab0e8ca7be9782b9ab773b6da519da1db86bd1 GIT binary patch literal 480 zcmV<60U!Q}P)KmOn~EK@i4&BbFBL2nsnsE+D+pLeb7nattdCp1{`5 z%El(CEEBY`5X=EmXk|KMp`^;l!mMmwcGnjT0l|e~vwvp4-EY2`7g1GK(biUi@+W~r zye%pySIT`FJdKVtC z40)dcU5lZMtrN$s^|fN;g5Ih@U18J>gIMNcWKQh_a0=n8l-kQ9Qy40e&h#A;BFm=fry-=od`xiwkMa0K_zaCTT|9`iB)__mm W=j;`RJhnjq00002BR0px`M_ z7sn8f&bQY#@-{h$9Q$a0?AVb*=L}02xOMHK!wXo&3)sv8)C{hzU$}8o5p%S)wReu* zu?fx&6C@5@-*e}*>i#{}3M`(JF1S?nYOHPfwQt!HE%9=r&5^r)c6YYzTUNekyUrP% ze_I?cN!{4_ly%1MZ=th1E}8YtxVg8Ct~vk9z+Ro?Qi^6`9ARCmiLQqIm&+Vy6~6v cuk9BWZbd!Thyp1=psyG_UHx3vIVCg!0FO#=#Q*>R literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/levelDown.png b/resource/fr/gui/icon/hmi/levelDown.png new file mode 100644 index 0000000000000000000000000000000000000000..5943b3af34e0059375dff45f8b9c6ef38af89c1b GIT binary patch literal 310 zcmV-60m=S}P)4m9Y(jFc3u_QF>Nj1e68h=FdS!%LwVO2w5Ovl}tbi zuCNdZAX^0GSJ+1PboRG@(f2)D=&%U|IK~4>A!l(jYbQa#Jtqh#K7jyUK$i%pfij+$ z0(E8*3ti+(SAUZs&DZjDM+f4LBIvLOS(=#t_;y~$pN}CL`M_D{JZhB+gy=Fu9H*) zEu)NaNHDY6{90rNFBH7+Y6z^nN8Z`fho_~G)u0sZ=N{$K8#Z24k-`g%hX4Qo07*qo IM6N<$f<&l(_y7O^ literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/levelUp.png b/resource/fr/gui/icon/hmi/levelUp.png new file mode 100644 index 0000000000000000000000000000000000000000..4a800fb56c6c7887fda63c7124113625685f0678 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px`S{ z7sn8f&bw0&@-`drxYldEGvJaI;oE2IE> z{%=8#p@q|QXAMgQrBxj(era}eWHAUgcs}~;_$i6k;pEcbgg^!MAgj}y85}S Ib4q9e0Fiil>Hq)$ literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/link.png b/resource/fr/gui/icon/hmi/link.png new file mode 100644 index 0000000000000000000000000000000000000000..58167394f5f90b2c646b5b7b40ef1f0f13bb4f12 GIT binary patch literal 1141 zcmaJ>ZD+!!c~!eAg2g^^8h(+^S*S%;J=qEb-?gCW?Deh@)rNQXXGo4OCigS+R2-|zST z{r}JZx$klVpLtjJtfnZ+o6SghGWNJ{M?3lc^7)>-WcV1TOSpiBa8t>98dhHJy=vs{4 zAC@`UO2LYrsoStnA1JEz5jCpOeR0rR6N!KUu>xwwsOgBc7`><~lDWIh(qIvSM`H9_ zQzbbEQpkoN%y52{i*O*qGkh>42*OSf;CPPZ0xTc!^MV)*h#Uu&9-2h6wIMMt^)JOD zs~BCu*b-T`TCFnGAcO2-mXAiGu0|l>CkVeYZepe8HyvM7L4uBI>lW6L30y^`jK*+` zCQjd`U|7qtrn6KgQZTlrSS-(QZc0s{EPohk7|Un}=ixiQ?-h26;}&G|&_QFiN)B$w z=Z3PxlnoV(>>@&=%_`<92qUM0ERZUM!G7J;P}NyP%d(g?9jurt%t|qu@EKj##85bp zN{4nwxRlV(^JyvBpNyorP&l|N9T9?Ip~;nyI%YrmBT(zN zkpUJH7WLL%LM`={xLRv3;g(#Mm|@*x{ogS+w@B}})8(cmi{-Y5Ch2vXH1)&3db-Jl zc#@Tp#oFKHh1ak9JTYp$=j?PNeSXv2BYIPJs!%9UnT-j)ulTQT?cS*`|Eqf#&$ka} zJ8u7;@OB-ah!+>Y#MM*xyT1Bqja8B+;@cXJ+Z&I+Ph9Mnz?8Cf^Nyc82Tz(G&ApnA zx7qQ;b#H!wy2GsmV_P?DNkmtKqUT=xxwGx-N6E%W$I4C-G&;B6%Z&ay|4H!jv&m0U zZpYc>N_zd|^L9Px&Pf0{UR7gv`)n7;iN5)qppcaKa7Ri#x$BG;B(yA0hhhcc z$Tp|TIU~qF!4|__6kLYwB8UYE`eqMeg&;lYL*`P#A%@~~r_L>HyWV>zfu6_n=l40k z^OxY13OOYQDIrSf4FF95Y=n?6|2wgi(DwFrP_NhD0T2No5JEmAVm!}hO;1m6rJ8^y zWHwvs&zwnr-rCx#D=8^vu~K@e&H5+a1?4gzr;hx+<@R904C zcXt;(Jx?${KQBu_9XkRkA&JpyYinV#R7+TIZy#o7XOD#?L2`s;k(YNCD=XiUf?2KC zV6|GYzrT+_;030prcz>ukQ`zA;&8O0xVRWyU0%%1%_(B6a%gB6;c!?JlOUx`+S(pU z$i~J7+S(o=5@Dx1xl~nE!DhQDRfa;ZFgiM_iV?H9<}$}o5rF=nS4G7o*zI-+ak<*D zv$KPuqH{+eRb=57CBS#=Dj2)29&Q1wqC(G${DPl^9BBX_7XB(FT zfj~s3(_K);=+kgG{6HyH&5utIEYAqRT{e(Xy3BEe9~&F{0bmk9c_KzBdPVWgJ+<{r z`IY~92T>4@$3x@e2BR0px`b~ z7sn8f&bQMx@-i9nxW)_E_7o{!*pbd`bg1_b$4=fCcMT5Zip;X+T!{IP|;J?>zU_+q6z=mJ8LEZ1Hljc_939!K#H^96OlW zUGf-KHToT}oVYuZ$44P_ZsX0cU`7uYrUK6;>Y-oX+x)tl|d*0JAK~OHOk-rvzGE#F}%#y+cv*i;4jb@44$rj JF6*2UngG)vV&MP) literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/ljbyq.png b/resource/fr/gui/icon/hmi/ljbyq.png new file mode 100644 index 0000000000000000000000000000000000000000..42ecedc9564a2cbcee41560506b5d70097dcf0b4 GIT binary patch literal 467 zcmV;^0WAKBP)~a*8F@dhSIEly%z$<`< z%FsUall*L3qxFtNBnPlDU4_<}>3br%_11BZPDJJgYI$p1Da@U&wiO`Z!2?Z)`fM) z*dUqOar8M0XrlC9n&XW24q$Bnj;TdFpg8Fnz|{0xdM~sb+JL+}+5z}BARfJ^>bvU= zl%lC;-W)HFVtyQ)ql*@Ok_yp<-YWois%sG-g6wr{Rhd&Wj|_iIQqfE%qpFAtsD&pi?gIb-002ov JPDHLkV1o2u%7_2} literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/ljbyq1.png b/resource/fr/gui/icon/hmi/ljbyq1.png new file mode 100644 index 0000000000000000000000000000000000000000..e8384f45975b2d5479aac2aa6cef106e0797a110 GIT binary patch literal 533 zcmV+w0_y#VP)bFwri0Bl+J%EeU)Qi$H^V`NiL=*yO8>+s1D~9fhnLDm^oT($CssZu<;E0*e zRa1S@DQSys_K1k60AK{*(A+T*C0}L^QxSgxC^GXnYeZE6=^G#_lA3DLhs^cG)*6)y zNHfdKecjUUqDW5r6iQaN)hWUK{-8lGi6h*iAn`SG}D$m5Pb1s)VnayU8s(GGw zyuilFIv0?33bkS~nIyM?@B7hoI=wb*!<0`Zpq^Zm6(I)VI35Q<@DT*TlQxpMirDsS zi!G}ob>%$EFsY;AaM%LyS}K)VsXDr3=JkNE#fR_zJmm{O6NWLf_29Pxw65&tzYf3; XrE0vsCBDpt00000NkvXXu0mjf8rtov literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/ljbyq2.png b/resource/fr/gui/icon/hmi/ljbyq2.png new file mode 100644 index 0000000000000000000000000000000000000000..20efb02436c1afbbdaae51fdac54a612a8f9c69c GIT binary patch literal 512 zcmV+b0{{JqP)`t$$_hwtMEIqxSRCOt}*H84G zm?Sd_UWDrrrSsx_k}pINdbfcMyLb=aL3(CuM=?WEh~D;SHf;<^Q0631kv8!qSVY`Y z6aQenPm*<`fPBzL79z4`bl$N!kxwZgcj^asA4UwUCwb}cNt#XbO}^e^wF%$?n6vdO zuwArG{Ex;LfcFhoMbKqjJ-)fzj?|~X{bdB4<4d?=b2FnUkBPr@+n(BEAoPkyh zkW^fOB{1{!RFJG2Iz>{a zNT(GQ6pDEDK{}axd1qKgqUL7@^gkU~-9b8?t)=}^SYF;u)~UC`3SAS0A!_h@iXNAc VLmL!uZpi=u002ovPDHLkV1i-ji7x;E literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/menu.png b/resource/fr/gui/icon/hmi/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..9a2b3018831172f6b49f895f9f3c77bcefe07220 GIT binary patch literal 369 zcmV-%0gnEOP)4l)-JoFbqYXiw=+tJVK}7J>JA4XoPH%-g)T?8NnN5 z1Lt5Wl_jc?12hQy0mBISoljBZ@8)^t75I3G$}WXIy`YF3ffLYMXaYu6{eFfA(B;Em zAD=6Q4e?J}c@bXgPWHY4gFTllw}l5}trL+0zikLf^;q@&7T%*1dHAU%y!-I55>nMG z%Y_02yN4Lhd3T7&!MMRf6B)dz8(EJ31)QxNRfvdZEn^-iT4${oys8>7;Y=Jj5Sn+w(%`6Zm^%vIfK`V zmRyR}FsSNPL?){!B+D8rO?Ru6R|*+c&fw&>@_=?{C^o*87qLHQ*q_i1+nJf2nX>v} P00000NkvXXu0mjf!FQXR literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/ml.png b/resource/fr/gui/icon/hmi/ml.png new file mode 100644 index 0000000000000000000000000000000000000000..0b901bfdcb552ca25534e576b7dc1ac2a0e2a026 GIT binary patch literal 468 zcmV;_0W1EAP)4mOW0xKoEt$hbSr1Ml?QxX{abT0!Q!>I0D>&61s4M zl$4d;5jY?o-;KJgvEs04#F-#TARkl`VjYfgiqud%9_o$7t<`yLB(29QyT>9AN zI)}%Ec4cvXoAwPGv1tS z#e~9=y#imhK(48J>?iPU&qY_)`8PQM&VXAZ*ImDhV8eRsIdE-jj2plXE4f?3f`)At zv@%mo9!@0P0Db3Ne^G1a@-|yIQ(#BZGDoDe`KG?;FUFdA9q2BR0pkR}y zi(`mK=i6%+IU5XkST1x6TTWVB>SAue>GI)llX&Kr#jU?Jr?9JfW~&5loF=K!mZnA80SJ7!+Bgi><;^}=YODFJ5a|?MRx+o!)_xIbYQ^lM!E5C10 z2tDnm{r-UW| D1r17B literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/mx.png b/resource/fr/gui/icon/hmi/mx.png new file mode 100644 index 0000000000000000000000000000000000000000..e44baa69b272ec61fe3fb4d57777d9580ad897d0 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0prE~{ zi(`mKXY!x_|LvJ=8H8hVB)4WKmd%lZKoCYBTi!JUGtdmw!80(NFr#_s-;?cF6wOJMoS)jqE! z-JPK{rq*arQxjibp8co&Q$eL?Z)xV{3|wO`CV^Z^?l9MN8=&axx)^93*kx60R)&J+ iBKmN81iKp2I;NJ>S^Z4^Ndus7H=|2eeq05)F08+ZiI zVELMe+nWQd;Ij52SSqoZ;F!#AW+JXl9)w}upP7$;@<@`^b z0?Z{{vPx%yh%hsR7gwRmN94(Q5eVnUpSi-I$VN6hZH-wh#e}ph!syL*c7ezPQk%0j)H?j zHwU|jgMx~>7j*5t7ZONCg%c_$D%C+8)Ip5kPL(JhmrPPb0Kq16wfbIf#BBi@O3dDL-O1A}0x@_AXCrYg_^Gl`V-hU4Yg60mx zFrEQ48dFu32otXBe)v)An2PFkjHJ`NLPXo+fS9=ku&(R-KLY)KHS+znLDS4#2C%6{ zLyyT=Q4lnD8^*RbQOTIGpp<*27pPEh@|g@iGV`)h@?g*Q7D60~vY{Xd z9+yg`RmXAi%zS|vQ$#eXZ3n;-5w1!pU(L)o2Mhz%b|BPp1_n>1Qmn#|J*_4R7KR&Eu~>W>X{tgveH96D;tIfX%$QH5u+SaG zOH#^0Vvub+Z;7x=CuqZ%u?!&JnUtA>Mx#DdsZ<(?ysoXf9jv>M2vY!tx4wN4&{(Oo z_&O=5^(%>EP0i-le7Riyln^8;0BHsNR#i%OByo*|5XS*h{V2?MUaPGg_B?Mrks=)= zgt!CHY(E&l%f9ayI$=L&2GJxUgE`D9rE1+0S(as(X6_;p<^W`R19{2!ec^dtU7u?Y zC-;dk$&7aZSGy!wZ#3v^rQ%lgWi6daf6j;U z`xMmCojk71_OGU%F3K{dnbUSP0q}xS>V`h|4fQaXDrGk882|tP07*qoM6N<$f+Yi7 AC;$Ke literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/paste.png b/resource/fr/gui/icon/hmi/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..5e334740075b26e7fc6904259382323bd4c53fcc GIT binary patch literal 364 zcmV-y0h9iTP)Kmd$O0KoEsLBHwAjCD1{f!>c292k9WV5^x=JuseuL zpoF9Xa$sW-w2Q}Ui(K*~B=$%9&Cc5$DEhu<2|X=BSrWAJOp@fy@6OEHY*5e_aE|m> zKpEZ}NyK1Y&>rYw3rIQv&%gnAO~H!ssgtyEKtIjwva=EB1y}=382XjQ>0vlJo)1ae zSOj6=U1&Dru~_PIy*NsW@spslnQf+>DK8vBB|+EJ0w;#lGz?z6C4#yr>%z`?ky6f% zX1#a>$mPY|ps5cK_u?jyq#AgSzzT0*Q~hoAHnSS2f7+hv9je7PG%FVb_SYtuSqF5f@#$xxCtXxys({jS8e=;uao&wvRQ&&LR9sg80000< KMNUMnLSTYl&75=q literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/pie.png b/resource/fr/gui/icon/hmi/pie.png new file mode 100644 index 0000000000000000000000000000000000000000..491b41d2f675334a6220a62f839c22e86f800476 GIT binary patch literal 464 zcmV;>0WbcEP)4mcebpKoCVAQSQ(|O2DZA=P+m7K}-kfASFNtxP!oX zE~J7$2c(0z0_U)^k}+d1L=gwRWZAnK=K1gJEFLvY!!7i16UtqJ9#a7#G671U0A|38 zs_sOj0X~5puu|2Zp*(|*M5F+Yz|tUH&472{C?e&bK=#8AU_6w-GzQipQe6cyCu{{7)47_!Nyj@q= zeVcF+wRGn4?u6$kv-|D>NT1GjsOKmy+n^g&9bH3CHmsveM3OfxW$LA0*atYEy2LkNW<~?aW%YrnZ(aZu^W-$9XGep{kXauNP#noUjZ}y+J`W z!O2-|E&>^BLO7NRf`i!5HNo8ms8VNQ67*lXzmJoffqntr33~4YPzP-Q00004mD_QHFc3wLGx^6QPy(qSaDO45N`K?>Lp z=pd9p38n(_p=B&%#3K*qac7v3#NEBx(ba0xbse|B-Az>frO^Fw!5H%lWI!z8~z^?s)O-#d2T^yhceLJK!WDRg7@ux&dnZZhN%&%D`9BSLpCn zM=^Jg@*r6Yq#|-q>!!Mfa`Mjzg*J5}a_T2Kb`kDsp)bRnP}BaQu~-B^Imbv2VBB@RO;Px&DM>^@R7gv$mQP3&Q5?s=ziA02!`+QQsKCIeL(nPcAT$w(n5^$jMTG@ILH?4h8o+4;54b!Gh9+U^{O-|v0q z{r-HvLs;cw+jiCZ^&9F7X}_n^>GV`7M^Gt2wrxjZu~<7ZIsh~hQ6!W%$sF9uWHPs1 z*ZpPQx3(VMWLa51l}ddp#{CoIIL?6}Kpznrn0bN-BLF6IIrv1_OoUb->R3r2$8jz(<08Nl0M03;o-I`YDdjGJ2AO#W5jp`fIa(=owj_`c&MN@p znauQsVp*0ewdq|f7FYTBW)s7VF0GSSO9GYBKNBN_bDan_Gd>Z`fU1~-Lt5*hih|nO zoFhbh9KcQ@st0)7^SpiGD*SU8O1)JvuBoYM-PqXJ&xLsv2QBwu^FXGd0DRYV{ng%N zg(0bNUH8WfD3M4sSXQJ5;NwIzmCN~dDwXR@ixZCjMsU`9q>Hwd^8%rTrfZ$P)eOL;6U)c9IjTI$xWtvc=dzXuk|*I%fKmAeswKoEvM9dqqKOP~Xz&FMfpkPgHSumkPDd?P!c z1n593z+}~vfg4cqHU7!X?PI=yeO#|73SOc9ODI1H8ng)(kq}7i8ma28X>PAcGl)oF zfN9CKH(>e@NJK^km^tQ^olD2IHQ=E&NJJta28L$Z19Mf)%s&A(T)*-N#HyN5p-Pa5 zWWd<2Ii7krb-To?>ZBZ3*LCNlH4ylUZoa@`-P}f?vv$7!?!XR!w*!A~VE>@bK%s31 zuPi3K2b9~n08$&uI!Fkl7VGBT=)Eh*fpx!BOTccQi3(u158pHNF>~~Npc79QeGd}w RrNjUL002ovPDHLkV1hnkgxCN8 literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/protectConsValue.png b/resource/fr/gui/icon/hmi/protectConsValue.png new file mode 100644 index 0000000000000000000000000000000000000000..e5b7c6659fdaec0a627978f8fea0ccb975cf76f8 GIT binary patch literal 1205 zcmV;m1WNmfP)Px(Z%IT!R7gvumS0F)cNE9JC&@}mVrN1h_E3V-Jt&I0%B(9L&A>sSin&o~=lak} zp~YHOq_93XwX6=?4W{Tr2d&!onR|nZ!&;h$fg3|~urccfI&m1>Xi`KPHMwUw*ThAQ zf9ifux%r*n`P_4U-*e6-?6Eu^PbOgc1i(=ueyFPI&wHIow@>5y4(3Wvjw1A#zPQItYvbP$m{>71D-0h%OYO;uI@PEb-5<Nhn_>r8t`isD@oV`g*{@l-Tw3JeVN z|GJ-axZQ5+kt5Dxvza{r-D1Y5rujbH3B!ps&TvKSg<+|@MSXGz$B zK_U=wCXSiWN5rDYV?<~LsA(O}gP~BUM#OR;P(?*mj>W>iCF-Y1Rn;~{@y-CqB0^Ry zMmZ)EOQd#Y{fee(j}8Qqf^|3?pU3Ozhh$x(fs_b@prFTQy>olex(*W<*AcVt7F?_~jr!g6#yR_gcrf7}P?TKq0< zOC-I$z1z&o%g>>%t`1M0jN;U(_h7TxqK0A>Mfoz(r}{L_cR3x%?>gH`M?$MTk&pHk;4h zzkkmzbuuwAfv&D@gu~%Ytm5KgG&VNk@L_5ExI{#ccN%ubh6Jjg4V`{x2Ll^ado7{CxTJFjgxO-H{)=es0y&)VvvuM$1Lc04%yrf0)hq zPSVNDZvpr^{&jRAP3qKR>5tL3VEF*aj zU=5%Iu$1cz;N9(J*2L>BazwJ#f@6Z~6~G}PKr}AQ>|&1vu5mQ8qK`pJe1k@cc2WUF z;z{-c$vjjxHb-lnypggPFY+xlH>oIvQohGvPMFisUWWUORpcjq^MU~I>7W0{W1kb` zY!cCAj18Sv)Q04yGpJJ0Gd_p*v5LA1+bdL#T3=`1M{~b%Q<0Y^fNeKc$#<8uyRfTh zSta{9uDVf*bT0}K?PM;43fsw7#N8p4qb58R$?y{AsTSnQNUl_YgG9dB#|>qfE@v-D zUYS!w-fA8a{!zF|WM(Hd&p#u|N&c1~A0n#NyW+B)f;wC?+nZsq1(DqLg`x+QnN^dC kMDmkRCiD9L+?oaeU&d8@eVmSc6#xJL07*qoM6N<$f@0IYhyVZp literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/qybyq.png b/resource/fr/gui/icon/hmi/qybyq.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa8ec828c9abc77104065dc1cc9eed52449b6de GIT binary patch literal 548 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 Zz5#MDto_}YX002ovPDHLkV1gE+xGVqw literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/rectangular.png b/resource/fr/gui/icon/hmi/rectangular.png new file mode 100644 index 0000000000000000000000000000000000000000..42e9c5aae32dd03f06afa7944c2d548787964dc9 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkRQf zi(`mKXY!x_|LvJ=8H8hVB)4`59cc2saP{icMIxK3zvsD?Y;620$dgbkY1g2y(iWd2 zu{Gn$qQLI939c2Vt-QPoQyk3Y4g1Xe+;p258Dwq=Fz&a?o(MFX!PC{xWt~$(699C_ BF)siB literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/redo.png b/resource/fr/gui/icon/hmi/redo.png new file mode 100644 index 0000000000000000000000000000000000000000..ce5c628447fa336ec541a806b09e7d7027349bef GIT binary patch literal 538 zcmV+#0_FXQP)JJf_+1xEn9&AchySFuP=b~re zR?wFP&RQY${I)Ir~z=~sTwvt*&4N&=B&AW$H zem91$b!!L7G_xh}62v!7R5IpH(k#hi=&EQ*hTDQ{6$O$SNh{zYmq(&`sRt&oD+#?& zdU_(!tC?-x{fMR@dm1sIiRU9x$Fa-*m|2q(dM>Vj2mf7_ddyoS_ST^4n(WZE6FvjA z$G!!o8W`TodeWm(Str8AV?PS7%ru01x_U(3q?-{vyQxBPBeuRAH2h%JNm_HvRgR9( z>49WPHi%tE4`b82qCdx4U{JEzqnN_gG17;p9=;m*or$I%zD>!Ke2BR0px^;d z7sn8f&bQMpavm}eam_zkAN#oOCEF{uyae~v(mNXaF6_5%7j|J1b&{%l$|SJuOQ7fU#EA>M{*QaGwnYKljtG-P9|5C6aSajkN*QKAkwyDI{zyI+r zDDX~q8N)lji`6{ABH=}T>wX_HR&7(+{q+0U;0s$G&x(*Qv(Ed;@PTQ`E$f~@^|rl0 Pzc6^Z`njxgN@xNArlMzZ literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/run.png b/resource/fr/gui/icon/hmi/run.png new file mode 100644 index 0000000000000000000000000000000000000000..d58786e5c29835f75bece1aae8a203641eeb532a GIT binary patch literal 405 zcmV;G0c!qKmeEbbFbsx&5bwPa?$uA%5nuvfgE9d(LPt0z=xqR< z07fWJe!UUs1VxelNWpc}194XgVJT9Z#QtK(c6%`l1I{6rXQBK_(AC@q5m^DKI5uYa z9l$;eRsG1>$tHt{+|f|MsUASb=hDnqs`~P6kcb2i8osswYE|vbo&c)>+;ZwcRrg1O z=*jb(^2DL;Jgk)SJ(3>7${hbp7c!nQdQs5b?OwfF$;=ylV;rxz!S$hQ(IAIw7y)yazm_xCQ~yW z1Z=LOPQGkYO$?p>Gm*ef|Ka;h`Tq<0nE?0%6d$r2BR0px}B> z7sn8f&bQNi`I;33+~j?~R|)TJynANl%^T7$d~XR~;5D0S@K0!#z!j`5hjU;-a$8E;{j4m`!}T)F6~fzFYtwlbGou|lJ3 zvt7gYm~OeYHQHHV_HOr(i5e`z&wkytI>mldS8H$VQ@I$R(-}Nn{an^LB{Ts5ZD3>t literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/saveAs.png b/resource/fr/gui/icon/hmi/saveAs.png new file mode 100644 index 0000000000000000000000000000000000000000..01142b6bbff08bd133477f9b84bea2c4d5c1ae70 GIT binary patch literal 356 zcmV-q0h|7bP)4mN8DlKoCWr5gm;=K~hj6g&UA&dTx*$fFd`*oPaC% z3e>*|H-MfZ+#pEwricxr%^I`BHd0aa59QzOwp-N%xn!@_ptB1 zq@q>ic&g(J$Xy;X1t!27uyOewQIVuMe4nt%L(HrI?toHK;qpC>uNnTQ>mpphSFK`9 z>v(mj=&X)iEuSAGl62m+!Efn0Q7Y>o_AfHCC6I>`p`p*NTLKSeRt_y%0q?*fCQG`y zAKJX(mEC+?nAwM<+dqj&o9vf9NfJrQ+Sbf0XV+~r;03tx>wVU!bdtHG?NFi(@EDT- zWd7&Gy|8T$U5u5a=dO?1YLrs+&N&CciH79(9==aSPfVc{cY{s<00002BR0px{+c z7sn8f&a>Cm)-=WA=yI-b}ruHkj+Q&3plOE0AbklH^+LffelNZj=IDAaqxheF1 z*ao#j3*%n9t#9wV#H_f;-R1g<@;lFhes!NrFxz{!E@D$u(;2bQ&ACl$%=WQutJ7Ye m@Lk4FDCftH)Zzw~27R+bXJ7g~wBrPNkipZ{&t;ucLK6T0(Q`Zi literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/sc_down.png b/resource/fr/gui/icon/hmi/sc_down.png new file mode 100644 index 0000000000000000000000000000000000000000..ecee2723edb707501cd1cd3835acbaf40ef0ed1d GIT binary patch literal 15147 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 OKMbC(elF{r5}E*8wrpYm literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/sjbyq.png b/resource/fr/gui/icon/hmi/sjbyq.png new file mode 100644 index 0000000000000000000000000000000000000000..c699b0235ab2d205f83594377666e4f8ef779199 GIT binary patch literal 522 zcmV+l0`>igP)4md$O#KoEr=QI3`Z9pvaaL~#dD0#fdn0|ih5B~U;P zz&%n*fDYg^*OUN~?~aDNMZ;nnq$G}%l~%i+ot>Zk#$I>IvP2v0t`#qBI=a6_Nkkq2 z%m54lJWzZ9@NRNd{kUf1DkBle0IZ#Z4adH7I8fDXlbyz+V|p zjtNI&_6(rw0=i&!#;AgcwVh+~Mh6M!J+AGjTgxmihM0*(*B6m4nG{a9Fqy3}+XMFm zXESd&E`}k;DaUt$eie~|%t9Nn5E7>w_U6u3WkwdshS7%%&A|&dcgSqddCs*WWWc=} z$GFnbueI3GiHXZ7fM2qNyX+-pp+Jrqd1g%+g>#-q%q9fAa=I(ZCXwzuvQ_D5#z=Az zS$JlQG;z9#tHvV}?#XH6tm^*eg~eCZm_imY31@DyC-!Av8ZpZ%zvPxtT~E_=k)~;B z<9BqdH{M75jBMQ}X&T-!GMhUlSKmdy>qFbqaN5CgD5x%vhh!33}YWdoR?Y(#Iq(hb<4 zsFIQT6DM|yDh~J()ouFx+9=MVu4~K@%ULLMf>!+m5v>7iC%(62=2sL1AO~=q2)Y3{ zwG*AiKtzqnLoP2PA!iwP%v=UR0(%0;034Y4?jaD-9zX%0V&+ZzUT87oz0niu+yO`| zs>Vtx^w?x#Gx!qP@*ZOqof8Cktx`5B$Wo#ASrufpve-mH)=I7BQBcatYLf&RDmMSe zBuKOJ*qA`Qit|KH4ReQW?}3sE?rB3r=TAP a0eA!F<#nVZ1b;aI0000KmcdQKKoCWrQSM0xq=TdcU;aHE03EmkQUa*}N(kqF zF&#h$l#mY0!DA7v$OepMU;L$!<-hj){j;Od7ERMI25v@CnT7s?MM_8-q&sXE=kL=w z>X7c}x42Z1=^X(`S^-tWvU4e^46ck%k3ePnbSc+0M@QfhSSEZKQODXHu*)U7CR76t zKkzTW+V&1O1eX=cmd^GbK+cJ)Ygz}lz#&SQ zMPEl1Z4-O|CrNur_qiXkXOzJ2BR0px{zZ z7sn8f&bQMJ@*Xnaag7gTPiX18z#G6{&+nGNY~|#BLeB00N6!I{y9zQ4oz5z2ri68! zm|n9n$JX*^*rg*9H=TC-YKU%e$<155gzrVe%`-zAnW4hEYiFn{v9!puIe>|D^!b;ZppuAcVw*8d*7=we?gR_5`2BR0px{(b z7sn8f&bQb0@-{p0v^^AeIq!A-j$9(MTVitxzj@CAEuR8SAr%qEo%8)ezHi<3=S1&Q zwUz_2nfZZQA(Q+}PgMVBP&+X5=BMcCIbU4oIq;uxw>^4+@21hIh0G}io2QF-Ic{1Q zqQZU3aniyV6;3V3MGJ#exPlbw6-A3UH75pp^v-drS+{{_XOql^RRRsm?9@eXePa7Q W)nDHy&*Bi!fefCmelF{r5}E)fCs0uU literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/tablewidget.png b/resource/fr/gui/icon/hmi/tablewidget.png new file mode 100644 index 0000000000000000000000000000000000000000..2febe7705ac0f81c3766d855e6a51ca787339cee GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkSz{ zi(`mKXY!x_|LvJ=8H8hVB)4`59cc2saP{icMIxK3zvsD?Y;620$dgbkd1m{MCmR|c zPM2t#?^+?uyzhjnDK`(Fe6QO3iK!Pqc;D+;+&ek2JAr{gY^h@Y^54s%fEF-#y85}S Ib4q9e08E-VegFUf literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/terminal.png b/resource/fr/gui/icon/hmi/terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..0edc5028aa8e0e5710c444b45aea4eae74405d58 GIT binary patch literal 420 zcmV;V0bBlwP)4meFy8FbqIndi@V0ut7RPfAmi$2%RL!Bqb9x|N3Es zut7#B6C@wVjd5(Cy@uXJcN{jB^khi}7U%PsIpk>;%0q&l#}q^)14_GA!EyssK&7f* zLw*)R%^)I$Ia-dy(*mWc9)1iGkrMdu9_@hx;3Cg}0$6)G@2Xl&2H8$NZQ5A0$3#H6 z1>n;97Tehk$ZB$;OIHKDj^*EMYJ;^v9@@mZuH;&iVhjRcI;BmQ-gp!QuvgX77{r4e z>FVhF_?B3EyIkMoSwyzL#-=+}-3BTLy5 z=%4Risi?w4fL0_ThX O00002BR0pkSP* zi(`mKXY!x_|LvJ=8H8hVB&UgOT)@3!*RCMdOJ(oxo$WXyZy|q>VOMto!?R?kPcIT4 z)U=#ldW0$FS9|;?xvd#j76o>pfwvQ4sJ>Zv2sdYjL?PicBMUE)QWAcHWg?BsV* STW$hvV(@hJb6Mw<&;$Sgpg-^c literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/textInput.png b/resource/fr/gui/icon/hmi/textInput.png new file mode 100644 index 0000000000000000000000000000000000000000..365487f426e1999330305412ea1b0e7bec61b0b8 GIT binary patch literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px|*& z7sn8f&bL!G@*Xk}aE%vW4hS-GGHZDDEMdwFUJ1qOKTR7Lm6xP+UtoD@An2zw(Ic=f z`R>nm_BS`_XU}TW+%mIelgEW?>}h38d3NfW-ZQ_v{LR4ln{V<2CdT%VgErypHjkM+ z6;m(8-TfKvd+lrgnKevWo(InqB|P8uxvX|ajPA;BwHwoG7U{({CNFx%R5O#Gb*jVD zM~7zafBOA+qsmk}v(1anwuh|0{z>gHm(*Ij^VZjDd0r$Nt+`y?@oetB{}(>}yO^>- Z{QEE0E6W-bZvwr<;OXk;vd$@?2>@>ubaVg! literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/textbox.png b/resource/fr/gui/icon/hmi/textbox.png new file mode 100644 index 0000000000000000000000000000000000000000..91e2fe6c9e0c4e863815c90c0f63768e9876b962 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px`o3 z7sn8f&bQMx@-`a?xXK4sJ=<|kT4i=?&LNGHY$f|sTYVmwC`9rpHB6j1A^v&%kCS${ zpP#Ds=hKVSv2?v&kdU_f-Qp!#K_(vRyWmgRG*RJi=8O_ o%abdwb4B0mYjRWGUo&gamr7G}y8Syv1n6Q0Pgg&ebxsLQ0PhG}x&QzG literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/tiaozha.png b/resource/fr/gui/icon/hmi/tiaozha.png new file mode 100644 index 0000000000000000000000000000000000000000..597c12010a7cdf093ccb19f9f96662cdab065fee GIT binary patch literal 433 zcmV;i0Z#sjP)KRxwV)KoFcjN~GimP&Dw z>ZCf7a{!lJK{^4EoH?6bBdK)Wmlc4Cn@(Jz9{^^O-Unj@z{+;!s@&L8K#RKDzW{IzVBhD4mOE0zFc3gr82aQ0zCkzw6x*Ac!sZ6t2)m^r{WduQ zzCn&a`pksFyF^hWn=r)8WM@3GtzEsVW$&{vy%u zyJ1uEtA>r5&l8^Anaw!_`s3=vvHv|(1K8z169Me-#yG4D literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/top.png b/resource/fr/gui/icon/hmi/top.png new file mode 100644 index 0000000000000000000000000000000000000000..db2d270f911d58b55218db39a186b409930a85d4 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px`A> z7sn8f&bL<_`I-y_S|9E|W*e>;=MZsbo^pkW<#C-ioIK$lSxO&HFkx9bm96*V+7}l- zEKQ9PcS`7fV;0y@Ya=jm*^}d;SI;{gSgOLZBVFJCuS6J=X~5A|%Zz}lX}wBHau&z7 zo}Km3I5vG{?#t|;ozFk_whFoQ!;JT`o-W|%JnuHO zS=UK;Nq^i|%ZO85y95KTUXIxET=2D*L;8Z=iJaGN&6$4kl@)^^XWNdYI}7XHbNzC@ j&!4*e`|h86*Y0NKK4feA-rRoz(02@;u6{1-oD!M2BR0px`}E z7sn8f&bQMJ@*XnaakcNT)-E_>zg7BxM$Z9_H5Ys@@m777GH?t~311a7>zK&bfFD6i z%sT&0Iq~JLYsZPL@t2<`-MG{F?!7|rhL}Y=S9OP8?L3j2<=ir{hT%kfdf^(J6 zV>TSiJuhj-r*w0o%+!schVEyk?%u_9AZfz06>Y+5-@}gPze?dXYTjZhvb{ZS|HZ`Y wNs-Mu7fyT+x)40~#~uNbOaIGX8#7igmZf*HmKtqY3iK(1r>mdKI;Vst05jx$i~s-t literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/travelBriefing.png b/resource/fr/gui/icon/hmi/travelBriefing.png new file mode 100644 index 0000000000000000000000000000000000000000..f7cd96664db890ba3ec930a93b4a4334d22755c5 GIT binary patch literal 665 zcmV;K0%rY*P)Px%Q%OWYR7gwJmcNVCP!Pwzlih`F?g(e8#et2&34)EHU=9zwV!eHd78Y7rc!h<9 zf`xy8!W9-4HdY>7f?63tJH&+WNX0_WF&lAZeAa+)k-4oGwkz|XR-_O(?S1=IEk{2Sf2f%z&7ZDu+U?)key4~)} zY05M%RLau;R-)*~u^Hiyt7k5j^osA+g`~YjN{s%*X#5%Afsk-c7~b1Oyn~iy0k}1xlf4bO0I>3O%dt; z4xQWs=q7+BAbTRR%FL-8PxVMCbq&Y^(NHA5YgtxvALN*#5W!O-s^`Jx%F)J#ce+-? z8xh6f;L=KNmIBBJOB`lDtJbY+#V6N3aq`OwZ30;4U|e3)>M!wUlCH1tw)AL z^w9VHuYUzp=FxEln)urjE8$R;&s6oVN~2BR0px_Ko z7sn8f&g4J;|JyU$G6=`!NKO;mC=m4E)hn+Mm3Q~{&K8{i=fOuoo(DyS8|~z3?3AuO z-NA6T=7>kuNrumo3q#x{xvpEcjy2#JtIET_0k;G_&oE^DWQj==>{?uBQ}lad$HOfd z1xu}*K05kz$?OPmKT&FMUvM=a8=GC_=8fSI7%SZ{yu{Y4(#%eK7`qq|{3` ab1>BV*_5AR^9cvKk-^i|&t;ucLK6TCsa8?| literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/trend.png b/resource/fr/gui/icon/hmi/trend.png new file mode 100644 index 0000000000000000000000000000000000000000..15b7fb5ffb5b590474396a5a455b9f638e07c51f GIT binary patch literal 393 zcmV;40e1e0P)Kma$4hK@dex#6qwzovk*)?eYi4zYrTOEfottLtDYZ z6oOx&@dq@5a2pF-yI5F97Dfo~k?iJ0lg3+KX7{|A+1Y)q(P+dXw6YM&B0;NFL(&a! zIOo1S+ehO@tw)lQ@d*qXLOQ^P?bf(i%P2Ik-EBgV)CYE}{_=WMDoH0mJHmHtAN)E< zQY!03#k;qCJ!ws&(%DXZ*ayDG?6+xaiZhb51snr+VO;_1zz49ITVIrsq;zBroCD9m zQ#!)H3vd=;!?{2KNu^qgjUUte0k1&U_ARh&d+OYkl&&9NUz_$H*?!M$Qc}99kWytc zs$M0328tfFGhxHIdK82Cko%a3-HZ8}9h4SIIxWm-A|wk6*kvxJL`%QDJMpeGQKuBt ni>JKyc+H?*HT3^?tC@gr-UVZv_;?)#00000NkvXXu0mjfhUll+ literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/trtczhkg.png b/resource/fr/gui/icon/hmi/trtczhkg.png new file mode 100644 index 0000000000000000000000000000000000000000..0a789eaf7f3b30ecbda243b28d4a1469091e4883 GIT binary patch literal 341 zcmV-b0jmCqP)4mfdl}Fc5@yGrWfqT!K4*bdU~02`<4UP(n(e1WJGo zTmq?JGnX70jWD(>kRGx#H?~ga`>cOa5^CtB3Z*7!HRdGwP=88d63F!h;Ixp@0(iYg zzcF(IIF8j#nSJw{@-}X&ML#0hdV)^UXW;LHupz9=Y7u~gm(7|eMp0~jiva9A!Cul3 z_}_x}%UqIKkfe(ba_m1Q{N$gK*AdCxlEm2{>pGH64Unym>6!H;kZD7*s{u0gB-bTD zXMb83?n{Egwemr7TM87b7-)#fv%5j4lr88gn{8{ilcYuClnnB%=zU4@P@|UE nzOfT_3Y4v6Pzn9B>lT1-ni0P!pt#^;00000NkvXXu0mjfUZal4 literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/txzc.png b/resource/fr/gui/icon/hmi/txzc.png new file mode 100644 index 0000000000000000000000000000000000000000..b03d2b603ec496f34a976284ee187bc4d9356fca GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkThI zi(`mK=i6%sc^v`-TrYZ?6qj2q5Sbg$G^ylUZq5yXPwGeNUwitceG&^^I;F!yc9F=7 z{S$Vr*lkt+xFl=!xA3&t>H-GLvH^2>_q{H8wS@1cVgifPg5x(GqyImbxv;S`_Jo^d j@PgZ#_Rft>iV3V@TLi-D&M#2|TFv0;>gTe~DWM4f?IT1P literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/tyztxs.png b/resource/fr/gui/icon/hmi/tyztxs.png new file mode 100644 index 0000000000000000000000000000000000000000..8e860f58384619d3c1f27475464e79f948b40ba8 GIT binary patch literal 407 zcmV;I0cie-P)KR>5t~2GJ-Zpx=BXJ22CcYMyNN4 zU;K82cmfA3PJlp5a)P#LA0c2^ppQI~I@x|0#}T)%$D6R+iN0ftOJbdK8vuGO&7%&$ zUPShDIjX92&OHMN0AA=C035k)0W@6q0KABNUQI-jBa>;Ot%wAJ@#<$GT0~nStL;%B z$pOI1lBm(QBBo)?Piz&3ZiJD*_blXwN{gKl}P8!r4>P!iMPI@ za7rC%f`;cLnm36%`o4_Vrcltlym^LBx!?ppEAMPa1ojNvB?2jt?1=44@4cEBJmtF9 zYRwoUiDxHkVkekrfB#Z7gunZl_({9}ocwbl0B6D!n3$O{z~}$~002ovPDHLkV1oHR BuweiI literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/undo.png b/resource/fr/gui/icon/hmi/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..8ef6ac5e4bdc4e025ee4e6f99c5d54fa730d6529 GIT binary patch literal 415 zcmV;Q0bu@#P)4mLXQeFc5~nY2|A2T5RnzI1`1Uz zb^GT5BvjFz^_L{+N@3=v6zJL{gi zJNqLBOPUyD2^0qJ3{_2mTkB@-`>uO5bY~?^8PD1R33{DpXPX$rBC~eg9_%#L7VMt> z_T!xwHC2P9Js|)q-{3Aj6N$CIF7T)z5lMgx;1j2Wqk+sLe=O_4RcKJ&TL2Ooh27YY z*NCHHuw-pV?}|rN^Px(T1iAfR7gv`mQiS1RT#(r-{p4gpyEyNVWL98JxrL`J;*9nh*;3D(42E)aAIYB z5H|2(1uIq*?887tCr+H8;KLp&bhO@cl6IsrWsyxbnXritDywwj1fiN-VbGQ(=d-6t zSWMF7lJSu~@9z^P-1|Fu-i)wbmcq%bA*jgb+P|bB+kR znfYgcKewP*EY{_D(btK12%tU8>;iNRFq2^zewNSYSGPJ$Q;?MYB>;PkDZiM>WWKV& z7Ea{k0PF#98Q?qsml=IT)DK{R*~GQhH=DsWfs)D8^Nz#w#*`0cGMO_r$Yv6WM6UvP zm($6vD0j+~4?}FqV zBAir8y}6z8q?GRiG@?|nvn5Cf|2=@;EtT%{%+1aHVFRS}R{*x4x3>qSCYa5L)~cfo zka!fJ1tLr-rCzNlPF^LVRi%Qbwg>qan9)^VjoSJxA&PSm@1dipUno}RZI4YEeF6tDV1pju_d-;G=}Y6&Qy#R;{a|drGB*WBxPy>;3LIi zA(GGMOVtM5(n=bkQp!UBjaloly=F}{5{VX>VaH34G3EYjHv0=n=}+5{pj7Z!-8fh> zhQ~4)b-ayi-eRV{Ff6=m$A-PjbUJe)&*sYB~0 zIbABz-r3nNuWtt$930&3IBt%JyOdIo*l_{SurcLh%>1|OcKi6LQuLxMo)0 z2u>!G`-z-+fEKO4Sy9+|z05RD#H-BI6^4b!Ba!HhicO)< z7<0t_cWeSl=`R83X$7f%pHV7E4-WbV*4@3Eh)-F|BH{r6lg7}Z&1R#I8aGTN(hu#} yQFhw_t*os4X+=<5E2Vq_K!Ta4wAR1Y@9{5GsXg9<(Qf?!00004mfdZHFbsgdtNPwVV<;Am+2lA+_s7qyvt?tC>E4URA4<_0by5I00Wk zduK}`IU@iO`37nmp6wMTk=x#<6+KE;MgSrb08};PtjnpOtQ#5M-}j6!xvTUQrG5Y^tqz{T_7uT zJu}r?#V-!Tat2Gb@<1Ze@OyLLbF{fA(PprA?trHiml3F9?VkFDT?>NEh1e$92ey>| b_q%lgyw0tBX<9=@00000NkvXXu0mjf$uOlS literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/viewOff.png b/resource/fr/gui/icon/hmi/viewOff.png new file mode 100644 index 0000000000000000000000000000000000000000..d1125b53867669cc4b302ed4efe9a32ee1cb1ca1 GIT binary patch literal 502 zcmVM(w9D-5{LEu_ouVi(#sokDESU#6a1fD`rUIyw$p^I>%&n3+Oq6@E@)=eb0^! zwo70SeAZ;&LUydbjg5qJqwPIRt@+q@vC2-`wAe_fw@C_Mj2T5JB5~LHn5Ov^xO7~! sGaz??!yghJT)pu_=8ZH5LJ>KA1Nw1||5TYg)&Kwi07*qoM6N<$f|x|!+yDRo literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/viewOn.png b/resource/fr/gui/icon/hmi/viewOn.png new file mode 100644 index 0000000000000000000000000000000000000000..b4649dcad1e5badc0c718314848f2a178f81802b GIT binary patch literal 471 zcmV;|0Vw{7P)4mdj1UKoEw%AntJoqywA^a1L`OR1niaIv{jF2RIb~ z=Q$))K&3`3nJs~f@cnUe1dNEn zWo89X>zqgWuRsGd?jGKo0!66U`>K!3Y%D`P5(fZ9ZcVHhX$rUBpT774vym-o7>Vh*T{ap=V|p_lSFIZbjv4g17SlxQ^b zhQO`PFe-+L?ldWb$1U#&tl_U4R(-Mwzx*d7NS+qqiiv04g8itkT7eAQ>2#$#_S5@g zA02Ia1C-h)0Mobta-?vzUYA{f`g|^}WS3{CAX;`IeOYyXN&oM6>m7agtRi805aIv; N002ovPDHLkV1j+V%*Ox# literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/wgbc.png b/resource/fr/gui/icon/hmi/wgbc.png new file mode 100644 index 0000000000000000000000000000000000000000..27c80cd4d23f7fa9fc7d5e0e3e1273a33d7114b8 GIT binary patch literal 531 zcmV+u0_^>XP)@e-HDaXexR`U6a~?Cev4&`KC|!&BRCrwu*bwWR;(H!fFo!2qgH@sh z>@p0^gN9pIaW05{P1>vy-NP*2bRa0PH)L^gWha7ld%t}ji@YyN#ksdPT58JBl26U|3USKy@4G#jWc+NPx!0|;Ux4Fc{+sm zib%W;+pRe+LwKR>;0WdvH+m8B`RHa{Q|*V`)`4hC$YPx$%t=H+R7gwhmcL6IVHn51PspHCxZ)<2hAOx#!E9Nan&ExVIw?pI{{+v;t%HR8 z2?|*<33qR@NVg0HOK9n8Aw>z@S}O!0Cwh5Gl!G(xt9RF?1)(<`&yVlt``*332$9FO z?N@^V*NA8;8fQjFDR(X!3*V(&*#NjUnq$Vtt1HN(Blp`dN6`WyKpi;F&iFvFN-+hANA%A?#bOaN zGtV{N>FF8T?RKn>#3QQL>zJIJ&;}&$V4-3w0{YtZ?uU)slJn;_$h$68U#VL*Xy0?%H8nEhty1o8G*>E>CM@gOX8`kN81H+Yw`IDV90GW4X!0*Eep;Px%{YgYYR7gw3mS0FyQ5?s=Klg`$KFo(*g!$m`!IwP*rYMMz^b(2PyKZ3C+MvXe zkv$}iOv*nG_Et?4dnwXJFx{O!1@1vjsh2_O9;yXfU?TW1Q;}eUllSI^>E>N4^uFD5 ze&_f3eShbB?mdKKdgz!qI9U+S+ok~+0|9@Pnqon)y=ROWHa6l_Gcz;EZ1EWt34$#y zgCxnXs#p+gOir%VYK%Ug??+aUAP6Ijq2@q+8|ldINgBJ_z94AyBTC zkUyjVqTz73q`!Xvi9`Y>lL^JeMnt1A<-NMP3U0SsPU$=Z;(6PHgRnrr-+OS(=ktw; zqIk8d%Z*4Rf~KY>l$V!7uh+qBE>!?KJ3Hv>>xI>7{g8L-CMW%@vGF{bn=hlFpa5R) zD>xiZMM-DpU3~cxfh0)~#fxZZY5AGAqEIOGuA-u%&ThY^7-4MeB?bo{AruNJ@1iJT ze0*F{>U27i|FTDp-S63pwzivCUtdQ@$8E?C3IUVvO$O zY6Lls<4i`6=gGslxj76EkEET(aU5o6XR*4vs+hy$c`7?^fOuX=$UnKifuv&h`VX(y zi;0QJKT?>@X7u#j2gh+S09FzN;R<7PIvNP^rme5~I;5mX?;Vxw!?4rA%p~ zMx$8)aF&QZtKJE6DS$C{0e}lot_1S=`U>Fn?tkhr5h?eG{{qUTm|rKmCXslKoEsr#G_zJ(Bqt92U?OP#12w|CD?)$Xio2_ z9jFyV2A>BvLdg0DvIEOZh9O_(%`C~9rolIC@D)k|CD2bm!!TiHIe?|kSm_IZiewoJ zYF$_}+XE={xRsyF*Cb~#pa<#9tQ4dMFeSP0^m*qe_0GncN{BuY;Oi*0tWgY3H}E zH*N#;7p-(j3qd?y#X|6`qfc4-O(f92f&g3r1jbuSJ3UoT00000NkvXXu0mjflTdk* literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/xdc.png b/resource/fr/gui/icon/hmi/xdc.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba144bb13cbfa7eb32b4995ea71cb6d71d3fda0 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0kesKB zV~9uR+i3?mk0^+^s3*Q(nVeU)K{MCen{%hH?8*a2kFqNN|KQoA^5D*&6ZL1xMcO5l zqcU=wUM_HNhq(9sN@u6{1-oD!MKmO)CxP!NW{id(Sfp#q2$7;xDsF+cu zip(rp@d&&DAHaix7uifzd8`g_1MC3@z_q&%R#nu|bqpNqkYlRq68^OSYp*BYaYmyQ zbgAo|+LR8OWML`cwqnv6r66>u(XM-UpYfA@@~-r=&hoie%sfx92oz^=rj@qndspX} zwZuPnyo?Qt{r*5V(Jx$tH)imKR?!VaKoFg~+&2wSfT%zRDo_Chh&ps23Q&O#R3HkV z0UB_5lbg$sjgW}sE?%-(#(Hnx%w&1Y^GsLZd5Ov`^b<%Ns=%z zVweSao*RXXse_ZIX{f5I1-TI5`8bYztwpwAbcA%l6@~z*!@!Q=?kJ3oilX2dZp4w0 z!;N;g7n@xNa!C!`XhGlixrTb};nZbW#!f)CMjXdnKRAOp>PVjk!aL|b6BgeiIT=8J z9YSbbY@|$D9i-YJV%UU0pA1H!v+& literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/yfjdzhkg.png b/resource/fr/gui/icon/hmi/yfjdzhkg.png new file mode 100644 index 0000000000000000000000000000000000000000..58a3bc75b6218c69b22463c197adb7cee0132288 GIT binary patch literal 336 zcmV-W0k8gvP)KR>2LzFbupy{9%NSkPYYvYyfP)2#nAX7@;F{gt7r6 zlnIQC@`y?j>Q>E*ldQUNl(XZ+4n+hduqnb)k_ftWW6|M-Qjgc%W_)-7=#73m0K1qW zN7Rc*ZDAqV0XW2LKXXLVksL^#Bet`*xu0HSa@2Xf4f0h5bE;sx^J~O@ z5)FZVB55j5OWMS0M9=E4wLAlZiw`BREf3YChE^ iR1=$n|8r{|0K5Tpe#@|(PxR{m0000Kmcb2zKoCX0#yfVP9)A_sfhA}OUO8zAmSCvB0yyZE z28Nr~Km!k$}Kma$3$K@>$#MA0r5en2|8L@<9~v=qejHhw~|6+&!m z#YV8Rv9L0Bb_TQ+(>?5Bsg?FZWWrmC%WT{P2?%?u-Pt#D=FYpjY-unUFbmDigi?V1 z1!#WsM$(@~(9B9vkn02JO|kA0unH{49>zdDGpkDq6Dnplgi5LbeKUJcPmt6E+CUk2 z0Yc6CXic<74tWEfB()?}!ZmP^s;fxq0w)eR1!@lZp{y_*0t>)7a0ILYufSHyMR2>} zE;h}q8FQRfJNZJ-CZ~UchSxQj0Kt5rKHf z0KYj3u$EumOWJW4$CJ3o1xh5T;gGVsY6KS{Fp}z#4MrVif;@Qvu!x4lmGw#07*qoM6N<$f=!>f;Q#;t literal 0 HcmV?d00001 diff --git a/resource/fr/gui/icon/hmi/zlq2.png b/resource/fr/gui/icon/hmi/zlq2.png new file mode 100644 index 0000000000000000000000000000000000000000..678d09d708ccee78472cda8841d8d1d7f06f263b GIT binary patch literal 354 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 + + + + AddBtnForm + + + Form + Formulaire + + + + CAddBtnForm + + + 添加图片 + Ajouter une image + + + + 添加边框 + Ajouter des bordures + + + + 添加渐变 + Ajouter un dégradé + + + + 添加颜色 + Ajouter une couleur + Ajouter une couleur + + + + 添加字体 + Ajouter une police + + + + 添加副控制 + Ajouter un sous-contrôle + + + + 添加状态 + Ajouter un état + Ajouter un état + + + + 背景图片 + Image d’arrière-plan + + + + 边框图片 + Image de bordure + + + + 图片 + image + + + + 颜色 + couleur + + + + 背景颜色 + couleur de fond + + + + 间隔背景颜色 + Couleur d’arrière-plan de l’intervalle + + + + 边框颜色 + Couleur de la bordure + + + + 上边框颜色 + Couleur de la bordure supérieure + + + + 右边框颜色 + Couleur de la bordure droite + + + + 下边框颜色 + Couleur de la bordure inférieure + + + + 左边框颜色 + Couleur de la bordure gauche + + + + 网格颜色 + Couleur de la grille + + + + 选中颜色 + Sélectionnez la couleur + + + + 选中背景颜色 + Sélectionnez la couleur d’arrière-plan + + + + add-line + ajouter une ligne + + + + add-page + ajouter une page + + + + branch + branche + + + + chunk + fragment + + + + close-button + bouton de fermeture + + + + corner + coin + + + + down-arrow + flèche vers le bas + + + + down-button + bouton vers le bas + + + + drop-down + déroulant + + + + float-button + bouton flottant + + + + groove + rainure + + + + indicator + indicateur + + + + handle + poignée + + + + icon + icône + + + + item + élément + + + + left-arrow + flèche gauche + + + + left-corner + coin gauche + + + + menu-arrow + flèche du menu + + + + menu-button + bouton du menu + + + + menu-indicator + indicateur du menu + + + + right-arrow + flèche droite + + + + pane + volet + + + + right-corner + coin droit + + + + scroller + dérouleur + + + + section + section + + + + separator + séparateur + + + + sub-line + sous-ligne + + + + sub-page + sous-page + + + + tab + onglet + + + + tab-bar + barre d'onglets + + + + tear + déchirure + + + + tearoff + détachable + + + + text + texte + + + + title + titre + + + + up-arrow + flèche haut + + + + up-button + bouton haut + + + + active + actif + + + + adjoins-item + élément adjoint + + + + alternate + alternatif + + + + bottom + bas + + + + checked + coché + + + + closable + fermant + + + + closed + fermé + + + + default + par défaut + + + + disabled + désactivé + + + + editable + éditable + + + + edit-focus + focus d'édition + + + + enabled + activé + + + + exclusive + exclusif + + + + first + premier + + + + flat + plat + + + + floatable + flottant + + + + focus + focus + + + + has-children + a des enfants + + + + has-siblings + a des frères et sœurs + + + + horizontal + horizontal + + + + hover + survol + + + + indeterminate + indéterminé + + + + last + dernier + + + + left + gauche + + + + maximized + maximisé + + + + middle + milieu + + + + minimized + réduit + + + + movable + déplaçable + + + + no-frame + sans cadre + + + + non-exclusive + non exclusif + + + + off + éteint + + + + on + allumé + + + + only-one + seul + + + + open + ouvert + + + + next-selected + sélectionné suivant + + + + pressed + pressé + + + + previous-selected + sélectionné précédent + + + + read-only + lecture seule + + + + right + droit + + + + selected + sélectionné + + + + top + haut + + + + unchecked + non coché + + + + vertical + vertical + + + + window + fenêtre + + + + 无边框 + sans bordure + + + + 点状边框 + bordure pointillée + + + + 虚线边框 + bordure en tirets + + + + 实线边框 + bordure pleine + + + + 双线边框 + bordure double + + + + 边框圆角 + coins arrondis + + + + 左上边框圆角 + coin supérieur gauche arrondi + + + + 右上边框圆角 + coin supérieur droit arrondi + + + + 左下边框圆角 + coin inférieur gauche arrondi + + + + 右下边框圆角 + coin inférieur droit arrondi + + + + 选择文件 + sélectionner un fichier + + + + 选择渐变 + sélectionner un dégradé + + + + 选择颜色 + sélectionner une couleur + + + + CAnimationConfigDialog + + + 动画配置 + Configuration d'animation + + + + 取消 + Annuler + + + + 确定 + Confirmer + + + + 旋转动画 + Animation de rotation + + + + + + 动画过渡间隔: + Intervalle de transition d'animation : + + + + + + ms + ms + + + + + + 关联测点: + Point de mesure associé : + + + + + ° + ° + + + + + + 最小值 + Valeur minimale + + + + 旋转偏移角度 + Angle de décalage de rotation + + + + + + 最大值 + Valeur maximale + + + + + + 测点值 + Valeur du point de mesure + + + + + + + + + None + Aucun + + + + + + 动画值配置: + Configuration de la valeur d'animation : + + + + 位移动画 + Animation de déplacement + + + + 水平偏移像素 + Décalage horizontal en pixels + + + + 垂直偏移像素 + Décalage vertical en pixels + + + + + + + px + px + + + + 缩放动画 + Animation de zoom + + + + 水平缩放比例 + Facteur de zoom horizontal + + + + 垂直缩放比例 + Facteur de zoom vertical + + + + + + + % + % + + + + CBindCheckModel + + + 检查结果 + Résultat de la vérification + + + + 对象名称 + Nom de l'objet + + + + 点描述 + Description du point + + + + 点标签 + Étiquette du point + + + + 正常 + Normal + + + + 无对象名称 + Aucun nom de l'objet + Aucun nom de l'objet + + + + 对象名称重复 + Nom de l'objet dupliqué + Nom de l'objet dupliqué + + + + 联库错误 + Erreur d'association de la base de données + Erreur d'association de la base de données + + + + 未联库 + Non associé à la base de données + Non associé à la base de données + + + + CBindCheckWidget + + + 检查 + Vérifier + + + + 正常项 + Élément normal + + + + 异常项 + Élément anormal + + + + 未联库 + Non lié à la base de données + + + + CBoxTreeWidget + + + 搜索... + Rechercher... + + + + CChartShape + + + 饼图 + Graphique en secteurs + + + + 棒图 + Graphique à barres + + + + 折线图 + Graphique linéaire + + + + 实时图 + Graphique en temps réel + + + + CColorConfigWidget + + + 颜色选择 + Sélection de couleur + + + + CConfigDialog + + + 页面配置 + Configuration de la page + + + + 基础配置 + Configuration de base + + + + 分辨率: + Résolution : + + + + * + * + + + + 像素 + Pixels + + + + 失电颜色: + Couleur de coupure : + + + + 背景: + Fond : + + + + 首页: + Page d'accueil : + + + + 单屏显示 + Affichage sur un seul écran + + + + 多屏配置 + Configuration multi-écrans + + + + 屏幕个数: + Nombre d'écrans : + + + + 确定 + OK + + + + 取消 + Annuler + + + + CDataBindModel + + + 标签名称 + Nom de l'étiquette + + + + CDataBindView + + + 提示 + Conseil + Conseil + + + + 当前测点已经存在! + Le point de mesure actuel existe déjà ! + Le point de mesure actuel existe déjà ! + + + + 警告 + Avertissement + + + + 当前未选中任何行! + Aucune ligne sélectionnée actuellement ! + Aucune ligne sélectionnée actuellement ! + + + + 删除 + Supprimer + + + + 清空 + Vider + + + + 新建 + Nouveau + + + + CDesignerScene + + + + + + 提示 + Conseil + + + + 组合图元不可镜像! + Les éléments de groupe ne peuvent pas être mis en miroir ! + Les éléments de groupe ne peuvent pas être mis en miroir ! + + + + 精灵图元不可镜像! + Les éléments de sprite ne peuvent pas être mis en miroir ! + Les éléments de sprite ne peuvent pas être mis en miroir ! + + + + 控件图元不可镜像! + Les éléments de contrôle ne peuvent pas être mis en miroir ! + Les éléments de contrôle ne peuvent pas être mis en miroir ! + + + + 图表图元不可镜像! + Les éléments de graphique ne peuvent pas être mis en miroir ! + Les éléments de graphique ne peuvent pas être mis en miroir ! + + + + CDesignerView + + + 编辑图元 + Éditer l'élément + + + + 文本替换 + Remplacement de texte + + + + 动画配置 + Configuration de l'animation + + + + 文本编辑 + Édition du texte + + + + 数据源配置 + Configuration de la source de données + + + + 添加到精灵图元 + Ajouter au sprite + + + + 检索器 + Rechercheur + Rechercheur + + + + + 视图 + Vue + + + + + 显示网格 + Afficher la grille + + + + + 网格间距 + Espacement de la grille + + + + + 网格颜色 + Couleur de la grille + + + + CDesignerWnd + + + 设计窗口 + Fenêtre de conception + + + + 图形已被修改! +保存所作的改动? + Le graphique a été modifié ! Enregistrer les modifications ? + + + + 保存 + Enregistrer + + + + 不保存 + Ne pas enregistrer + + + + + + 取消 + Annuler + + + + 新建 + Nouveau + Nouveau + + + + 提醒 + Rappel + Rappel + + + + 请选择新建类型? + Veuillez sélectionner le type à créer ! + Veuillez sélectionner le type à créer ! + + + + 新建图形 + Nouveau graphique + + + + 新建图元 + Nouveau élément + Nouveau élément + + + + + 精灵图元 + Sprite + + + + + 打开 + Ouvrir + + + + + 打开文件 + Ouvrir un fichier + + + + pic (*.glx *.ilx *.elx) + pic (*.glx *.ilx *.elx) + + + + + + + + + + + + + + + 提示 + Rappel + Rappel + + + + 找不到文件: + Fichier introuvable : + + + + + + 保存文件 + Enregistrer le fichier + + + + 另存文件 + Enregistrer sous + + + + + + 图元名称首字母不能为数字! + Le nom de l'élément ne peut pas commencer par un chiffre ! + Le nom de l'élément ne peut pas commencer par un chiffre ! + + + + + + 图元名称只支持中文、字母、数字和下划线 + Le nom de l'élément ne peut contenir que des caractères chinois, des lettres, des chiffres et des underscores + Le nom de l'élément ne peut contenir que des caractères chinois, des lettres, des chiffres et des underscores + + + + 非法的命名 + Nom invalide + + + + 执行上传拓扑? + Exécuter le téléchargement de la topologie ? + + + + 确认 + Confirmer + + + + + + + + + + + + + + + + + + + 警告 + Alerte + + + + 未设置所属专业.位置 + Spécialité ou emplacement non défini + Spécialité ou emplacement non défini + + + + 无效的位置信息 + Informations d'emplacement invalides + Informations d'emplacement invalides + + + + + 操作dev_topo_info失败 + Échec de l'opération dev_topo_info + + + + + + 操作dev_topo_ver失败 + Échec de l'opération dev_topo_ver + + + + 上传拓扑成功! + Topologie téléchargée avec succès ! + + + + 关闭 + Fermer + + + + Ctrl+N + Ctrl+N + + + + Ctrl+O + Ctrl+O + + + + Ctrl+S + Ctrl+S + + + + F11 + F11 + + + + F5 + F5 + + + + 重新联库 + Recharger la bibliothèque + + + + Ctrl+F + Ctrl+F + + + + 检索器 + Rechercheur + Rechercheur + + + + F2 + F2 + + + + 清空联库 + Vider la bibliothèque + + + + 图层管理 + Gestion des calques + Gestion des calques + + + + Delete + Supprimer + + + + + Ctrl+C + Ctrl+C + + + + 全选 + Sélectionner tout + + + + Ctrl+A + Ctrl+A + + + + Ctrl+X + Ctrl+X + + + + Ctrl+V + Ctrl+V + + + + Ctrl+k + Ctrl+k + + + + Ctrl+b + Ctrl+b + + + + 添加图元 + Ajouter un élément graphique + + + + 移除图元 + Supprimer un élément graphique + + + + 编辑图元 + Éditer un élément graphique + + + + 增加图库 + Ajouter une bibliothèque d'images + + + + 删除图库 + Supprimer une bibliothèque d'images + + + + + 位置: + Emplacement : + Emplacement : + + + + 栅格 + Grille + + + + 捕捉 + Accrochage + + + + 正交 + Orthogonal + + + + 属性编辑 + Éditeur d'attributs + + + + 联库信息 + Informations d'association de bibliothèque + Informations d'association de bibliothèque + + + + 模型检查 + Vérification du modèle + + + + + 图层 + Calque + + + + + + + + + + + - + - + + + + 图层显示 + Affichage des calques + + + + 窗口 + Fenêtre + + + + 状态 + État + + + + + 图层数量已达到最大值,不允许继续添加图层! + Le nombre maximum de calques a été atteint, l'ajout de calques supplémentaires n'est pas autorisé ! + + + + 图层%1 + Calque %1 + + + + 状态%1 + État %1 + + + + %1 - %2[*] + %1 - %2[*] + + + + 当前图元名称已存在,不允许重复添加! + Le nom de l'élément graphique existe déjà, l'ajout de doublons n'est pas autorisé ! + + + + 请输入新建图库的名称 + Veuillez saisir le nom de la nouvelle bibliothèque d'images + + + + + + + + 错误 + Erreur + + + + 图库名称不能为空! + Le nom de la bibliothèque d'images ne peut pas être vide ! + + + + 图库名称首字母不能为数字! + La première lettre du nom de la bibliothèque d'images ne peut pas être un chiffre ! + + + + 图库名称首字母不能为空格! + La première lettre du nom de la bibliothèque d'images ne peut pas être un espace ! + + + + 图库名称只支持中文、字母、数字和下划线 + Le nom de la bibliothèque d'images ne peut contenir que des caractères chinois, des lettres, des chiffres et des underscores + + + + 该图库名称已存在! + Le nom de la bibliothèque d'images existe déjà ! + + + + 图元状态数量已达到最大值,不允许继续添加图元状态! + Le nombre maximal d'états d'éléments graphiques a été atteint, il n'est pas autorisé d'en ajouter davantage ! + + + + 精灵图元编辑模式下不允许添加图层! + Il n'est pas permis d'ajouter des calques en mode d'édition d'éléments graphiques de sprites ! + + + + 图层数量至少为1,不允许继续删除图层! + Il doit y avoir au moins un calque, il n'est pas autorisé de supprimer davantage de calques ! + + + + 图元状态数量至少为1,不允许继续删除图元状态! + Il doit y avoir au moins un état d'élément graphique, il n'est pas autorisé de supprimer davantage d'états ! + + + + 精灵图元编辑模式下不允许删除图层! + Il n'est pas permis de supprimer des calques en mode d'édition d'éléments graphiques de sprites ! + + + + 非图表图元暂不支持关联统计量! + Les éléments graphiques non basés sur des graphiques ne prennent pas encore en charge l'association des statistiques ! + + + + CExplorerWnd + + + + + + + + 打开文件 + Ouvrir le fichier + + + + + + 提示 + Rappel + Rappel + + + + 加密狗运行异常! + Anomalie de fonctionnement du dongle ! + Anomalie de fonctionnement du dongle ! + + + + 加密狗检测正常! + Anomalie de détection du dongle ! + Anomalie de détection du dongle ! + + + + 确认退出系统? + Confirmer la sortie du système ? + + + + 确认 + Confirmer + + + + 取消 + Annuler + + + + 编辑图形 + Éditer le graphique + + + + Ctrl+d + Ctrl+d + + + + 加密狗状态 + État du dongle de sécurité + + + + Ctrl+R + Ctrl+R + + + + 退出 + Quitter + + + + Ctrl+E + Ctrl+E + + + + 导航图 + Carte de navigation + + + + %1 - %2 + %1 - %2 + + + + 导出图形 + Exporter le graphique + + + + 图形文件(*.png) + Fichier graphique (*.png) + + + + CFindReplace + + + 已替换:%1个 + Remplacé : %1 éléments + + + + CFlowLine + + + + 潮流颜色 + Couleur de flux + + + + + 潮流长度 + Longueur de flux + + + + CGTableWidget + + + 导出xlsx文件为 + Exporter le fichier xlsx sous + + + + CGlobalConfigDialog + + + 全局变量 + Variables globales + + + + + + + + + + + - + - + + + + 确定 + Confirmer + + + + 取消 + Annuler + + + + 描述 + Description + + + + 名称 + Nom + + + + 类型 + Type + + + + 值 + Valeur + + + + 提示 + Rappel + Rappel + + + + 保存失败! + Échec de la sauvegarde ! + Échec de la sauvegarde ! + + + + 数值型 + Numérique + + + + 布尔型 + Booléen + + + + 字符串 + Chaîne de caractères + Chaîne de caractères + + + + CGraphApp + + + + + 提示 + Rappel + Rappel + + + + 系统未启动! + Le système n'a pas démarré ! + + + + 加密狗检测异常! + Anomalie de détection du dongle ! + + + + 加密狗运行异常! + Anomalie de fonctionnement du dongle ! + Anomalie de fonctionnement du dongle ! + + + + CGraphDataAcess + + + hello1 + bonjour1 + + + + des + description + + + + 用户不具有指定权限 + L'utilisateur n'a pas les autorisations spécifiées + + + + 无用户登录信息 + Aucune information de connexion utilisateur + + + + 输入名称不存在 + Le nom d'entrée n'existe pas + + + + 输入名称不唯一 + Le nom d'entrée n'est pas unique + + + + 不允许在该节点登录 + Connexion non autorisée sur ce nœud + + + + 密码错误 + Mot de passe incorrect + + + + 用户已失效 + L'utilisateur est invalide + + + + 用户已锁定 + L'utilisateur est verrouillé + + + + 用户不属于所选用户组 + L'utilisateur n'appartient pas au groupe d'utilisateurs sélectionné + + + + 未知错误,系统可能未正常启动 + Erreur inconnue, le système peut ne pas avoir démarré correctement + + + + 未知错误 + Erreur inconnue + + + + 内存出错 + Erreur de mémoire + + + + CGraphFileTree + + + 搜索... + Recherche... + + + + 刷新 + Rafraîchir + + + + CGraphView + + + + + 图幅 + Cadre de dessin + + + + + 标题 + Titre + + + + + 背景色 + Couleur de fond + + + + + 背景图片 + Image de fond + + + + + 是否缩放 + Zoom ou non + Zoom ou non + + + + + 是否拓扑 + Topologie ou non + Topologie ou non + + + + + 自适应显示 + Affichage adaptatif + + + + + 窗口标识 + Identifiant de fenêtre + + + + + 发布类型 + Type de publication + + + + + 图层显示 + Affichage des calques + + + + + 窗口关闭按钮 + Bouton de fermeture de la fenêtre + + + + + 专业.位置 + Spécialité.Emplacement + + + + + 模态 + Modalité + + + + CGridShape + + + 网格线颜色 + Couleur des lignes de grille + + + + 网格填充颜色 + Couleur de remplissage de la grille + + + + 交替填充颜色 + Couleur de remplissage alterné + Couleur de remplissage alterné + + + + CHmiConfig + + + 屏幕首页面 + Page d'accueil de l'écran + + + + 屏幕号 + Numéro de l'écran + + + + 提示 + Rappel + Rappel + + + + 保存失败! + Échec de l'enregistrement ! + + + + CLayerDlg + + + 图层工具 + Outils de calque + + + + CLineEditWithBt + + + + 选择文件 + Choisir un fichier + + + + CPenDialog + + + Pen + Stylo + + + + 线宽: + Largeur de ligne : + + + + 线型: + Type de ligne : + + + + 预览 + Prévisualisation + + + + + NoPen + Aucun stylo + + + + + SolidLine + Ligne continue + + + + + DashLine + Ligne en tirets + + + + + DotLine + Ligne pointillée + + + + + DashDotLine + Ligne tiret-point + + + + + DashDotDotLine + Ligne tiret-point-point + + + + CPreviewForm + + + + + + + + + + + + + + + + + + + + + + + + + + 新建项目 + Nouveau projet + + + + CRetriever + + + 检索器 + Rechercheur + Rechercheur + + + + + + + 专业: + Spécialité : + + + + + + + 位置: + Emplacement : + + + + + 设备组: + Groupe d'équipements : + + + + 表名: + Nom de la table : + + + + 统计量模板: + Modèle de statistiques : + + + + 统计量 + Statistiques + + + + 设备检索 + Recherche d'équipement + + + + 多点关联 + Association multipoints + + + + 检索方式: + Mode de recherche : + Mode de recherche : + + + + 表检索 + Recherche dans les tables + + + + 设备组检索 + Recherche de groupe d'équipements + + + + 点类型: + Type de point : + + + + 值: + Valeur : + + + + 点名: + Nom du point : + + + + 列名: + Nom de la colonne : + + + + + 数字量 + Quantité numérique + + + + + 模拟量 + Quantité analogique + + + + + 混合量 + Quantité mixte + + + + + 累积量 + Quantité cumulée + Quantité cumulée + + + + + 常量 + Constante + + + + + 通用 + Général + + + + + 其他 + Autre + + + + 值 + Valeur + + + + 状态 + État + + + + 时间 + Temps + + + + CScreenShot + + + 保存图像 + Sauvegarder l'image + + + + 图形文件 (*.png) + Fichier graphique (*.png) + + + + CShape + + + 画笔 + Pinceau + + + + 画刷 + Brosse + + + + %1 + + %1 + + + + + CShapeConfigDialog + + + 数据绑定 + Liaison de données + + + + 策略配置 + Configuration de la stratégie + + + + 属性配置 + Configuration des attributs + + + + 标签名称 + Nom de l'étiquette + + + + 文本内容 + Contenu du texte + + + + + 确认 + Confirmer + + + + + 取消 + Annuler + + + + + 清空 + Vider + + + + 语法检查 + Vérification de la syntaxe + + + + 函数代码 + Code de la fonction + + + + 函数名称 + Nom de la fonction + + + + 新建 + Nouveau + + + + 删除 + Supprimer + + + + 复制 + Copier + + + + 修改 + Modifier + + + + 添加行 + Ajouter une ligne + + + + 删除行 + Supprimer une ligne + + + + 函数编辑 + Édition de fonction + + + + 策略名称: + Nom de la stratégie : + + + + 策略描述: + Description de la stratégie : + + + + + + + + 提示 + Rappel + Rappel + + + + 策略名称不能为空! + Le nom de la stratégie ne peut pas être vide ! + + + + 策略描述不能为空! + La description de la stratégie ne peut pas être vide ! + + + + 非法的命名 + Nom invalide + + + + 策略名称已经存在, 不能重复创建! + Le nom de la stratégie existe déjà, création en double interdite ! + + + + 策略名称不能以数字开头! + Le nom de la stratégie ne peut pas commencer par un chiffre ! + + + + Error + Erreur + + + + Information + Information + + + + 语法正确, 脚本有效。 + Syntaxe correcte, script valide. + + + + 警告 + Avertissement + + + + 当前未选中行! + Aucune ligne sélectionnée actuellement ! + + + + CSpinBoxGroup + + + + 错误 + Erreur + + + + 的最小值不能超过最大值! + La valeur minimale ne peut pas dépasser la valeur maximale ! + + + + 的最大值不能小于最小值! + La valeur maximale ne peut pas être inférieure à la valeur minimale ! + + + + CStrategyConfigDelegate + + + 颜色选择 + Sélection de couleur + + + + CStrategyConfigModel + + + 合成值 + Valeur synthétique + + + + 线色 + Couleur de la ligne + + + + 填充色 + Couleur de remplissage + + + + 闪烁线色前景色 + Couleur de premier plan de la ligne clignotante + + + + 闪烁线色背景色 + Couleur d'arrière-plan de la ligne clignotante + + + + 闪烁填充前景色 + Couleur de premier plan du remplissage clignotant + + + + 闪烁填充背景色 + Couleur d'arrière-plan du remplissage clignotant + + + + 图元平面 + Plan des éléments graphiques + Plan des éléments graphiques + + + + 是否闪烁 + Clignoter ou non + + + + 闪烁频率 + Fréquence de clignotement + + + + 是否显示 + Afficher ou non + + + + 警告 + Avertissement + + + + 当前合成值已经存在! + La valeur synthétique actuelle existe déjà ! + + + + CTagSourceCfgDialog + + + 数据源配置 + Configuration de la source de données + + + + 取消 + Annuler + + + + 确定 + Confirmer + + + + CTextReplacer + + + Dialog + Dialogue + + + + 查找: + Rechercher : + + + + 替换为: + Remplacer par : + + + + 替换 + Remplacer + + + + 大小写匹配 + Sensible à la casse + + + + 文本替换 + Remplacement de texte + + + + CWebPublish + + + + + 提示 + Rappel + Rappel + + + + 只能在服务器上进行Web发布! + La publication Web ne peut être effectuée que sur le serveur ! + + + + 发布成功! + Publication réussie ! + + + + 发布失败! + Échec de la publication ! + + + + FilepathWidget + + + ... + ... + + + + + + 打开文件 + Ouvrir le fichier + + + + FindReplaceDlg + + + 连库替换 + Remplacement de base de données connectée + Remplacement de base de données connectée + + + + 连设备组 + Groupe d'équipements connectés + + + + 连位置 + Position connectée + + + + 连设备 + Équipement connecté + + + + 替换前: + Avant remplacement : + + + + 替换 + Remplacer + + + + 替换后: + Après remplacement : + + + + 关闭 + Fermer + + + + 整站连接 + Connexion du site complet + + + + 区分大小写 + Sensible à la casse + + + + FindWidget + + + Form + Formulaire + + + + Find : + Trouver : + + + + Find Next + Trouver Suivant + + + + Find Prev + Trouver Précédent + + + + Replace : + Remplacer : + + + + Replace + Remplacer + + + + Replace All + Remplacer Tout + + + + Case Sensitive + Sensible à la casse + + + + Whole Words + Mots entiers + + + + GradientDialog + + + Dialog + Dialogue + + + + Gradient + Dégradé + + + + Fill Type: + Type de remplissage : + + + + Start Color + Couleur de début + + + + End Color + Couleur de fin + + + + Preview + Aperçu + + + + MainWindow + + + web发布 + Publication Web + + + + 基础配置 + Configuration de base + + + + 下一步 + Étape suivante + + + + 首页配置 + Configuration de la page d'accueil + + + + 背景图片配置 + Configuration de l'image d'arrière-plan + + + + 权限验证 + Vérification des autorisations + + + + 发布内容 + Contenu publié + + + + 画面/图元 + Écran/Élément graphique + Écran/Élément graphique + + + + 图片 + Image + + + + 风格 + Style + + + + 发布 + Publier + + + + 上一步 + Étape précédente + + + + PreviewForm + + + Form + Formulaire + + + + QObject + + + + + 横向缩放比例 + Facteur de zoom horizontal + Facteur de zoom horizontal + + + + + + 纵向缩放比例 + Facteur de zoom vertical + Facteur de zoom vertical + + + + + 属性 + Propriétés + + + + 值 + Valeur + + + + + 起始角度 + Angle de départ + + + + + 弧线角度 + Angle de l'arc + + + + 贝塞尔曲线 + Courbe de Bézier + + + + 光字牌 + Panneau lumineux + + + + + 显示类型 + Type d'affichage + + + + + + + + + + + + + + + + + + 宽高 + Largeur et hauteur + + + + 数据长度 + Longueur des données + + + + + 小数点位数 + Nombre de décimales + + + + + 正负号显示 + Affichage des signes positifs/négatifs + + + + + + + + + + 文本内容 + Contenu du texte + + + + + + 水平居左 + Aligné à gauche + + + + + + 水平居中 + Aligné au centre + + + + + + 水平居右 + Aligné à droite + + + + + + 垂直居上 + Aligné en haut + + + + + + 垂直居中 + Aligné au centre (vertical) + + + + + + 垂直居下 + Aligné en bas + + + + + + 无边框 + Sans bordure + + + + + + 凸出边框 + Bordure en relief + + + + + + 凹陷边框 + Bordure en creux + + + + + + 平行边框 + Bordure parallèle + + + + 浮点型 + Flottant + + + + 整型 + Entier + + + + 字符串 + Chaîne de caractères + + + + 数字量文本 + Texte numérique + + + + 正常显示 + Affichage normal + + + + 显示负号 + Afficher le signe négatif + + + + 显示左右箭头 + Afficher les flèches gauche/droite + + + + 显示上下箭头 + Afficher les flèches haut/bas + + + + + + + + + + + + + + + + 对象名称 + Nom de l'objet + + + + + + + + + + + + + + + + + + + 位置 + Emplacement + Emplacement + + + + + + + + + + 旋转角度 + Angle de rotation + + + + + + + + + 中心点旋转 + Rotation autour du centre + + + + + + + + 字体 + Police + + + + + + + + + 字体颜色 + Couleur de la police + + + + + + + + + + 背景颜色 + Couleur de fond + + + + + + + 水平对齐方式 + Alignement horizontal + + + + + + + 垂直对齐方式 + Alignement vertical + + + + + + + + + + + + + 是否显示 + Afficher ou non + Afficher ou non + + + + + + + 边框样式 + Style de bordure + + + + + + + 边框颜色 + Couleur de la bordure + + + + + + + 边框深度 + Profondeur de la bordure + + + + + + + + + + + + + + + + + 轴Z坐标 + Coordonnée de l'axe Z + Coordonnée de l'axe Z + + + + + + + + + + + 着色策略 + Stratégie de coloration + + + + + + + + + + + + + + + + + + + 透明度 + Opacité + + + + + x轴半径 + Rayon X + + + + + y轴半径 + Rayon Y + + + + + + + 半径 + Rayon + + + + 网格线颜色 + Couleur des lignes de la grille + + + + 网格填充颜色 + Couleur de remplissage de la grille + + + + 交替填充颜色 + Couleur de remplissage alterné + Couleur de remplissage alterné + + + + + 交替填充 + Remplissage alterné + + + + + 行数量 + Nombre de lignes + + + + + 列数量 + Nombre de colonnes + + + + + 设备组 + Groupe d'équipements + Groupe d'équipements + + + + + 自适应模式 + Mode adaptatif + + + + 屏幕宽高比 + Ratio largeur/hauteur de l'écran + + + + 图元宽高比 + Ratio largeur/hauteur de l'élément + + + + + + + 起点箭头 + Flèche de début + + + + + + + 终点箭头 + Flèche de fin + + + + 起点 + Début + + + + 终点 + Fin + + + + 起点箭头外观 + Apparence de la flèche de début + + + + 起点箭头大小 + Taille de la flèche de début + + + + 终点箭头外观 + Apparence de la flèche de fin + + + + 终点箭头大小 + Taille de la flèche de fin + + + + + + + 调用图形 + Graphique d'appel + + + + + + + + 位图 + Bitmap + + + + + 热键类型 + Type de raccourci clavier + + + + + + + + 图层显示 + Affichage des calques + Affichage des calques + + + + + 水平方向 + Direction horizontale + + + + + 竖直方向 + Direction verticale + + + + + 切换画面 + Changer de vue + + + + + 弹出画面 + Affichage contextuel + + + + + 程序调用 + Appel de programme + + + + + + 文字方向 + Orientation du texte + + + + 箭头外观 + Apparence de la flèche + + + + + 水平填充百分比 + Pourcentage de remplissage horizontal + + + + + 垂直填充百分比 + Pourcentage de remplissage vertical + + + + + 矩形圆角 + Rayon des coins du rectangle + + + + + + 画笔 + Pinceau + + + + + 画刷 + Brosse + Brosse + + + + 脚本 + Script + + + + + 时间格式 + Format de l'heure + + + + + 内容 + Contenu + + + + + 插件名 + Nom du plugin + + + + + Tip提示信息 + Info-bulle + + + + + 图标 + Icône + + + + + 图标宽高 + Largeur et hauteur de l'icône + Largeur et hauteur de l'icône + + + + view_mode + mode_vue + + + + + 调用资源 + Ressource d'appel + + + + + 动作类型 + Type d'action + + + + + 组号 + Numéro de groupe + + + + + 选中 + Sélectionné + + + + + 类型 + Type + + + + 切换图层 + Changer de calque + Changer de calque + + + + 切换导航 + Changer de navigation + + + + 上一页 + Page précédente + + + + 下一页 + Page suivante + + + + 显示文本 + Afficher le texte + + + + 显示密码 + Afficher le mot de passe + + + + 文本输入 + Entrée de texte + + + + + 按钮 + Bouton + + + + 组合框 + Liste déroulante + + + + 复选框 + Case à cocher + + + + 单选按钮 + Radio bouton + + + + 标签 + Étiquette + + + + 列表框 + Liste + + + + 数字输入 + Entrée numérique + + + + 日期 + Date + + + + + 时间 + Heure + + + + 树形 + Arborescence + + + + 表格 + Tableau + + + + 插件 + Plugin + + + + 文本框 + Zone de texte + + + + 菜单 + Menu + + + + + 图表标题 + Titre du graphique + + + + + 标题颜色 + Couleur du titre + + + + + 标题字体 + Police du titre + + + + + 显示图例 + Afficher la légende + + + + + 图例文字颜色 + Couleur du texte de la légende + + + + + 图例文字字体 + Police du texte de la légende + + + + + 显示背景 + Afficher le fond + + + + + 轮廓颜色 + Couleur du contour + + + + + 图例位置 + Emplacement de la légende + Emplacement de la légende + + + + + + + 图表模式 + Mode graphique + + + + + 是否统计图表 + Graphique statistique ou non + Graphique statistique ou non + + + + + 时间滚动 + Défilement temporel + + + + + 项提示文本颜色 + Couleur du texte de l'info-bulle + + + + + 项提示文本字体 + Police du texte de l'info-bulle + Police du texte de l'info-bulle + + + + + + 项数量 + Nombre d'éléments + + + + + 组数量 + Nombre de groupes + + + + + 棒描述 + Description de la barre + + + + + 棒颜色 + Couleur de la barre + + + + + 饼描述 + Description de la tarte + + + + + 饼颜色 + Couleur de la tarte + + + + + + 曲线数量 + Nombre de courbes + + + + + 曲线线宽 + Épaisseur des courbes + + + + + + + Y轴线颜色 + Couleur de la ligne de l'axe Y + + + + + + + Y轴标题 + Titre de l'axe Y + + + + + + + Y轴标题颜色 + Couleur du titre de l'axe Y + + + + + + + Y轴标题字体 + Police du titre de l'axe Y + + + + + + + Y轴最小值 + Valeur minimale de l'axe Y + + + + + + + Y轴最大值 + Valeur maximale de l'axe Y + + + + + + + Y轴刻度数 + Nombre de graduations de l'axe Y + + + + + + + Y轴文字颜色 + Couleur du texte de l'axe Y + + + + + + + Y轴文字字体 + Police du texte de l'axe Y + + + + + + + 显示Y轴网格线 + Afficher les lignes de la grille de l'axe Y + + + + + + + Y轴网格线 + Lignes de la grille de l'axe Y + + + + + X轴格式 + Format de l'axe X + + + + + X轴跨度 + Intervalle de l'axe X + + + + + + X轴刻度数 + Nombre de graduations de l'axe X + + + + + + + X轴线颜色 + Couleur de la ligne de l'axe X + + + + + + + X轴文字颜色 + Couleur du texte de l'axe X + + + + + + + X轴文字字体 + Police du texte de l'axe X + + + + + + + X轴网格线 + Lignes de la grille de l'axe X + + + + + + + 显示X轴网格线 + Afficher les lignes de la grille de l'axe X + + + + + 刷新间隔 + Intervalle de rafraîchissement + + + + + + 曲线描述 + Description de la courbe + + + + + + 曲线颜色 + Couleur de la courbe + + + + + 参考线数量 + Nombre de lignes de référence + + + + + 参考线1 + Ligne de référence 1 + + + + + 参考线2 + Ligne de référence 2 + + + + + 参考线3 + Ligne de référence 3 + + + + + 自定义 + Personnalisé + + + + + + 日 + Jour + + + + 月 + Mois + + + + 年 + Année + + + + 左侧 + Gauche + + + + 顶部 + Haut + + + + 右侧 + Droit + + + + 底部 + Bas + + + + + 潮流外观 + Apparence du flux + + + + + 矩形 + Rectangle + + + + 箭头 + Flèche + + + + 圆形 + Cercle + + + + 圆流 + Flux circulaire + + + + + 显示端号 + Afficher le numéro de terminal + + + + + 方向性 + Directionnalité + + + + 圆弧 + Arc + + + + 母线 + Banc + + + + 多态文本 + Texte polymorphe + + + + 线端 + Extrémité de ligne + + + + 自由连接线 + Ligne de connexion libre + + + + 带电区域 + Zone sous tension + + + + 椭圆 + Ellipse + + + + 圆 + Cercle + + + + 潮流线 + Ligne de flux + + + + 网格 + Grille + + + + 组合 + Groupe + + + + 直线 + Ligne droite + + + + 连接线 + Ligne de connexion + + + + 折线 + Ligne brisée + + + + 端子 + Bornier + + + + 热键 + Raccourci clavier + + + + 多边形 + Polygone + + + + 告警提示 + Avertissement + + + + 文本 + Texte + + + + + + + + 提示 + Rappel + Rappel + + + + 组合图元不可镜像! + Les éléments de groupe ne peuvent pas être mis en miroir ! + Les éléments de groupe ne peuvent pas être mis en miroir ! + + + + 精灵图元不可镜像! + Les éléments de sprite ne peuvent pas être mis en miroir ! + Les éléments de sprite ne peuvent pas être mis en miroir ! + + + + 控件图元不可镜像! + Les éléments de contrôle ne peuvent pas être mis en miroir ! + Les éléments de contrôle ne peuvent pas être mis en miroir ! + + + + 图表图元不可镜像! + Les éléments de graphique ne peuvent pas être mis en miroir ! + Les éléments de graphique ne peuvent pas être mis en miroir ! + + + + 存在重复设备:%1 + Dispositif en double existant : %1 + + + + 图层0 + Calque 0 + + + + + 状态%1 + État %1 + + + + 组态页面 + Page de configuration + + + + 静态页面 + Page statique + + + + QPushButton::图层工具 + QPushButton::Outil de calque + + + + 文字编辑 + Éditeur de texte + + + + 确定 + Confirmer + + + + 取消 + Annuler + + + + + 关系库 + Base de données relationnelle + + + + + 时序库 + Base de données temporelle + + + + + 实时库 + Base de données en temps réel + + + + 测点 + Point de mesure + + + + 数据源 + Source de données + + + + 查询语句 + Instruction de requête + + + + 警告 + Avertissement + + + + HMI正在运行 + HMI en cours d'exécution + + + + QSMessageBox + + + 是 + Oui + + + + 否 + Non + + + + QssEditor + + + 样式编辑器 + Éditeur de style + + + + Ctrl+S + Ctrl+S + + + + Ctrl+F + Ctrl+F + + + + QtBoolEdit + + + + + True + Vrai + + + + + False + Faux + + + + QtBoolPropertyManager + + + True + Vrai + + + + False + Faux + + + + QtCharEdit + + + Clear Char + Effacer le caractère + + + + QtColorEditWidget + + + ... + ... + + + + QtColorPropertyManager + + + Red + Rouge + + + + Green + Vert + + + + Blue + Bleu + + + + Alpha + Alpha + + + + QtCursorDatabase + + + Arrow + Flèche + + + + Up Arrow + Flèche vers le haut + + + + Cross + Croix + + + + Wait + Attendre + + + + IBeam + IBeam + IBeam + + + + Size Vertical + Redimensionner verticalement + + + + Size Horizontal + Redimensionner horizontalement + + + + Size Backslash + Redimensionner en antislash + + + + Size Slash + Redimensionner en slash + + + + Size All + Redimensionner tout + + + + Blank + Vide + + + + Split Vertical + Diviser verticalement + + + + Split Horizontal + Diviser horizontalement + + + + Pointing Hand + Main pointée + + + + Forbidden + Interdit + + + + Open Hand + Main ouverte + + + + Closed Hand + Main fermée + + + + What's This + Qu'est-ce que c'est + + + + Busy + Occupé + + + + QtFontEditWidget + + + ... + ... + + + + 选择字体 + Choisir la police + + + + QtFontPropertyManager + + + Family + Famille + + + + Point Size + Taille des points + + + + Bold + Gras + + + + Italic + Italique + + + + Underline + Souligné + + + + Strikeout + Barré + + + + Kerning + Crénage + + + + QtGradientDialog + + + 编辑渐变 + Éditer le dégradé + + + + 确认 + Confirmer + + + + 取消 + Annuler + + + + QtGradientEditor + + + Form + Formulaire + + + + Gradient Editor + Éditeur de dégradé + + + + This area shows a preview of the gradient being edited. It also allows you to edit parameters specific to the gradient's type such as start and final point, radius, etc. by drag & drop. + Cette zone montre un aperçu du dégradé en cours de modification. Elle vous permet également d'éditer des paramètres spécifiques au type de dégradé tels que le point de départ et le point final, le rayon, etc., par glisser-déposer. + + + + 1 + 1 + + + + 2 + 2 + + + + 3 + 3 + + + + 4 + 4 + + + + 5 + 5 + + + + Gradient Stops Editor + Éditeur de points d'arrêt du dégradé + + + + This area allows you to edit gradient stops. Double click on the existing stop handle to duplicate it. Double click outside of the existing stop handles to create a new stop. Drag & drop the handle to reposition it. Use right mouse button to popup context menu with extra actions. + Cette zone vous permet d'éditer les points d'arrêt du dégradé. Double-cliquez sur une poignée de point d'arrêt existante pour la dupliquer. Double-cliquez en dehors des poignées existantes pour créer un nouveau point d'arrêt. Glissez-déposez la poignée pour la repositionner. Utilisez le bouton droit de la souris pour faire apparaître un menu contextuel avec des actions supplémentaires. + + + + Zoom + Zoom + + + + + Reset Zoom + Réinitialiser le zoom + + + + Position + Position + + + + + + Hue + Teinte + + + + H + T + + + + + Saturation + Saturation + + + + S + S + + + + Sat + Sat + + + + + Value + Valeur + + + + V + V + + + + Val + Val + + + + + + Alpha + Alpha + + + + A + A + + + + Type + Type + + + + Spread + Étendue + + + + Color + Couleur + + + + Current stop's color + Couleur de l'arrêt actuel + + + + Show HSV specification + Afficher la spécification HSV + + + + HSV + HSV + + + + Show RGB specification + Afficher la spécification RGB + + + + RGB + RGB + + + + Current stop's position + Position de l'arrêt actuel + + + + % + % + + + + Zoom In + Zoom avant + + + + Zoom Out + Zoom arrière + + + + Toggle details extension + Basculer l'extension des détails + + + + > + > + + + + Linear Type + Type linéaire + + + + + + + + + ... + ... + + + + Radial Type + Type radial + + + + Conical Type + Type conique + + + + Pad Spread + Étendue du rembourrage + + + + Repeat Spread + Étendue de répétition + Étendue de répétition + + + + Reflect Spread + Étendue de réflexion + + + + Start X + Début X + + + + Start Y + Début Y + + + + Final X + Fin X + + + + Final Y + Fin Y + + + + + Central X + X central + + + + + Central Y + Y central + + + + Focal X + X focal + + + + Focal Y + Y focal + + + + Radius + Rayon + + + + Angle + Angle + + + + Linear + Linéaire + + + + Radial + Radial + + + + Conical + Conique + + + + Pad + Rembourrage + + + + Repeat + Répéter + + + + Reflect + Réfléchir + + + + QtGradientStopsWidget + + + New Stop + Nouvel arrêt + + + + Delete + Supprimer + + + + Flip All + Inverser tout + + + + Select All + Sélectionner tout + + + + Zoom In + Zoom avant + Zoom avant + + + + Zoom Out + Zoom arrière + Zoom arrière + + + + Reset Zoom + Réinitialiser le zoom + + + + QtGradientViewDialogN + + + Dialog + Dialogue + + + + 确认 + Confirmer + + + + 取消 + Annuler + + + + Select Gradient + Sélectionner le dégradé + + + + QtKeySequenceEdit + + + Clear Shortcut + Effacer le raccourci + + + + QtLocalePropertyManager + + + %1, %2 + %1, %2 + + + + Language + Langue + + + + Country + Pays + + + + QtPointFPropertyManager + + + (%1, %2) + (%1, %2) + + + + X + X + + + + Y + Y + + + + QtPointPropertyManager + + + (%1, %2) + (%1, %2) + + + + X + X + + + + Y + Y + + + + QtPropertyBrowserUtils + + + [%1, %2, %3] (%4) + [%1, %2, %3] (%4) + + + + [%1, %2] + [%1, %2] + + + + QtRectFPropertyManager + + + [(%1, %2), %3 x %4] + [(%1, %2), %3 x %4] + + + + X + X + + + + Y + Y + + + + Width + Largeur + + + + Height + Hauteur + + + + QtRectPropertyManager + + + [(%1, %2), %3 x %4] + [(%1, %2), %3 x %4] + + + + X + X + + + + Y + Y + + + + Width + Largeur + + + + Height + Hauteur + + + + QtSizeFPropertyManager + + + %1 x %2 + %1 x %2 + + + + Width + Largeur + + + + Height + Hauteur + + + + QtSizePolicyPropertyManager + + + + <Invalid> + <Invalide> + + + + [%1, %2, %3, %4] + [%1, %2, %3, %4] + + + + Horizontal Policy + Politique Horizontale + + + + Vertical Policy + Politique Verticale + + + + Horizontal Stretch + Étirer Horizontalement + + + + Vertical Stretch + Étirer Verticalement + + + + QtSizePropertyManager + + + %1 x %2 + %1 x %2 + + + + Width + Largeur + + + + Height + Hauteur + + + + ScriptForm + + + Copy + Copier + + + + Cut + Couper + + + + Paste + Coller + + + + Undo + Annuler + + + + Redo + Rétablir + + + + ZoomIn + Zoom avant + + + + ZoomOut + Zoom arrière + + + + Find && Replace + Rechercher && Remplacer + + + + Script Syntax Check + Vérification de la syntaxe du script + + + + F7 + F7 + + + + + Warning + Avertissement + + + + The program is incomplete. + Le programme est incomplet. + + + + Information + Information + + + + The program is correct. + Le programme est correct. + + + + Line: %1, Column: %2 + Ligne: %1, Colonne: %2 + + + + SearchDialog + + + 查找和替换 + Rechercher et remplacer + + + + 查找目标 + Rechercher + + + + 下一个 + Suivant + + + + 替换为 + Remplacer par + + + + 全部替换 + Tout remplacer + + + + qdesigner_internal::QtGradientStopsController + + + H + H + + + + S + S + + + + V + V + + + + + Hue + Teinte + + + + Sat + Sat + + + + Val + Val + + + + Saturation + Saturation + + + + Value + Valeur + + + + R + R + + + + G + G + + + + B + B + + + + Red + Rouge + + + + Green + Vert + + + + Blue + Bleu + + + + qtgradientviewn + + + Form + Formulaire + + + + + 新建 + Créer + + + + + 编辑 + Éditer + + + + + 重命名 + Renommer + + + + + + 移除 + Supprimer + + + + 渐变 + Dégradé + + + + 确认移除选中渐变? + Confirmer la suppression du dégradé sélectionné ? + + + diff --git a/resource/fr/gui/translate/product_fr.qm b/resource/fr/gui/translate/product_fr.qm new file mode 100644 index 0000000000000000000000000000000000000000..44077f50ed9b9384faf935bc7d3536180ae577d5 GIT binary patch literal 210149 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

4gvAbBu6i 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 Z=#%7pmFbGt?n=IWc%M{ZK9nmR{{RN4cas1B literal 0 HcmV?d00001 diff --git a/resource/fr/gui/translate/product_fr.ts b/resource/fr/gui/translate/product_fr.ts new file mode 100644 index 00000000..d2170534 --- /dev/null +++ b/resource/fr/gui/translate/product_fr.ts @@ -0,0 +1,12805 @@ + + + + + AddObjAlarmDialog + + + Dialog + Dialogue + + + + 设备 + Équipement + + + + 自定义告警名称 + Nom personnalisé d'alarme + + + + 类型 + Type + + + + 告警等级定义 + Définition du niveau d'alarme + + + + 告警点计算函数 + Fonction de calcul du point d'alarme + + + + 告警规则 + Règle d'alarme + + + + 越上限值 + Dépasser la limite supérieure + + + + 越下限值 + Dépasser la limite inférieure + + + + 数字量文本: + Texte de quantité numérique : + + + + 添加 + Ajouter + + + + 取消 + Annuler + + + + 新增告警点 + Nouveau point d'alarme + Nouveau point d'alarme + + + + + 数字量 + Quantité numérique + + + + + 模拟量 + Quantité analogique + + + + 枚举量 + Quantité énumérée + + + + 值 + Valeur + + + + + + + + + + + + + 提示 + Rappel + Rappel + + + + 自定义告警名称不能为空! + Le nom personnalisé de l'alarme ne peut pas être vide ! + + + + 无告警点计算函数,请先配置计算点函数! + Aucune fonction de calcul de point d'alarme, veuillez configurer la fonction de calcul de point d'abord ! + + + + 参数:%1的参数标签不能为空! + L'étiquette du paramètre %1 ne peut pas être vide ! + L'étiquette du paramètre %1 ne peut pas être vide ! + + + + 越下限值必须小于越上限值! + La limite inférieure doit être inférieure à la limite supérieure ! + + + + 无数字量文本,请先配置数字量文本! + Aucun texte de quantité numérique, veuillez d'abord configurer le texte de quantité numérique ! + + + + + + 添加失败!正在回滚事务~ + Échec de l'ajout ! En train d'annuler la transaction~ + + + + + 添加成功 + Ajout réussi + + + + 计次告警描述 + Description de l'alarme de comptage + + + + 计时告警描述 + Description de l'alarme de chronométrage + + + + AlarmCalcParaTableModel + + + 参数名称 + Nom du paramètre + + + + 参数标签 + Étiquette du paramètre + + + + 操作 + Opération + + + + AlarmDevTreeModel + + + 位置/设备组 + Emplacement/Groupe d'équipements + + + + AlarmManageForm + + + Form + Formulaire + + + + AlarmManageWidget + + + AlarmManageWidget + AlarmManageWidget + AlarmManageWidget + + + + 请输入搜索内容 + Veuillez entrer le contenu de la recherche + + + + + 查询 + Rechercher + + + + 新增告警点 + Nouveau point d'alarme + Nouveau point d'alarme + + + + 模拟量 + Quantité analogique + + + + 数字量 + Quantité numérique + + + + 多选 + Sélection multiple + + + + 保存 + Sauvegarder + + + + 描述设置 + Paramètres de description + + + + 测点描述 + Description du point de mesure + + + + + 告警动作 + Action d'alarme + + + + 告警优先级 + Priorité de l'alarme + + + + 是否自定义告警 + Personnaliser l'alarme ou non + Personnaliser l'alarme ou non + + + + 越限设置 + Paramètres de dépassement de limite + + + + 越限等级 + Niveau de dépassement de limite + + + + 越上限值 + Valeur de dépassement de la limite supérieure + + + + 越下限值 + Valeur de dépassement de la limite inférieure + + + + 越上上限值 + Valeur de dépassement de la limite maximale supérieure + + + + 越下下限值 + Valeur de dépassement de la limite minimale inférieure + + + + 越限告警 + Alarme de dépassement de limite + Alarme de dépassement de limite + + + + 告警推图文件 + Fichier de diagramme d'alarme + + + + + 选择 + Sélectionner + + + + 告警声音文件 + Fichier sonore d'alarme + + + + + 是 + Oui + + + + + 否 + Non + + + + 0 + 0 + + + + 1 + 1 + + + + 2 + 2 + + + + + + + + + + + + + + + + + + + + + 提示 + Rappel + Rappel + + + + + 点描述不能为空! + La description du point ne peut pas être vide! + + + + + 保存失败!正在回滚事务~ + Échec de la sauvegarde ! Annulation de la transaction en cours~ + + + + + 保存成功! + Sauvegarde réussie ! + Sauvegarde réussie ! + + + + + 确认删除? + Confirmer la suppression? + + + + + 删除失败!正在回滚事务~ + Échec de la suppression ! Annulation de la transaction en cours~ + + + + Open Pic + Ouvrir l'image + + + + Pic Files (*.glx) + Fichiers d'image (*.glx) + + + + Open Voice + Ouvrir le fichier audio + + + + Pic Files (*.wav) + Fichiers audio (*.wav) + + + + 当前登录用户无修改权限! + L'utilisateur actuellement connecté n'a pas les droits de modification ! + L'utilisateur actuellement connecté n'a pas les droits de modification ! + + + + 越下下限值必须小于越下限值 + La limite inférieure inférieure doit être inférieure à la limite inférieure + + + + + 越下限值必须小于越上限值 + La limite inférieure doit être inférieure à la limite supérieure + + + + 越上限值必须小于越上上限值 + La limite supérieure doit être inférieure à la limite supérieure supérieure + + + + 当前登录用户无新增告警点权限! + L'utilisateur actuellement connecté n'a pas l'autorisation d'ajouter de nouveaux points d'alarme ! + + + + 请选择要添加自定义告警的设备组! + Veuillez sélectionner le groupe d'équipements auquel ajouter une alarme personnalisée ! + Veuillez sélectionner le groupe d'équipements auquel ajouter une alarme personnalisée ! + + + + 此设备组下无可用设备,请重新选择设备组! + Aucun équipement disponible sous ce groupe d'équipements, veuillez en choisir un autre ! + Aucun équipement disponible sous ce groupe d'équipements, veuillez en choisir un autre ! + + + + + 全选 + Tout sélectionner + + + + + 全不选 + Tout désélectionner + + + + + 删除 + Supprimer + + + + AlarmMng + + + 未知车站 + Station inconnue + + + + 未知设备组 + Groupe d'équipements inconnu + Groupe d'équipements inconnu + + + + 未知设备 + Équipement inconnu + Équipement inconnu + + + + 未知 + Inconnu + + + + AlarmPointTableModel + + + 告警点名称 + Nom du point d'alarme + + + + 所属位置 + Emplacement associé + + + + 所属设备组 + Groupe d'équipements associé + Groupe d'équipements associé + + + + 所属设备 + Équipement associé + Équipement associé + + + + 告警等级 + Niveau d'alarme + + + + 告警动作 + Action d'alarme + + + + 未知 + Inconnu + + + + CAccidentReviewDialog + + + + + + 事故追忆 + Souvenir de l'accident + + + + + + + 确认 + Confirmer + + + + + + + 取消 + Annuler + + + + + + + + + + + 提示 + Rappel + Rappel + + + + + + + 请选择一张画面! + Veuillez sélectionner un écran ! + Veuillez sélectionner un écran ! + + + + + + + 请选择其他画面! + Veuillez sélectionner un autre écran ! + Veuillez sélectionner un autre écran ! + + + + CActionSequModel + + + 标记 + Marque + + + + 开关名称 + Nom de l'interrupteur + + + + 延时 + Délai + + + + 目标状态 + État cible + + + + 执行状态 + État d'exécution + + + + 实际状态 + État actuel + + + + 未执行 + Non exécuté + + + + 正在执行 + En cours d'exécution + + + + 已触发 + Déclenché + + + + 执行失败 + Échec de l'exécution + + + + 执行成功 + Exécution réussie + + + + 执行终止 + Exécution terminée + + + + 执行暂停 + Exécution en pause + + + + 执行跳过 + Exécution sautée + + + + CAddShieldDialog + + + 新增告警屏蔽 + Nouveau blocage d'alarme + Nouveau blocage d'alarme + + + + 对象类型 + Type d'objet + + + + 显示勾选项 + Afficher les éléments cochés + + + + 关键字过滤 + Filtrage par mot-clé + + + + 对象名称 + Nom de l'objet + + + + 屏蔽类型 + Type de blocage + Type de blocage + + + + 名称 + Nom + + + + + 时段类型 + Type de période + + + + + + 结束时间 + Heure de fin + + + + + + 开始时间 + Heure de début + + + + 一 + Lun + + + + 二 + Mar + + + + 三 + Mer + + + + 四 + Jeu + + + + 五 + Ven + + + + 六 + Sam + + + + 七 + Dim + + + + 至 + À + + + + 日期 + Date + + + + 屏蔽描述 + Description du blocage + Description du blocage + + + + 新增 + Nouveau + Nouveau + + + + 取消 + Annuler + + + + 保存 + Sauvegarder + Sauvegarder + + + + 编辑告警屏蔽 + Éditer le blocage d'alarme + Éditer le blocage d'alarme + + + + 位置 + Emplacement + + + + 设备组 + Groupe d'équipements + Groupe d'équipements + + + + 设备 + Équipement + Équipement + + + + 一次性 + Une fois + + + + 每周 + Hebdomadaire + + + + 每月 + Mensuel + + + + 请先取消屏蔽! + Veuillez d'abord annuler le blocage ! + Veuillez d'abord annuler le blocage ! + + + + 请至少勾选一项! + Veuillez sélectionner au moins un élément ! + + + + 当前用户无标签设置功能权限! + L'utilisateur actuel n'a pas la permission de configurer les étiquettes ! + + + + 对象名称不能为空! + Le nom de l'objet ne peut pas être vide ! + + + + 屏蔽类型为空! + Le type de blocage est vide ! + Le type de blocage est vide ! + + + + 时段类型为空! + Le type de période est vide ! + + + + 开始时间不能大于结束时间! + L'heure de début ne peut pas être ultérieure à l'heure de fin ! + L'heure de début ne peut pas être ultérieure à l'heure de fin ! + + + + 周一到周七至少需要选择一天! + Il faut sélectionner au moins un jour du lundi au dimanche ! + Il faut sélectionner au moins un jour du lundi au dimanche ! + + + + 获取当前登录用户失败! + Échec de l'obtention de l'utilisateur connecté actuel ! + + + + 保存失败! + Échec de la sauvegarde ! + Échec de la sauvegarde ! + + + + 提示 + Rappel + Rappel + + + + CAiAlarmTreeModel + + + + 时间 + Temps + + + + + 优先级 + Priorité + + + + + 位置 + Emplacement + + + + + 责任区 + Zone de responsabilité + + + + + 告警类型 + Type d'alarme + + + + + 告警状态 + État de l'alarme + + + + + 复归状态 + État de la réinitialisation + État de la réinitialisation + + + + + 确认状态 + État de confirmation + + + + + 告警内容 + Contenu de l'alarme + + + + CAlarmBaseData + + + + 其他 + Autre + + + + CAlarmColorWidget + + + + Form + Formulaire + Formulaire + + + + + 动作颜色 + Couleur de l'action + + + + + 恢复颜色 + Couleur de rétablissement + + + + + 确认颜色 + Couleur de confirmation + + + + + 闪烁颜色 + Couleur clignotante + + + + CAlarmCompare + + + Form + Formulaire + + + + 告警等级 + Niveau d'alarme + + + + 统计类型 + Type de statistiques + + + + 日 + Jour + + + + 月 + Mois + + + + 时间段 + Période + + + + + yyyy-MM-dd + aaaa-MM-jj + yyyy-MM-dd + + + + - + - + + + + 告警内容关键字 + Mots-clés du contenu de l'alarme + + + + 查询 + Rechercher + + + + 11 + 11 + + + + 22 + 22 + + + + 33 + 33 + + + + + + + + + + + + + 警告 + Avertissement + + + + 未选择告警等级 + Niveau d'alarme non sélectionné + + + + 开始时间需小于等于结束时间 + L'heure de début doit être antérieure ou égale à l'heure de fin + L'heure de début doit être antérieure ou égale à l'heure de fin + + + + 当前类型最多七天 + Le type actuel ne peut être que pour une période maximale de sept jours + + + + 当前类型最多六个月 + Le type actuel ne peut être que pour une période maximale de six mois + + + + 请选择位置 + Veuillez sélectionner un emplacement + + + + + 位置最少选择2个 + Veuillez sélectionner au moins 2 emplacements + + + + 位置最多选择%1个 + Veuillez sélectionner au maximum %1 emplacements + + + + 请选择设备组 + Veuillez sélectionner un groupe d'équipements + + + + 设备组最多选择%1个 + Veuillez sélectionner au maximum %1 groupes d'équipements + + + + 提示 + Rappel + Rappel + + + + 告警条数过多,仅显示前 %1 条 + Nombre d'alarmes trop élevé, affichage uniquement des %1 premières + Nombre d'alarmes trop élevé, affichage uniquement des %1 premières + + + + CAlarmDeviceTreeModel + + + + 系统信息 + Informations système + + + + CAlarmDeviceTreeView + + + 全选 + Sélectionner tout + + + + 清空 + Vider + + + + 选择 + Sélectionner + + + + 清除 + Effacer + + + + 禁止告警 + Interdire les alarmes + Interdire les alarmes + + + + CAlarmFilterDialog + + + + 过滤 + Filtrer + + + + + 优先级 + Priorité + + + + + + + + + + + 全选 + Sélectionner tout + + + + + 位置 + Emplacement + + + + + 责任区 + Zone de responsabilité + + + + + 告警状态 + État de l'alarme + État de l'alarme + + + + + 状态 + État + + + + + 未确认 + Non confirmé + + + + + 已确认 + Confirmé + + + + + 告警内容关键字 + Mot-clé du contenu de l'alarme + Mot-clé du contenu de l'alarme + + + + + 复归 + Réinitialisation + Réinitialisation + + + + + 已复归 + Déjà réinitialisé + + + + + 未复归 + Non réinitialisé + + + + + 设备类型 + Type d'équipement + + + + + 时间 + Temps + + + + + 开始时间 + Heure de début + + + + + + + yyyy/MM/dd hh:mm + aaaa/MM/jj hh:mm + yyyy/MM/dd hh:mm + + + + + 结束时间 + Heure de fin + + + + + 确定 + Confirmer + + + + + 取消 + Annuler + + + + 提示 + Rappel + Rappel + + + + 结束时间大于开始时间! + L'heure de fin est ultérieure à l'heure de début ! + L'heure de fin est ultérieure à l'heure de début ! + + + + CAlarmForm + + + + Form + Formulaire + + + + + 当前显示数量: + Nombre affiché actuel : + + + + + + + 0 + 0 + + + + + 过滤告警数量: + Nombre d'alarmes filtrées : + + + + + 智能告警 + Alarme intelligente + Alarme intelligente + + + + + 设置 + Paramètres + + + + + 关闭 + Fermer + + + + + 优先级: + Priorité : + + + + + 位置: + Emplacement : + + + + + 时间: + Temps : + + + + + 告警状态: + État de l'alarme : + État d'alerte: + + + + + 过滤 + Filtrer + + + + + 禁止列表 + Liste noire + + + + + 导出 + Exporter + + + + + + + + + 删除 + Supprimer + + + + + + + + + 确认 + Confirmer + + + + + + + 禁止告警 + Interdire les alarmes + + + + + 按设备组关键字搜索 + Rechercher par mot-clé du groupe d'équipement + + + + + + + + + 请选择时间 + Veuillez sélectionner Temps + Veuillez sélectionner Temps + + + + + + + + + + + + + + + + + 请选择优先级 + Veuillez sélectionner Priorité + Veuillez sélectionner Priorité + + + + + + + + + + + + + + + + + 请选择位置 + Veuillez sélectionner Emplacement + Veuillez sélectionner Emplacement + + + + + + + + + + + + + + + + + 请选择告警状态 + Veuillez sélectionner État de l'alarme + Veuillez sélectionner État de l'alarme + + + + + Save File + Sauvegarder le fichier + Sauvegarder le fichier + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 提示 + Rappel + Rappel + + + + + 导出成功 + Exportation réussie + + + + + 禁止告警失败,请检查实时库连接! + Échec de l'interdiction d'alarme, veuillez vérifier la connexion à la bibliothèque en temps réel ! + Échec de l'interdiction d'alarme, veuillez vérifier la connexion à la bibliothèque en temps réel ! + + + + 请选择一条告警! + Veuillez sélectionner une alarme ! + Veuillez sélectionner une alarme ! + + + + + + + + 全选 + Tout sélectionner + + + + + + + + + 全不选 + Tout désélectionner + + + + + + + 视频 + Vidéo + + + + + + + 事故追忆 + Souvenir de l'accident + + + + + 合并 + Fusionner + + + + + 分离 + Séparer + + + + + + + + + + + + + 当前未选中任何项! + Aucun élément sélectionné actuellement ! + + + + + + + + + 当前用户不具备该告警删除操作权限! + L'utilisateur actuel n'a pas les droits nécessaires pour supprimer cette alarme ! + L'utilisateur actuel n'a pas les droits nécessaires pour supprimer cette alarme ! + + + + + + + + + + + + + + + + + + + + + 是否跳过该项? + Voulez-vous ignorer cet élément ? + + + + + + + + + + + + + + + + + + + + + 跳过 + Ignorer + + + + + + + + + + + + + + + + + + + + + 全部跳过 + Tout ignorer + + + + + + + + + + + + + + + + + + + + + 取消 + Annuler + + + + + + + 包含未确认告警! + Contient des alarmes non confirmées ! + Contient des alertes non confirmées ! + + + + + 当前未选中任何智能告警和未聚类的原始告警! + Aucune alarme intelligente ni alarme brute non regroupée sélectionnée actuellement ! + Aucune alarme intelligente ni alarme brute non regroupée sélectionnée actuellement ! + + + + + 包含未确认原始告警告警! + Contient des alarmes brutes non confirmées ! + Contient des alarmes brutes non confirmées ! + + + + + + + 当前用户不具备该告警确认操作权限! + L'utilisateur actuel n'a pas les droits nécessaires pour confirmer cette alarme ! + L'utilisateur actuel n'a pas les droits nécessaires pour confirmer cette alarme ! + + + + + 包含智能告警,无法合并! + Contient des alarmes intelligentes, impossible à fusionner ! + Contient des alarmes intelligentes, impossible à fusionner ! + + + + + 包含已经聚类的原始告警,无法合并! + Contient des alarmes brutes déjà regroupées, impossible à fusionner ! + Contient des alarmes brutes déjà regroupées, impossible à fusionner ! + + + + + 当前用户无此条原始告警合并权限! + L'utilisateur actuel n'a pas les droits nécessaires pour fusionner cette alarme brute ! + L'utilisateur actuel n'a pas les droits nécessaires pour fusionner cette alarme brute ! + + + + + 包含不同域的原始告警,无法合并! + Contient des alarmes brutes dans des domaines différents, impossible à fusionner ! + Contient des alarmes brutes dans des domaines différents, impossible à fusionner ! + + + + + 包含智能告警,无法分离! + Contient des alarmes intelligentes, impossible à séparer ! + Contient des alarmes intelligentes, impossible à séparer ! + + + + + 无原始告警,无法分离! + Aucune alarme brute, impossible à séparer ! + Aucune alarme brute, impossible à séparer ! + + + + + + + 包含未聚类的原始告警,无法分离! + Contient des alarmes brutes non regroupées, impossible à séparer ! + Contient des alarmes brutes non regroupées, impossible à séparer ! + + + + + 无此条智能告警的编辑权限! + Pas de droits d'édition pour cette alarme intelligente ! + Pas de droits d'édition pour cette alarme intelligente ! + + + + + 包含不同智能告警下的原始告警,无法分离! + Contient des alarmes brutes sous différentes alarmes intelligentes, impossible à séparer ! + Contient des alarmes brutes sous différentes alarmes intelligentes, impossible à séparer ! + + + + + + + 请选中含有趋势的告警(模拟量和累积量)! + Veuillez sélectionner les alarmes contenant des tendances (valeurs analogiques et cumulées) ! + Veuillez sélectionner les alarmes contenant des tendances (valeurs analogiques et cumulées) ! + + + + + + + + + 请选中具有视频的告警! + Veuillez sélectionner les alarmes avec vidéo ! + Veuillez sélectionner les alarmes avec vidéo ! + + + + + + + + + 故障录播暂不实现 + La fonctionnalité d'enregistrement des pannes n'est pas encore implémentée + + + + + + 确定 + Confirmer + + + + + + + + + 禁止告警失败! + Échec de la désactivation de l'alarme ! + Échec de la désactivation de l'alarme ! + + + + + + + 警告 + Avertissement + Avertissement + + + + + 无禁止告警权限! + Pas de droits pour désactiver l'alarme ! + Pas de droits pour désactiver l'alarme ! + + + + + 初始化权限失败! + Échec de l'initialisation des droits ! + + + + 全勾选 + Sélectionner tout + + + + 确定删除所有事件? + Êtes-vous sûr de vouloir supprimer tous les événements ? + + + + 删除完成! + Suppression terminée ! + + + + + 请选择至少一条告警! + Veuillez sélectionner au moins une alarme ! + Veuillez sélectionner au moins une alarme ! + + + + CAlarmInhibitDialog + + + + 禁止告警列表 + Liste des alarmes désactivées + Liste des alarmes désactivées + + + + + 关闭 + Fermer + + + + + + + 取消禁止告警 + Annuler la désactivation de l'alarme + Annuler la désactivation de l'alarme + + + + + 时间 + Temps + + + + + 优先级 + Priorité + + + + + 位置 + Emplacement + + + + + 责任区 + Zone de responsabilité + + + + + 告警类型 + Type d'alarme + Type d'alarme + + + + + 确认状态 + État de confirmation + + + + + 告警内容 + Contenu de l'alarme + Contenu de l'alarme + + + + + 未确认 + Non confirmé + + + + + 已确认 + Confirmé + + + + + 警告 + Avertissement + Avertissement + + + + + 请选择取消禁止告警所在的行! + Veuillez sélectionner la ligne de l'alarme à réactiver ! + Veuillez sélectionner la ligne de l'alarme à réactiver ! + + + + CAlarmItemModel + + + + 时间 + Temps + + + + + 优先级 + Priorité + + + + + 位置 + Emplacement + + + + + 责任区 + Zone de responsabilité + + + + + 告警类型 + Type d'alarme + + + + + 告警状态 + État d'alarme + + + + + 复归状态 + État de réinitialisation + + + + + 确认状态 + État de confirmation + + + + 告警内容 + Contenu de l'alarme + + + + + 未复归 + Non réinitialisé + + + + + 已复归 + Réinitialisé + + + + + - + - + + + + + 未确认 + Non confirmé + + + + + 已确认 + Confirmé + + + + 告警内容 + Contenu de l'alarme + + + + CAlarmModel + + + 时间 + Temps + + + + 优先级 + Priorité + + + + 所属位置 + Emplacement + + + + 告警内容 + Contenu de l'alarme + + + + + 操作 + Opération + + + + 趋势 + Tendance + + + + 录波 + Enregistrement de l'onde + + + + CAlarmPlugin + + + + 提示 + Rappel + Rappel + + + + + 此次一共确认 + Confirmer le total + + + + + 条告警 + alarmes + + + + + + + + + 当前用户不具备该告警确认操作权限! + L'utilisateur actuel n'a pas les autorisations pour confirmer cette alarme ! + + + + + + + + + + + 是否跳过该项? + Voulez-vous ignorer cet élément ? + + + + + + + + + + + 跳过 + Ignorer + + + + + + + + + + + 全部跳过 + Tout ignorer + + + + + + + + + + + 取消 + Annuler + + + + + 包含未确认告警! + Contient des alarmes non confirmées ! + + + + CAlarmReport + + + Dialog + Dialogue + + + + 导出 + Exporter + + + + 选择导出目录 + Choisir le répertoire d'exportation + + + + CAlarmSetDlg + + + + 设置 + Paramètres + + + + + 动作选择 + Choix d'action + + + + + 声音告警 + Alarme sonore + Alarme sonore + + + + + 语音告警 + Alarme vocale + Alarme vocale + + + + + 告警方式 + Mode d'alarme + Mode d'alarme + + + + + 方式 + Mode + Mode + + + + + 次数 + Fréquence + + + + + 优先级颜色选择 + Choix de la couleur de priorité + + + + + <html><head/><body><p>选中告警时,告警的文字颜色</p></body></html> + <html><head/><body><p>Couleur du texte de l'alarme sélectionnée</p></body></html> + <html><head/><body><p>Couleur du texte de l'alarme sélectionnée</p></body></html> + + + + + 选中文字颜色 + Couleur du texte sélectionné + + + + + + + + + 颜色 + Couleur + + + + + <html><head/><body><p>选中告警时,告警的背景颜色</p></body></html> + <html><head/><body><p>Couleur de fond de l'alarme sélectionnée</p></body></html> + <html><head/><body><p>Couleur de fond de l'alarme sélectionnée</p></body></html> + + + + + 选中背景颜色 + Couleur de fond sélectionnée + + + + + <html><head/><body><p>无告警时,告警小窗中&quot;当前无告警&quot;文字颜色</p></body></html> + <html><head/><body><p>Couleur du texte « Aucune alarme actuelle » lorsque aucune alarme n'est présente</p></body></html> + <html><head/><body><p>Couleur du texte « Aucune alarme actuelle » lorsque aucune alarme n'est présente</p></body></html> + + + + + 无告警文字颜色 + Couleur du texte sans alarme + Couleur du texte sans alarme + + + + + 语音引擎 + Moteur vocal + + + + + 引擎 + Moteur + + + + + 语言 + Langue + + + + + 语音名称 + Nom de la voix + + + + + 确定 + Confirmer + + + + + 取消 + Annuler + + + + + 不报 + Ne pas signaler + + + + + 重复 + 5次 + répéter + + + + + 重复x次 + 10次 + répéter x fois + + + 15次 + 15 fois + + + 无限次 + Illimité + + + + CAlarmSetMng + + + + 当前无告警! + Pas d'alarme actuelle! + + + + + 未知告警等级 + Niveau d'alarme inconnu + + + + CAlarmShield + + + CAlarmShield + CAlarmShield + CAlarmShield + + + + 新增 + Nouveau + Nouveau + + + + 批量启用 + Activer en masse + + + + 批量取消 + Annuler en masse + + + + 批量删除 + Supprimer en masse + + + + 屏蔽状态 + État du blocage + État du blocage + + + + 名称 + Nom + + + + 查询 + Rechercher + + + + + + + + + + 提示 + Rappel + Rappel + + + + 请勾选一条未启用的屏蔽信息! + Veuillez sélectionner une information de blocage non activée ! + + + + 屏蔽失败! + Échec du blocage ! + + + + 请勾选一条已启用的屏蔽信息! + Veuillez sélectionner une information de blocage activée ! + + + + 解除失败! + Échec de l'annulation ! + + + + 请先取消屏蔽! + Veuillez d'abord annuler le blocage ! + + + + 请勾选一条屏蔽信息! + Veuillez sélectionner une information de blocage ! + + + + 删除失败! + Échec de la suppression ! + + + + 全部 + Tout + + + + 未启用 + Non activé + + + + 已启用 + Activé + + + + 已过期 + Expiré + + + + CAlarmShiledDialog + + + + 禁止告警 + Interdire l'alarme + + + + + 未找到插件 + Plugin introuvable + + + + + 装载异常 + Erreur de chargement + + + + CAlarmStatistics + + + CAlarmStatistics + CAlarmStatistics + CAlarmStatistics + + + + 位置 + Emplacement + + + + 告警等级 + Niveau d'alarme + + + + 时间段 + Période + + + + + yyyy-MM-dd + aaaa-MM-jj + yyyy-MM-dd + + + + - + - + + + + 告警内容关键字 + Mot-clé du contenu d'alarme + + + + 查询 + Recherche + + + + 普通告警 + Alarme ordinaire + + + + 智能告警 + Alarme intelligente + + + + 告警比对 + Comparaison d'alarme + + + + 分析报告 + Rapport d'analyse + + + + 22 + 22 + + + + 33 + 33 + + + + + 警告 + Avertissement + + + + 未选择告警等级 + Niveau d'alarme non sélectionné + + + + 开始时间需小于等于结束时间 + L'heure de début doit être antérieure ou égale à l'heure de fin + L'heure de début doit être antérieure ou égale à l'heure de fin + + + + CAlarmTaskMngDlg + + + + 工单管理 + Gestion des ordres de travail + + + + + 作业组状态: + État du groupe de travail : + + + + + 未创建 + Non créé + + + + + 创建作业组 + Créer un groupe de travail + + + + + 查看作业组 + Voir le groupe de travail + + + + + 查看资产 + Voir les actifs + + + + + + + + + + + 提醒 + Rappel + + + + + 艾动接口初始化失败 + Échec de l'initialisation de l'interface d'iMotion + + + + + + + 未关联作业组,请先关联作业组 + Pas de groupe de travail associé, veuillez d'abord associer un groupe de travail + + + + + 创建作业组成功 + Création du groupe de travail réussie + + + + + 创建作业组失败 + Échec de la création du groupe de travail + + + + + 获取作业组信息失败 + Échec de l'obtention des informations du groupe de travail + + + + CAlarmWidget + + + + + + + + + + + + + + 确认 + Confirmer + + + + + 当前用户不具备该告警所在位置的操作权限! + L'utilisateur actuel n'a pas les autorisations nécessaires pour effectuer des opérations à l'emplacement de cette alarme ! + + + + + 当前用户不具备该告警所在责任区的操作权限! + L'utilisateur actuel n'a pas les autorisations nécessaires pour effectuer des opérations dans la zone de responsabilité de cette alarme ! + + + + CAssetDataMng + + + 需要导入的资产信息为空 + Les informations sur les actifs à importer sont vides + + + + 数据库打开失败,导入资产信息失败 + Échec de l'ouverture de la base de données, échec de l'importation des informations sur les actifs + + + + + 满足条件的导入条数为0 + Le nombre d'éléments à importer répondant aux critères est de 0 + + + + 执行插入语句失败,导入资产信息失败 + Échec de l'exécution de l'instruction d'insertion, échec de l'importation des informations sur les actifs + Échec de l'exécution de l'instruction d'insertion, échec de l'importation des informations sur les actifs + + + + + 一共%1条,成功导入%2条 + Total de %1 éléments, %2 éléments importés avec succès + + + + 需要导入的维护记录为空 + Les enregistrements de maintenance à importer sont vides + + + + 数据库打开失败,导入维护记录失败 + Échec de l'ouverture de la base de données, échec de l'importation des enregistrements de maintenance + + + + 执行插入语句失败,导入维护记录失败 + Échec de l'exécution de l'instruction d'insertion, échec de l'importation des enregistrements de maintenance + Échec de l'exécution de l'instruction d'insertion, échec de l'importation des enregistrements de maintenance + + + + CAssetTableModel + + + 设备ID + ID de l'équipement + + + + 设备名称 + Nom de l'équipement + + + + 型号 + Modèle + + + + 参数 + Paramètres + + + + 安装日期 + Date d'installation + + + + 状态 + État + + + + 厂家联系方式 + Contact du fabricant + + + + 维护周期 + Période de maintenance + + + + 备注 + Remarques + + + + 一个月 + Un mois + + + + 三个月 + Trois mois + + + + 半年 + Six mois + + + + 一年 + Un an + + + + CAssetView + + + 全选 + Sélectionner tout + + + + 全不选 + Désélectionner tout + + + + CAssetWidget + + + CAssetWidget + CAssetWidget + CAssetWidget + + + + 添加 + Ajouter + + + + 删除 + Supprimer + + + + 导入 + Importer + + + + 导出 + Exporter + + + + 位置/设备组 + Emplacement/Groupes d'équipements + + + + 设备组 + Groupes d'équipements + + + + 关键字 + Mots-clés + + + + 查询 + Rechercher + + + + 设备管理 + Gestion des équipements + + + + 添加资产信息 + Ajouter des informations sur les actifs + + + + 同时会删除维护记录 + Les enregistrements de maintenance seront également supprimés + + + + 对设备名称、型号、参数和内容生效 + Applicable aux noms, modèles, paramètres et contenus des équipements + Applicable aux noms, modèles, paramètres et contenus des équipements + + + + 未知位置 + Emplacement inconnu + + + + 未知设备组 + Groupe d'équipements inconnu + + + + + 提示 + Rappel + Rappel + + + + 所属设备组 + Groupe d'équipements associé + Groupe d'équipements associé + + + + Save File + Sauvegarder le fichier + Sauvegarder le fichier + + + + Open File + Ouvrir le fichier + + + + 请先选中位置或设备组 + Veuillez d'abord sélectionner un emplacement ou un groupe d'équipements + + + + 设备组为空 + Le groupe d'équipements est vide + + + + 添加成功! + Ajout réussi ! + + + + 当前未选中任何项! + Aucun élément sélectionné actuellement ! + + + + 删除失败! + Échec de la suppression ! + + + + 删除成功! + Suppression réussie ! + + + + + 资产信息 + Informations sur les actifs + + + + + 维护记录 + Enregistrements de maintenance + + + + CBatchOperation + + + Dialog + Dialogue + + + + 测点类型 + Type de point de mesure + + + + 批量操作 + Opération en lot + + + + 执行 + Exécuter + + + + 全部 + Tous + + + + 模拟量 + Quantité analogique + Quantité analogique + + + + 数字量 + Quantité numérique + Quantité numérique + + + + 混合量 + Quantité mixte + Quantité mixte + + + + + + + 获取登录信息失败! + Échec de l'obtention des informations de connexion ! + + + + + 获取登录账户失败! + Échec de l'obtention du compte de connexion ! + + + + + 无标签操作权限! + Pas d'autorisation pour l'opération sur l'étiquette ! + Pas d'autorisation pour l'opération sur l'étiquette ! + + + + 测点“%1”,%2 + Point de mesure « %1 », %2 + Point de mesure « %1 », %2 + + + + 控制进行中 + Contrôle en cours + + + + 下发取消命令失败 + Échec de l'envoi de la commande d'annulation + + + + 提示 + Rappel + Rappel + + + + + 成功 + Réussi + + + + 失败 + Échoué + + + + 失败:%1 + Échec : %1 + + + + 批量编辑 + Édition en lot + + + + + 警告 + Avertissement + + + + + 暂不能批量操作! + Les opérations en lot ne sont pas encore disponibles ! + + + + CBatchOperationModel + + + 测点信息 + Informations sur le point de mesure + + + + 当前值 + Valeur actuelle + + + + 控制操作 + Opération de contrôle + + + + 执行结果 + Résultat de l'exécution + + + + CButtonGroupWidget + + + 配置错误! + Erreur de configuration ! + + + + CChanRealStatusWidget + + + 通讯状态 + État de la communication + État de la communication + + + + 正常 + Normal + + + + 异常 + Anormal + + + + 未找到组号%1! + Numéro de groupe %1 non trouvé ! + + + + CColorLabel + + + + 颜色选择 + Sélection de couleur + + + + CConditionModel + + + 参数 + Paramètre + + + + 条件 + Condition + + + + 且 + ET + + + + 小于 %1 + Inférieur à %1 + + + + 小于等于 %1 + Inférieur ou égal à %1 + + + + 等于 %1 + Égal à %1 + + + + 大于等于 %1 + Supérieur ou égal à %1 + + + + 大于 %1 + Supérieur à %1 + + + + 不等于 %1 + Différent de %1 + + + + CConfirmDialog + + 提交 + Soumettre + + + 日志信息: + Informations sur le journal : + + + 确认 + Confirmer + + + 取消 + Annuler + + + 无修改 + Pas de modification + + + 添加 + Ajouter + + + 冲突 + Conflit + + + 删除 + Supprimer + + + 忽略 + Ignorer + + + 修改 + Modifier + + + 替换 + Remplacer + + + 未纳入版本控制的目录,被外部引用的目录所创建 + Répertoire non versionné créé par un répertoire référencé externe + Répertoire non versionné créé par un répertoire référencé externe + + + 未纳入版本控制 + Non versionné + + + 遗失 + Perdu + + + 重名 + Nom dupliqué + + + 自定义非法状态 + État illégal personnalisé + + + 改变 + Modifier + + + 未锁定 + Non verrouillé + + + 锁定 + Verrouillé + + + 没有历史 + Pas d'historique + + + 包含历史 + Contient un historique + + + 正常 + Normal + + + 以切换 + Basculer + + + 被外部引用创建的文件 + Fichier créé par une référence externe + + + 没有被锁定标记 + Pas de marque de verrouillage + + + 存在锁定标记 + Marque de verrouillage présente + + + 树冲突 + Conflit d'arbre + + + 名称 + Nom + + + 状态 + État + + + + CConstCurves + + + CConstCurves + CConstCurves + + + + 查询 + Rechercher + + + + + + 提示 + Rappel + Rappel + + + + %1 定值读取失败: %2 + Échec de la lecture de la valeur fixe %1 : %2 + + + + %1 定值读取超时 + Délai d'attente de lecture de la valeur fixe %1 + + + + 名称 + Nom + + + + 值 + Valeur + + + + %1 下发定值读取命令失败 + Échec de l'envoi de la commande de lecture de la valeur fixe %1 + + + + CCurveChartView + + + 位置: + Emplacement : + Emplacement : + + + + 设备类型: + Type d'équipement : + Type d'équipement : + + + + CCurveLegendModel + + + + 设备组-测点 + Groupe d'équipements - Points de mesure + Groupe d'équipements - Points de mesure + + + + + 颜色 + Couleur + + + + + 值 + Valeur + + + + + 最大值 + Valeur maximale + + + + + 最大值时间 + Heure de la valeur maximale + + + + + 最小值 + Valeur minimale + + + + + 最小值时间 + Heure de la valeur minimale + + + + + 平均值 + Moyenne + + + + + 单位 + Unité + + + + + Y轴缩放系数 + Coefficient de zoom de l'axe Y + Coefficient de zoom de l'axe Y + + + + + Y轴偏移系数 + Coefficient de décalage de l'axe Y + + + + CCurveLegendView + + + + 全不选 + Tout désélectionner + Tout désélectionner + + + + + 删除 + Supprimer + + + + + 查看最大值 + Voir la valeur maximale + + + + + 查看最小值 + Voir la valeur minimale + + + + CDataOptWidget + + + CDataOptWidget + CDataOptWidget + CDataOptWidget + + + + 位置: + Emplacement : + Emplacement : + + + + + 专业 + Spécialité + + + + 标签类型: + Type d'étiquette : + + + + 总数 + Total + + + + 刷新 + Rafraîchir + + + + 取消设置 + Annuler les réglages + + + + 设备组/点 + Groupe d'équipements/Points + Groupe d'équipements/Points + + + + 位置 + Emplacement + Emplacement + + + + 设备 + Équipement + Équipement + + + + 标签类型 + Type d'étiquette + + + + 操作时间 + Temps d'opération + + + + 设置值 + Valeur réglée + + + + 状态文本 + Texte d'état + + + + 主机 + Hôte + + + + 操作员 + Opérateur + + + + 用户组 + Groupe d'utilisateurs + + + + 点标签 + Étiquette de point + + + + 表名 + Nom de la table + + + + 全部 + Tout + + + + + + 未知 + Inconnu + + + + 获取当前登录用户失败! + Échec de l'obtention de l'utilisateur connecté ! + Échec de l'obtention de l'utilisateur connecté ! + + + + 无操作权限! + Pas de droits d'opération ! + + + + 初始化权限失败! + Échec de l'initialisation des droits ! + + + + 提示 + Rappel + Rappel + + + + 请至少选择一项人工置数信息! + Veuillez sélectionner au moins une information de saisie manuelle ! + + + + 获取标签操作信息有误,%1 + Erreur dans l'obtention des informations d'opération de l'étiquette, %1 + Erreur dans l'obtention des informations d'opération de l'étiquette, %1 + + + + 获取标签信息有误,%1 + Erreur dans l'obtention des informations de l'étiquette, %1 + Erreur dans l'obtention des informations de l'étiquette, %1 + + + + 下发取消命令失败 + Échec de l'envoi de la commande d'annulation + + + + CDataOptWork + + + 读取标签信息表失败 + Échec de la lecture de la table des informations d'étiquette + + + + CDevHisDataWidget + + + CDevHisDataWidget + CDevHisDataWidget + CDevHisDataWidget + + + + 区域: + Région : + + + + 开始时间: + Heure de début : + + + + + yyyy-MM-dd HH:mm + aaaa-MM-jj HH:mm + yyyy-MM-dd HH:mm + + + + 设备类型: + Type d'équipement : + Type d'équipement : + + + + 结束时间: + Heure de fin : + + + + 设备名称: + Nom de l'équipement : + Nom de l'appareil : + + + + 查询 + Rechercher + + + + Excel + Excel + + + + Pdf + Pdf + + + + 打印 + Imprimer + + + + 清除 + Effacer + + + + + 保存 + Sauvegarder + Sauvegarder + + + + + + + 提示 + Avis + + + + + 导出成功! +导出路径: + Exportation réussie ! +Chemin d'exportation : + + + + + 保存失败 + Échec de la sauvegarde + Échec de la sauvegarde + + + + CDevHisTableModel + + + 日期/时间 + Date/Heure + + + + 设备名称 + Nom de l'équipement + Nom de l'équipement + + + + 所属区域 + Région + + + + CDevRealDataWidget + + + CDevRealDataWidget + CDevRealDataWidget + + + + 位置 + Emplacement + Emplacement + + + + 专业 + Spécialité + + + + 关键字查询 + Recherche par mot-clé + + + + 禁止控制 + Interdire le contrôle + + + + 恢复控制 + Rétablir le contrôle + + + + 禁止刷新 + Interdire le rafraîchissement + + + + 恢复刷新 + Rétablir le rafraîchissement + + + + 禁止告警 + Interdire les alarmes + + + + 恢复告警 + Rétablir les alarmes + + + + 人工置数 + Valeur manuelle + + + + 取消置数 + Annuler la valeur + + + + 设备组 + Groupe d'équipements + Groupe d'équipements + + + + 点类型 + Type de point + + + + 全部 + Tous + + + + 模拟量 + Quantité analogique + + + + 数字量 + Quantité numérique + + + + 累积量 + Quantité cumulée + Quantité cumulée + + + + 混合量 + Quantité mixte + + + + 测点关键字查询 + Recherche par mot-clé de point + + + + 查询 + Rechercher + + + + 所有 + Tous + + + + + 查询设备组信息失败! + Échec de la recherche d'informations sur le groupe d'équipements ! + Échec de la recherche d'informations sur le groupe d'appareils! + + + + + + + 请至少选择一项! + Veuillez sélectionner au moins un élément! + + + + 行“%1”,%2 + Ligne « %1 », %2 + Ligne « %1 », %2 + + + + “%1”等,共(%2)项 + « %1 » et autres, total (%2) éléments + « %1 » et autres, total (%2) éléments + + + + + + “%1”,%2 + « %1 », %2 + « %1 », %2 + + + + 下发取消命令失败 + Échec de l'envoi de la commande d'annulation + + + + 提示 + Rappel + Rappel + + + + + 获取登录信息失败! + Échec de l'obtention des informations de connexion ! + Échec de l'obtention des informations de connexion ! + + + + 获取登录账户失败! + Échec de l'obtention du compte de connexion ! + Échec de l'obtention du compte de connexion ! + + + + 无标签操作权限! + Pas de droits d'opération sur les étiquettes! + + + + CDevSpePointWidget + + + + + 测点标签为空! + Étiquette de point vide ! + Étiquette de point vide ! + + + + + + 数据库连接打开失败! + Échec de l'ouverture de la connexion à la base de données ! + Échec de l'ouverture de la connexion à la base de données ! + + + + + + 测点标签不合法! + + Étiquette de point invalide ! + + Étiquette de point invalide ! + + + + + + 重复添加! + + Ajout en double ! + + Ajout en double ! + + + + + 查询设备描述失败! + + Échec de la recherche de la description de l'équipement ! + + Échec de la recherche de la description de l'équipement ! + + + + + 传入参数个数不一致! + Nombre de paramètres incohérent ! + Nombre de paramètres incohérent ! + + + + CDevTreeModel + + + 位置/设备组/设备 + Emplacement/Groupe d'équipements/Équipement + Emplacement/Groupe d'équipements/Équipement + + + + CDevTreeView + + + 全选 + Tout sélectionner + + + + 清空 + Vider + + + + CDisposalPlanDialog + + + + Dialog + Dialogue + + + + + 告警时间: + Heure de l'alarme : + Heure de l'alarme : + + + + + 告警内容: + Contenu de l'alarme : + Contenu de l'alarme : + + + + + 处置预案: + Plan de traitement : + Plan de traitement : + + + + + 处置预案 + Plan de traitement + + + + CDocumentManageWidget + + + 文档管理 + Gestion des documents + + + + 添加 + Ajouter + + + + 修改 + Modifier + + + + + 删除 + Supprimer + + + + 下载 + Télécharger + + + + 上传 + Téléverser + Téléverser + + + + 查询 + Rechercher + + + + 输入文档名称查询 + Rechercher par nom du document + Rechercher par nom du document + + + + 打开 + Ouvrir + + + + CDrillDownChart + + + 位置 + Emplacement + Emplacement + + + + 总共: + Total : + Total: + + + + CEditCollectWidget + + + + 趋势名称: + Nom de la tendance : + Nom de la tendance : + + + + + 确定 + Confirmer + + + + + 取消 + Annuler + + + + CEventDataCollect + + + + 其他 + Autre + + + + 系统信息 + Informations système + + + + CEventDeviceTreeModel + + + + 系统信息 + Informations système + + + + .系统 + .système + + + + CEventDeviceTreeView + + + 全选 + Tout sélectionner + Tout sélectionner + + + + 清空 + Vider + + + + 选择 + Sélectionner + + + + 清除 + Effacer + + + + CEventFilterDialog + + + + 过滤 + Filtrer + + + + + 时间 + Temps + + + + + 开始时间 + Heure de début + Heure de début + + + + + + + yyyy/MM/dd hh:mm + aaaa/MM/jj hh:mm + yyyy/MM/dd hh:mm + + + + + 结束时间 + Heure de fin + Heure de fin + + + + + 优先级 + Priorité + + + + + + + + + + + 全选 + Tout sélectionner + + + + + 位置 + Emplacement + + + + + 责任区 + Zone de responsabilité + + + + + 事件状态 + État de l'événement + + + + + 确定 + Confirmer + + + + + 取消 + Annuler + + + + + 设备类型 + Type d'équipement + Type d'équipement + + + + + 事件内容关键字 + Mot-clé du contenu de l'événement + + + + + 复归 + Réinitialiser + + + + + 已复归 + Réinitialisé + + + + + 未复归 + Non réinitialisé + + + + + + + + + 提示 + Rappel + Rappel + + + + + 开始时间不能大于结束时间! + L'heure de début ne peut pas être ultérieure à l'heure de fin ! + L'heure de début ne peut pas être ultérieure à l'heure de fin ! + + + + + 历史事件过滤必须选择时间! + Le filtrage des événements historiques nécessite de sélectionner une période ! + + + + + 时间间隔不得超过90天! + L'intervalle de temps ne doit pas dépasser 90 jours ! + + + + CEventForm + + + + 事件 + Événements + + + + + 实时事件 + Événements en temps réel + + + + + 历史事件 + Événements historiques + + + + + 时间: + Temps : + + + + + 优先级: + Priorité : + + + + + 位置: + Emplacement : + + + + + 事件状态: + État de l'événement : + + + + + 清空 + Vider + + + + + 过滤 + Filtrer + + + + + 导出 + Exporter + + + + + 关闭 + Fermer + + + + + + + 实时事件总数: + Total des événements en temps réel : + + + + + + + 0 + 0 + + + + + 历史事件总数: + Total des événements historiques : + + + + + + + 按设备组关键字搜索 + Rechercher par mot-clé de groupe d'équipements + Rechercher par mot-clé de groupe d'appareils + + + + + + + + + 请选择时间 + Veuillez sélectionner Temps + Veuillez sélectionner Temps + + + + + + + + + + + + + + + 请选择优先级 + Veuillez sélectionner Priorité + Veuillez sélectionner Priorité + + + + + + + + + + + + + + + 请选择位置 + Veuillez sélectionner Emplacement + Veuillez sélectionner Emplacement + + + + + + + 请选择告警状态 + Veuillez sélectionner État de l'alarme + Veuillez sélectionner État de l'alarme + + + + + + + + + 提示 + Rappel + Rappel + + + + + 导出成功 + Exportation réussie + + + + + + + + + + + 请选择事件状态 + Sélectionnez l'état de l'événement + + + + + 正在查询历史事件... + Recherche des événements historiques en cours... + + + + + 错误 + Erreur + + + + + 当前用户不具备事件浏览权限 + L'utilisateur actuel n'a pas les droits de consultation des événements + + + + + 历史事件数量: + Nombre d'événements historiques : + + + + + 历史事件数量超出10000条,超出部分不显示 + Le nombre d'événements historiques dépasse 10 000, la partie excédentaire n'est pas affichée + + + + + + + 历史事件数量超出%1条,未予显示! + Le nombre d'événements historiques dépasse %1, impossible à afficher ! + Le nombre d'événements historiques dépasse %1, impossible à afficher ! + + + + + Save File + Sauvegarder le fichier + Sauvegarder le fichier + + + + + + + 事故追忆 + Souvenir de l'accident + Souvenir de l'accident + + + + 刷新 + Rafraîchir + + + + 全勾选 + Tout sélectionner + + + + 全不选 + Tout désélectionner + + + + CEventHistoryModel + + + + 时间 + Temps + Temps + + + + + 优先级 + Priorité + + + + + 位置 + Emplacement + + + + + 责任区 + Zone de responsabilité + + + + + 事件类型 + Type d'événement + + + + + 事件状态 + État de l'événement + + + + + 复归状态 + État de la réinitialisation + État de la réinitialisation + + + + + 确认人 + Confirmateur + + + + + 确认时间 + Heure de confirmation + + + + 事件内容 + Contenu de l'événement + + + + + 未复归 + Non réinitialisé + + + + + 已复归 + Réinitialisé + + + + 事件内容 + Contenu de l'événement + + + + CEventItemModel + + + + 时间 + Temps + Temps + + + + + 优先级 + Priorité + + + + + 位置 + Emplacement + + + + + 责任区 + Zone de responsabilité + + + + + 事件类型 + Type d'événement + + + + + 事件状态 + État de l'événement + + + + + 复归状态 + État de la réinitialisation + État de la réinitialisation + + + + + 事件内容 + Contenu de l'événement + + + + + 未复归 + Non réinitialisé + + + + + 已复归 + Réinitialisé + + + + CFaultRecallRecordWidget + + + CFaultRecallRecordWidget + CFaultRecallRecordWidget + CFaultRecallRecordWidget + + + + + 位置 + Emplacement + + + + + 开始时间 + Heure de début + + + + + 结束时间 + Heure de fin + + + + 名称 + Nom + + + + 画面 + Écran + + + + 刷新 + Rafraîchir + + + + 清空 + Vider + + + + 删除 + Supprimer + + + + 播放 + Lire + + + + 全部 + Tout + + + + + + + 提示 + Rappel + Rappel + + + + 请选择一项记录! + Veuillez sélectionner un enregistrement ! + + + + 确定开始播放“%1”? + Voulez-vous vraiment commencer à lire « %1 » ? + + + + 请选择删除项! + Veuillez sélectionner un élément à supprimer ! + + + + 确定删除记录“%1”? + Voulez-vous vraiment supprimer l'enregistrement « %1 » ? + + + + + + 打开数据库失败。 + Échec de l'ouverture de la base de données. + + + + 删除“%1”失败! + Échec de la suppression de « %1 » ! + + + + 确定清空所有记录? + Voulez-vous vraiment vider tous les enregistrements ? + + + + 清空失败! + Échec du vidage ! + + + + CFileFolderTree + + + 名称: + Nom : + + + + + + + + + + + + + + + 提示 + Rappel + Rappel + + + + 非法的命名 + Nom illégal + + + + + + 当前登录用户无运维管理功能权限 + L'utilisateur actuel n'a pas les autorisations de gestion de la maintenance + + + + 添加目录 + Ajouter un répertoire + + + + + 目录已存在 + Le répertoire existe déjà + + + + 添加目录失败 + Échec de l'ajout du répertoire + + + + 请选择要修改的目录 + Veuillez sélectionner le répertoire à modifier + + + + 修改目录名称 + Modifier le nom du répertoire + + + + 修改目录名称失败 + Échec de la modification du nom du répertoire + + + + 请选择要删除的目录 + Veuillez sélectionner le répertoire à supprimer + + + + 确认删除? + Confirmer la suppression ? + + + + 删除目录失败 + Échec de la suppression du répertoire + + + + + 添加 + Ajouter + + + + 修改 + Modifier + + + + 删除 + Supprimer + + + + CFileSyncDialog + + 文件同步 + Synchronisation des fichiers + + + 提交 + Soumettre + + + 删除 + Supprimer + + + 添加 + Ajouter + + + 提示 + Rappel + Rappel + + + 无需添加 + Aucun ajout nécessaire + + + 确认添加 + Confirmer l'ajout + + + 添加失败: + Échec de l'ajout : + + + 无需删除 + Aucune suppression nécessaire + + + 确认删除 + Confirmer la suppression + + + 删除失败: + Échec de la suppression : + + + 选择文件 + Sélectionner le fichier + + + 名称 + Nom + + + 修改日期 + Date de modification + + + 状态 + État + + + (异常) + (Anomalie) + + + 无需提交 + Aucune soumission nécessaire + + + 提交失败: + Échec de la soumission : + + + + CFileTableWidget + + + + + + + + + + + + + + + + + + 提示 + Rappel + Rappel + + + + + 当前登录用户无运维管理功能权限 + L'utilisateur actuel n'a pas les autorisations de gestion de la maintenance + L'utilisateur actuel n'a pas les autorisations de gestion de la maintenance + + + + 请选择上传目录 + Veuillez sélectionner le répertoire de téléversement + Veuillez sélectionner le répertoire de téléversement + + + + 上传文档 + Téléverser le document + Téléverser le document + + + + + 文档已存在: %1,是否替换? + Le document existe déjà : %1, voulez-vous le remplacer ? + + + + %1 上传失败 + Échec du téléversement de %1 + Échec du téléversement de %1 + + + + 上传成功 + Téléversement réussi + Téléversement réussi + + + + + + 请选择文档 + Veuillez sélectionner un document + + + + 请选择下载路径 + Veuillez sélectionner le chemin de téléchargement + + + + %1 下载失败 + Échec du téléchargement de %1 + + + + 下载成功 + Téléchargement réussi + + + + 确认删除? + Confirmer la suppression ? + + + + 删除 %1 失败 + Échec de la suppression de %1 + + + + 文档不存在 + Le document n'existe pas + + + + 打开文档失败 + Échec de l'ouverture du document + + + + 序号 + Numéro de série + + + + 文档名称 + Nom du document + + + + 文档修改时间 + Heure de modification du document + Heure de modification du document + + + + 文档路径 + Chemin du document + + + + CGroupManageDialog + + + 轮询组配置 + Configuration du groupe de polling + Configuration du groupe de polling + + + + + 新增 + Nouveau + Nouveau + + + + + 删除 + Supprimer + + + + 保存 + Sauvegarder + Sauvegarder + + + + 轮询组 + Groupe de polling + Groupe de polling + + + + 提示 + Rappel + Rappel + + + + 轮询组不能为空! + Le groupe de polling ne peut pas être vide ! + Le groupe de polling ne peut pas être vide ! + + + + 轮询组不能有特殊符号! + Le groupe de polling ne peut pas contenir de caractères spéciaux ! + Le groupe de polling ne peut pas contenir de caractères spéciaux ! + + + + 轮询组不能重复! + Le groupe de polling ne peut pas être dupliqué ! + Le groupe de polling ne peut pas être dupliqué ! + + + + CHangPanelWidget + + + CHangPanelWidget + CHangPanelWidget + + + + 位置: + Emplacement : + Emplacement : + + + + 专业: + Spécialité : + + + + 位置 + Emplacement + Emplacement + + + + 设备组 + Groupe d'équipements + + + + 设备名称 + Nom de l'équipement + + + + 挂牌类型 + Type d'affichage + + + + 挂牌时间 + Temps d'affichage + + + + 专业 + Spécialité + + + + 操作主机 + Hôte opérateur + + + + 操作人 + Opérateur + + + + 操作人组 + Groupe d'opérateurs + + + + 备注信息 + Informations de remarque + + + + 标签名 + Nom de l'étiquette + + + + 总数 + Total + + + + 刷新 + Rafraîchir + + + + 取消挂牌 + Annuler l'affichage + + + + + + 未知 + Inconnu + + + + 无取消挂牌操作权限! + Pas de permission pour annuler l'affichage ! + + + + 初始化权限失败! + Échec de l'initialisation des autorisations ! + + + + 提示 + Rappel + Rappel + + + + 请选择一项挂牌信息! + Veuillez sélectionner une information d'affichage ! + + + + + 获取标签挂牌信息有误,%1 + Erreur lors de l'obtention des informations d'affichage de l'étiquette, %1 + + + + 下发取消挂牌命令失败 + Échec de l'envoi de la commande d'annulation d'affichage + + + + CHangPanelWork + + + 读取标签信息表失败 + Échec de la lecture de la table des informations d'étiquette + + + + CHisEventManage + + + + + + 未查询到该设备相关事件! + Aucun événement lié à cet équipement trouvé ! + + + + CHistoryActionModel + + + + 动作 + Action + + + + + 位置 + Emplacement + Emplacement + + + + + 描述 + Description + + + + + 执行结果 + Résultat de l'exécution + + + + CHistoryLinkFilterDialog + + + 过滤 + Filtrer + + + + 位置 + Emplacement + Emplacement + + + + 用户 + Utilisateur + + + + 结果 + Résultat + + + + 类型 + Type + + + + 标准联动 + Association standard + Association standard + + + + 自定义联动 + Association personnalisée + Association personnalisée + + + + 时间 + Temps + + + + 起始时间: + Heure de début : + + + + 结束时间: + Heure de fin : + + + + 执行成功 + Exécution réussie + + + + 执行失败 + Échec de l'exécution + + + + 执行终止 + Exécution interrompue + + + + 执行跳过 + Exécution sautée + + + + CHistoryLinkModel + + + 名称 + Nom + + + + 位置 + Emplacement + Emplacement + + + + 时间 + Temps + + + + 用户 + Utilisateur + + + + 类型 + Type + + + + 执行结果 + Résultat de l'exécution + + + + CHistorySequenceFilterDialog + + + 过滤 + Filtrer + + + + 位置 + Emplacement + Emplacement + + + + 用户 + Utilisateur + + + + 结果 + Résultat + + + + 类型 + Type + + + + 标准顺控 + Contrôle séquentiel standard + + + + 自定义顺控 + Contrôle séquentiel personnalisé + + + + 时间 + Temps + + + + 起始时间: + Heure de début : + + + + 结束时间: + Heure de fin : + + + + 执行成功 + Exécution réussie + + + + 执行失败 + Échec de l'exécution + + + + 执行终止 + Exécution interrompue + + + + 执行跳过 + Exécution sautée + + + + CHistorySequenceModel + + + 名称 + Nom + + + + 位置 + Emplacement + Emplacement + + + + 时间 + Temps + + + + 用户 + Utilisateur + + + + 类型 + Type + + + + 执行结果 + Résultat de l'exécution + + + + 标准顺控 + Contrôle séquentiel standard + + + + 自定义顺控 + Contrôle séquentiel personnalisé + + + + CIconActDialog + + + + 图元动作 + Action d'élément graphique + Action d'élément graphique + + + + 添加 + Ajouter + + + + + + + + + + + 删除 + Supprimer + + + + - + - + + + + 确认 + Confirmer + + + + 取消 + Annuler + + + + 选择文件 + Choisir un fichier + + + + + 提示 + Rappel + Rappel + + + + + 保存失败! + Échec de la sauvegarde ! + Échec de la sauvegarde ! + + + + 左键单击 + Clic gauche + + + + 左键双击 + Double clic gauche + + + + 禁止 + Interdit + + + + 允许 + Permis + + + + CInputDialog + + + 批量操作 + Opération en lot + + + + 设置值: + Regler la valeur: + + + + 设置值 + Regler la valeur + + + + 确定 + Confirmer + + + + 取消 + Annuler + + + + CLimitOptWidget + + + CLimitOptWidget + CLimitOptWidget + + + + 确认 + Confirmer + + + + 关闭 + Fermer + + + + + + + + + + 提示 + Notification + + + + %1[%2-%3], 无标签操作权限! + %1[%2-%3], Pas d'autorisation d'opération sans étiquette ! + + + + 设置成功 + Configuration réussie + + + + 设备属性 + Propriétés de l'appareil + + + + 是否越限 + Dépassement des limites + + + + 越限级别 + Niveau de dépassement des limites + + + + 越上限 + Limite supérieure + + + + 越下限 + Limite inférieure + + + + 越上上限 + Limite supérieure supérieure + + + + 越下下限 + Limite inférieure inférieure + + + + 越三级上限 + Limite supérieure 3 + + + + 越三级下限 + Limite inférieure 3 + + + + + 未知 + Inconnu + + + + 越上限应大于越下限! + La limite supérieure doit être supérieure à la limite inférieure ! + + + + 越上上限应大于越下下限! + La limite supérieure supérieure doit être supérieure à la limite inférieure inférieure ! + + + + 越下下限应小于越下限! + La limite inférieure inférieure doit être inférieure à la limite inférieure ! + + + + 越上上限应大于越上限! + La limite supérieure supérieure doit être supérieure à la limite supérieure ! + + + + 否 + Non + + + + 是 + Oui + + + + 无越限 + Pas de dépassement des limites + + + + 一级越限 + Limite supérieure 1 + + + + 二级越限 + Limite supérieure 2 + + + + CLimitOptWork + + + 系统初始化失败! + Échec de l'initialisation du système ! + Échec de l'initialisation du système ! + + + + 更改是否越限失败! + Échec de la modification du dépassement de limite ! + Échec de la modification du dépassement de limite! + + + + 更改越限信息失败! + Échec de la modification des informations de dépassement de limite ! + Échec de la modification des informations de dépassement de limite ! + + + + 越限设置 + Paramètres de dépassement de limite + + + + 取消越限设置 + Annuler les paramètres de dépassement de limite + + + + 操作员: + Opérateur : + + + + 操作主机: + Hôte opérateur : + + + + CLineEditWithBt + + + + 选择文件 + Choisir un fichier + + + + CLineEditWithBtn + + + 选择文件 + Choisir un fichier + + + + CLinkCtrlTableModel + + + 联动名称 + Nom de l'association + Nom de l'association + + + + 联动类型 + Type d'association + Type d'association + + + + 联动状态 + État de l'association + État de l'association + + + + 执行方式 + Mode d'exécution + Mode d'exécution + + + + 触发时间 + Heure de déclenchement + + + + 未执行 + Non exécuté + + + + 正在执行 + En cours d'exécution + + + + 已触发 + Déclenché + + + + 执行失败 + Échec de l'exécution + + + + 执行成功 + Exécution réussie + + + + 执行终止 + Exécution interrompue + + + + 执行暂停 + Exécution suspendue + + + + 执行跳过 + Exécution ignorée + + + + 过期配置 + Configuration expirée + + + + 全自动 + Complètement automatique + + + + 半自动 + Semi-automatique + + + + 手动 + Manuel + + + + 请点击“所有联动”按钮刷新配置 + Veuillez cliquer sur le bouton « Toutes les associations » pour rafraîchir la configuration + Veuillez cliquer sur le bouton « Toutes les associations » pour rafraîchir la configuration + + + + CLinkCtrlTreeModel + + + 内容 + Contenu + + + + 选择 + Sélectionner + + + + 执行方式 + Mode d'exécution + Mode d'exécution + + + + 延迟时间 + Temps de retard + + + + 失败处理 + Gestion des échecs + + + + 执行状态 + État de l'exécution + État de l'exécution + + + + 串行 + Série + + + + 并行 + Parallèle + + + + 秒 + secondes + + + + 自动跳过 + Ignorer automatiquement + + + + 人工干预 + Intervention manuelle + + + + 终止联动 + Arrêter l'association + Arrêter l'association + + + + 执行下个功能 + Exécuter la fonction suivante + + + + 未执行 + Non exécuté + + + + 正在执行 + En cours d'exécution + + + + 已触发 + Déclenché + + + + 执行失败 + Échec de l'exécution + + + + 执行成功 + Exécution réussie + + + + 执行终止 + Exécution interrompue + + + + 执行暂停 + Exécution suspendue + + + + 执行跳过 + Exécution ignorée + + + + CLinkCtrlWidget + + + 联动 + Association + Association + + + + 联动类型 + Type d'association + Type d'association + + + + 联动列表 + Liste des associations + Liste des associations + + + + 搜索 + Recherche + + + + 待执行联动 + Association à exécuter + Association à exécuter + + + + 所有联动 + Toutes les associations + Toutes les associations + + + + 动作列表 + Liste des actions + + + + + 终止 + Arrêter + + + + 执行 + Exécuter + + + + 单步 + Pas à pas + + + + + + + + + + 暂停 + Pause + + + + 历史列表 + Liste des historiques + + + + 过滤 + Filtrer + + + + 执行详情 + Détails de l'exécution + + + + 导出 + Exporter + + + + 打印 + Imprimer + + + + + 联动报告 + Rapport d'association + Rapport d'association + + + + + + + 当前用户不具备联动操作权限! + L'utilisateur actuel n'a pas les droits d'exécution de l'association ! + L'utilisateur actuel n'a pas les droits d'exécution de l'association ! + + + + + + + 错误 + Erreur + + + + + + + 当前未选中联动 + Aucune association sélectionnée + Aucune association sélectionnée + + + + + + 继续 + Continuer + + + + + 联动名称: + Nom de l'association : + Nom de l'association: + + + + 错误代码: + Code d'erreur: + + + + 错误描述: + Description de l'erreur: + + + + 联动操作请求失败 + Échec de la demande d'association + Échec de la demande d'association + + + + 执行失败,请求人工干预! + Échec de l'exécution, demande d'intervention manuelle ! + + + + 功能名称: + Nom de la fonction : + Nom de la fonction: + + + + 动作名称: + Nom de l'action : + Nom de l'action: + + + + 人工干预请求 + Demande d'intervention manuelle + + + + 重试 + Réessayer + + + + 跳过 + Passer + + + + Save File + Sauvegarder le fichier + Sauvegarder le fichier + + + + (*.pdf *) + (*.pdf *) + + + + CLocationSequModel + + + 标记 + Marque + + + + 场站 + Station + + + + 顺控名称 + Nom du contrôle séquentiel + + + + 执行状态 + État de l'exécution + État de l'exécution + + + + 未执行 + Non exécuté + + + + 正在执行 + En cours d'exécution + + + + 已触发 + Déclenché + + + + 执行失败 + Échec de l'exécution + + + + 执行成功 + Exécution réussie + + + + 执行终止 + Exécution arrêtée + + + + 执行暂停 + Exécution en pause + + + + 执行跳过 + Exécution sautée + + + + CMainWidget + + + 告警统计 + Statistiques d'alarme + + + + 告警对比 + Comparaison des alarmes + + + + CMainWindow + + + CMainWindow + CMainWindow + CMainWindow + + + + 设备/点 + Équipement/Point + + + + 清除测点 + Effacer les points de mesure + + + + 收藏夹 + Favoris + + + + CMsgDeal + + + + + + + + + + + + + + + + + 发送消息失败 + Échec de l'envoi du message + + + + + + 创建系统信息访问库实例失败! + Échec de la création de l'instance de la bibliothèque d'accès aux informations système ! + + + + 权限接口初始化失败! + Échec de l'initialisation de l'interface de permissions ! + + + + 总线订阅失败! + Échec de l'abonnement au bus ! + + + + + + 消息解析错误 + Erreur d'analyse du message + + + + + + 未知的命令 + Commande inconnue + + + + + + 未接收到消息 + Aucun message reçu + + + + CMyCalendar + + + + + + + Form + Formulaire + + + + + + + + 至 + À + + + + + + + + 取消 + Annuler + + + + CNTPTimeWidget + + + CNTPTimeWidget + CNTPTimeWidget + CNTPTimeWidget + + + + IP设置 + Paramètres IP + + + + + + + + 设置 + Paramètres + Paramètres + + + + 网卡 + Carte réseau + + + + IP地址 + Adresse IP + + + + 子网掩码 + Masque de sous-réseau + + + + 网关 + Passerelle + + + + 控制投退 + Contrôle d'activation + + + + 是否启用 + Activer ou non + Activer ou non + + + + 启用 + Activer + + + + 禁用 + Désactiver + + + + 亮度调节 + Ajustement de la luminosité + + + + 亮度设置 + Paramètres de luminosité + + + + 时间设置 + Paramètres de temps + + + + 时间 + Heure + + + + 日期 + Date + + + + hh:mm:ss + hh:mm:ss + + + + yyyy-MM-dd + aaaa-MM-jj + yyyy-MM-dd + + + + NTP设置 + Paramètres NTP + + + + 是否开启NTP + Activer NTP + Activer NTP + + + + 否 + Non + + + + 是 + Oui + + + + NTP服务器 + Serveur NTP + + + + NTP设置失败:%1,主机名:%2 + Échec de la configuration NTP : %1, nom de l'hôte : %2 + Échec de la configuration NTP : %1, nom de l'hôte : %2 + + + + NTP设置成功 + Configuration NTP réussie + + + + 时间设置失败:%1,主机名:%2 + Échec de la configuration de l'heure : %1, nom de l'hôte : %2 + Échec de la configuration de l'heure : %1, nom de l'hôte : %2 + + + + 时间设置成功 + Configuration de l'heure réussie + + + + 设置时间失败,请先关闭NTP + Échec de la configuration de l'heure, veuillez d'abord désactiver NTP + + + + IP设置失败:%1,主机名:%2 + Échec de la configuration IP : %1, nom de l'hôte : %2 + Échec de la configuration IP : %1, nom de l'hôte : %2 + + + + IP设置成功 + Configuration IP réussie + + + + 亮度设置失败:%1,主机名:%2 + Échec de la configuration de la luminosité : %1, nom de l'hôte : %2 + Échec de la configuration de la luminosité : %1, nom de l'hôte : %2 + + + + 亮度设置成功 + Configuration de la luminosité réussie + + + + CNavigationConfigDialog + + + + + + 打开 + Ouvrir + + + + + + + + + 新建项目_ + Nouveau projet_ + + + + CNavigationDialog + + + 导航栏配置工具 + Outil de configuration de la barre de navigation + + + + MainWindow + MainWindow + + + + 添加节点 + Ajouter un nœud + + + + + + + + + + + 添加子节点 + Ajouter un sous-nœud + + + + ∟ + + + + + 删除节点 + Supprimer un nœud + + + + - + - + + + + 清空节点 + Vider les nœuds + + + + × + × + + + + 上移节点 + Déplacer le nœud vers le haut + + + + ↑ + + + + + 下移节点 + Déplacer le nœud vers le bas + + + + ↓ + + + + + + 导入 + Importer + + + + + 导出 + Exporter + + + + 确认 + Confirmer + + + + 取消 + Annuler + + + + 属性 + Propriétés + + + + + 是否使用 + Utilisé ou non + Utilisé ou non + + + + + 操作 + Opération + + + + + 图标 + Icône + + + + + 数据 + Données + + + + Web发布 + Publication Web + + + + Web类型 + Type Web + + + + + 网址 + URL + + + + 是 + Oui + + + + + 否 + Non + + + + 切换画面 + Changer d'écran + + + + 切换导航 + Changer de navigation + + + + 调用程序 + Appeler le programme + + + + 加载网页 + Charger la page Web + + + + + 自定义项目 + Projet personnalisé + + + + 新建项目_ + Nouveau projet_ + + + + 最大支持四层结构: %1-%2-%3-%4 + Supporte jusqu'à quatre niveaux : %1-%2-%3-%4 + Supporte jusqu'à quatre niveaux : %1-%2-%3-%4 + + + + 全部展开 + Développer tout + + + + 全部收缩 + Réduire tout + + + + + + + + + + + 提示 + Rappel + Rappel + + + + 保存失败! + Échec de la sauvegarde ! + Échec de la sauvegarde ! + + + + 页面 + Page + + + + 一级 + Niveau 1 + + + + 二级 + Niveau 2 + + + + 三级 + Niveau 3 + + + + web发布 + Publication Web + + + + web类型 + Type Web + + + + 导出成功! +导出路径: + Exportation réussie ! +Chemin d'exportation : + Exportation réussie! +Chemin d'exportation: + + + + 导出失败 + Échec de l'exportation + + + + + + 行: %1, [%2] 不符合规范! + Ligne : %1, [%2] ne respecte pas les normes ! + Ligne : %1, [%2] ne respecte pas les normes! + + + + CNavigationWidget + + + 是 + Oui + + + + 否 + Non + + + + 切换画面 + Changer d'écran + + + + 调用程序 + Appeler le programme + + + + 导入 + Importer + + + + 导出 + Exporter + + + + 一级 + Niveau 1 + + + + 二级 + Niveau 2 + + + + 三级 + Niveau 3 + + + + 是否使用 + Utilisé ou non + Utilisé ou non + + + + 操作 + Opération + + + + 图标 + Icône + + + + 数据 + Données + + + + web发布 + Publication Web + + + + + 提示 + Rappel + Rappel + + + + 导出成功! +导出路径: + Exportation réussie ! +Chemin d'exportation : + Exportation réussie! +Chemin d'exportation: + + + + 保存失败 + Échec de la sauvegarde + Échec de la sauvegarde + + + + 属性配置 + Configuration des propriétés + + + + 全部展开 + Développer tout + + + + 全部收缩 + Réduire tout + + + + COperationOrderForm + + + 增加 + Ajouter + + + + 删除 + Supprimer + + + + 上移 + Déplacer vers le haut + + + + 下移 + Déplacer vers le bas + + + + 保存模板 + Sauvegarder le modèle + Sauvegarder le modèle + + + + 开票打印 + Impression de la facture + + + + 预览 + Aperçu + + + + + 备注 + Remarque + + + + 操作任务 + Tâche d'opération + + + + 操作人 + Opérateur + + + + 监护人 + Superviseur + + + + 值班负责人 + Responsable de l'équipe de garde + + + + 电子签章 + Signature électronique + + + + + yyyy/MM/dd HH:mm:ss + aaaa/MM/jj HH:mm:ss + yyyy/MM/dd HH:mm:ss + + + + 结束时间 + Heure de fin + + + + 操作票号 + Numéro de billet d'opération + + + + 开始时间 + Heure de début + + + + 签章 + Signature + + + + 步骤 + Étape + + + + 操作内容 + Contenu de l'opération + + + + key_id_tag + tag_id_cle + + + + ctrl_value + valeur_ctrl + + + + + + + + + + + + + + + + + + + + + + + + + + + + 提示 + Rappel + Rappel + + + + 行:%1 顺序为空! + L'ordre de la ligne : %1 est vide ! + L'ordre de la ligne : %1 est vide ! + + + + 行:%1 与行:%2 顺序重复! + L'ordre de la ligne : %1 est dupliqué avec la ligne : %2 ! + L'ordre de la ligne : %1 est dupliqué avec la ligne : %2 ! + + + + 行:%1 操作内容为空! + Le contenu de l'opération de la ligne : %1 est vide ! + Le contenu de l'opération de la ligne : %1 est vide ! + + + + 典型票名已存在! + Le nom du billet typique existe déjà ! + + + + 典型票名: '%1' 保存失败! + Échec de sauvegarder le nom du billet typique: ' %1' ! + Échec de sauvegarder le nom du billet typique: ' %1' ! + + + + + + + + + + + 保存失败! + Échec de la sauvegarde ! + Échec de la sauvegarde ! + + + + 已经存在“%1”,是否覆盖? + « %1 » existe déjà, souhaitez-vous le remplacer ? + "%1" existe déjà, souhaitez-vous le remplacer ? + + + + 行:%1 保存失败! + Échec de sauvegarder la ligne : %1 ! + Échec de sauvegarder la ligne : %1 ! + + + + 保存成功! + Sauvegarde réussie ! + Sauvegarde réussie ! + + + + 打印成功! + Impression réussie ! + + + + 打印失败! + Échec de l'impression ! + + + + 打开历史表失败! + Échec de l'ouverture de l'historique ! + + + + 操作票号: + Numéro de billet d'opération : + + + + 操作开始时间: + Heure de début de l'opération : + + + + 操作结束时间: + Heure de fin de l'opération : + + + + 操作任务: + Tâche d'opération : + + + + 备注:<br> + Remarque :<br> + + + + 操作人: + Opérateur : + + + + 监护人: + Superviseur : + + + + 值班负责人: + Responsable de l'équipe de garde : + + + + 典型票名为空! + Le nom du billet typique est vide ! + + + + 操作票号为空! + Le numéro de billet d'opération est vide ! + + + + 操作人为空! + L'opérateur est vide ! + + + + 监护人为空! + Le superviseur est vide ! + + + + 值班负责人为空! + Le responsable de l'équipe de garde est vide ! + + + + 当前登录用户无运维管理功能权限! + L'utilisateur actuel n'a pas les autorisations de gestion de la maintenance ! + L'utilisateur actuel n'a pas les autorisations de gestion de la maintenance ! + + + + COperationOrderModelForm + + + 提示 + Rappel + Rappel + + + + 是否保存模板更改? + Souhaitez-vous sauvegarder les modifications du modèle ? + Souhaitez-vous sauvegarder les modifications du modèle ? + + + + COrderManageWidget + + + 典型票管理 + Gestion des billets typiques + + + + 刷新 + Rafraîchir + + + + 编辑 + Modifier + + + + + 删除 + Supprimer + + + + 自动开票 + Émission automatique de billets + + + + 序号 + Numéro de série + Numéro de série + + + + 操作序列简述 + Description du séquence d'opérations + + + + + + + + 提示 + Rappel + Rappel + + + + 当前登录用户无运维管理功能权限! + L'utilisateur actuel n'a pas les autorisations de gestion de la maintenance ! + L'utilisateur actuel n'a pas les autorisations de gestion de la maintenance ! + + + + + 请选中一条记录! + Veuillez sélectionner un enregistrement ! + + + + 是否删除 %1 ? + Souhaitez-vous supprimer %1 ? + + + + 删除失败! + Échec de la suppression ! + + + + CPlotWidget + + + + Form + Formulaire + + + + + 告警描点 + Points d'alarme + Points d'alarme + + + + + 对比 + Comparer + + + + + 收藏 + Favoris + + + + + 导出 + Exporter + + + + 打印 + Imprimer + + + + + 日 + Jour + + + + + 实时 + Temps réel + + + + + 周 + Semaine + + + + + 月 + Mois + + + + + 季 + Trimestre + + + + + 年 + Année + + + + + 秒 + Seconde + + + + + 自定义 + Personnalisé + + + + + 昨日曲线 + Courbe d'hier + + + + + + + + + + + 趋势图 + Graphique des tendances + + + + + 清空 + Vider + + + + + + + + + yyyy/MM/dd HH:mm + aaaa/MM/jj HH:mm + yyyy/MM/dd HH:mm + + + + + 开始时间 + Heure de début + + + + + 结束时间 + Heure de fin + + + + + + + 查询 + Rechercher + + + + + 上一页 + Page précédente + + + + + 下一页 + Page suivante + + + + + 一秒钟 + Une seconde + + + + + 一分钟 + Une minute + + + + + 十分钟 + Dix minutes + + + + + 一小时 + Une heure + + + + + 八小时 + Huit heures + + + + + 一天 + Un jour + + + + + 表格 + Tableau + + + + + 曲线 + Courbe + + + + + 双击输入值 + Double-cliquez pour entrer une valeur + + + + + 错误 + Erreur + + + + 当前趋势曲线已达最大支持数量[64]! + Le nombre maximal de courbes de tendance prises en charge a été atteint [64] ! + + + + + + + 昨日曲线- + Courbe d'hier - + + + + + 实时趋势 + Tendance en temps réel + + + + + 秒趋势 + Tendance seconde + + + + + 日趋势 + Tendance quotidienne + + + + + 周趋势 + Tendance hebdomadaire + + + + + 月趋势 + Tendance mensuelle + + + + + 季度趋势 + Tendance trimestrielle + + + + + 年趋势 + Tendance annuelle + + + + + 自定义趋势 + Tendance personnalisée + + + + + + + 保存为 + Sauvegarder sous + Sauvegarder sous + + + + + (*.jpg) + (*.jpg) + + + + + + + + + + + + + + + 提示 + Rappel + Avis + + + + + 保存成功 + Sauvegarde réussie + Sauvegarde réussie + + + + + + + 保存失败 + Échec de la sauvegarde + Échec de la sauvegarde + + + + + (*.xlsx) + (*.xlsx) + + + + + 导出成功! +导出路径: + Exportation réussie ! +Chemin d'exportation : + + + 导出成功! + 导出路径: + Exportation réussie ! + Chemin d'exportation : + Exportation réussie ! + Chemin d'exportation : + + + + + + + + + 请选择告警状态 + Veuillez sélectionner l'état de l'alarme + Veuillez sélectionner l'état de l'alarme + + + + + 查询中 + Recherche en cours + + + + + 查询开始时间不能大于结束时间! + L'heure de début de la recherche ne peut pas être ultérieure à l'heure de fin ! + L'heure de début de la recherche ne peut pas être ultérieure à l'heure de fin ! + + + + + 开始时间和结束时间之差不能小于查询时间间隔! + La différence entre l'heure de début et l'heure de fin ne peut pas être inférieure à l'intervalle de recherche ! + La différence entre l'heure de début et l'heure de fin ne peut pas être inférieure à l'intervalle de recherche ! + + + + 保存图片 + Sauvegarder l'image + Sauvegarder l'image + + + + 当前趋势曲线已达最大支持数量[%1]! + Le nombre maximal de courbes de tendance prises en charge a été atteint [%1] ! + Le nombre maximal de courbes de tendance prises en charge a été atteint [%1] ! + + + + CPointLockWidget + + + 闭锁配置 + Configuration du verrouillage + + + + 1-1AH5-断路器 + 1-1AH5-Disjoncteur + + + + 控制状态 + État du contrôle + + + + 添加 + Ajouter + + + + 删除 + Supprimer + + + + 启用 + Activer + + + + 确认 + Confirmer + + + + 取消 + Annuler + + + + + 条件 + Condition + + + + + 无 + Aucun + + + + + 小于 + Inférieur à + Inférieur à + + + + + 小于等于 + Inférieur ou égal à + Inférieur ou égal à + + + + + 等于 + Égal à + + + + + 大于等于 + Supérieur ou égal à + + + + + 大于 + Supérieur à + + + + + 不等于 + Différent de + + + + 且 + Et + + + + 设备列表 + Liste des équipements + + + + 状态值 + Valeur d'état + + + + + + + 提示 + Rappel + Rappel + + + + 请选中需要删除的行 + Veuillez sélectionner les lignes à supprimer + + + + 请选择测点标签 + Veuillez sélectionner l'étiquette du point de mesure + + + + + 添加失败 + Échec de l'ajout + + + + CPointRealDataWidget + + + 通讯状态 + État de la communication + + + + 正常 + Normal + + + + 异常 + Anormal + + + + + + 未找到组号%1! + Groupe %1 non trouvé ! + + + + CProcessDialog + + + Form + Formulaire + + + + 取消 + Annuler + + + + CProcessManage + + + + 最大值 + Valeur maximale + + + + + 最小值 + Valeur minimale + + + + + 平均值 + Valeur moyenne + + + + CPropertyDialog + + + Dialog + Dialogue + + + + 安装日期 + Date d'installation + + + + 型号 + Modèle + + + + 备注 + Remarques + + + + 参数 + Paramètres + + + + 设备名称 + Nom de l'équipement + Nom de l'équipement + + + + 维护周期 + Période de maintenance + + + + yyyy-MM-dd + aaaa-MM-jj + yyyy-MM-dd + + + + 厂家联系方式 + Contact du fabricant + + + + 所属设备组 + Groupe d'équipement associé + Groupe d'équipement associé + + + + 状态 + État + + + + 确认 + Confirmer + + + + 取消 + Annuler + + + + 添加 + Ajouter + + + + 已启用 + Activé + + + + 一个月 + Un mois + + + + 三个月 + Trois mois + + + + 半年 + Six mois + + + + 一年 + Un an + + + + 编辑 + Modifier + + + + 提示 + Rappel + Rappel + + + + 设备名称不能为空! + Le nom de l'équipement ne peut pas être vide ! + Le nom de l'équipement ne peut pas être vide ! + + + + 操作失败,请重新操作! + Échec de l'opération, veuillez réessayer ! + + + + CRealTableModel + + + 测点 + Point de mesure + + + + 点类型 + Type de point + + + + 设备 + Équipement + Équipement + + + + 值 + Valeur + + + + 状态 + État + + + + CRecordDialog + + + Dialog + Dialogue + + + + 导出 + Exporter + + + + 删除 + Supprimer + + + + 添加 + Ajouter + + + + 时间 + Temps + + + + ~ + ~ + + + + 关键字 + Mots-clés + + + + 查询 + Rechercher + + + + + 对开始时间和结束时间日期生效 + Applicable aux heures de début et de fin + Applicable aux heures de début et de fin + + + + 对设备名称、记录名称、操作人和维护内容生效 + Applicable au nom de léquipement, au nom de l'enregistrement, à l'opérateur et au contenu de la maintenance + Applicable au nom de léquipement, au nom de l'enregistrement, à l'opérateur et au contenu de la maintenance + + + + %1 维护记录 + Enregistrement de maintenance %1 + + + + + 提示 + Rappel + Rappel + + + + 当前未选中任何项! + Aucun élément sélectionné ! + Aucun élément sélectionné ! + + + + 删除失败! + Échec de la suppression ! + Échec de la suppression ! + + + + 删除成功! + Suppression réussie ! + Suppression réussie ! + + + + 开始时间不能大于结束时间! + L'heure de début ne peut pas être ultérieure à l'heure de fin ! + L'heure de début ne peut pas être ultérieure à l'heure de fin ! + + + + Save File + Sauvegarder le fichier + Sauvegarder le fichier + + + + CRecordForm + + + Form + Formulaire + + + + 检索条件 + Conditions de recherche + + + + 按值班负责人 + Par responsable de quart + + + + 按票名包含 + Par nom de billet contenu + Par nom de billet contenu + + + + 按操作人 + Par opérateur + + + + 按操作票号 + Par numéro de billet d'opération + + + + 按执行时间 + Par heure d'exécution + + + + 按完成时间 + Par heure de fin + + + + 按监护人 + Par superviseur + Par superviseur + + + + 序号 + Numéro de série + Numéro de série + + + + 操作票号 + Numéro de billet d'opération + + + + 操作票名 + Nom du billet d'opération + Nom du billet d'opération + + + + 开始时间 + Heure de début + + + + 结束时间 + Heure de fin + + + + 操作人 + Opérateur + + + + 监护人 + Superviseur + Superviseur + + + + 值班负责人 + Responsable de quart + + + + 执行状态 + État de l'exécution + État de l'exécution + + + + 描述 + Description + + + + 备注 + Remarques + + + + 刷新 + Rafraîchir + + + + 详细 + Détails + + + + 未执行 + Non exécuté + + + + 已执行 + Exécuté + + + + 未确认 + Non confirmé + + + + 提示 + Rappel + Rappel + + + + 请选择一项! + Veuillez sélectionner un élément ! + + + + CRecordPropertyDialog + + + Dialog + Dialogue + + + + 维护名称 + Nom de la maintenance + + + + 维护人 + Responsable de la maintenance + + + + 维护开始时间 + Début de la maintenance + + + + + yyyy-MM-dd + aaaa-MM-jj + yyyy-MM-dd + + + + 维护结束时间 + Fin de la maintenance + + + + 维护内容 + Contenu de la maintenance + + + + 确认 + Confirmer + + + + 取消 + Annuler + + + + 添加 + Ajouter + + + + 编辑 + Modifier + + + + 提示 + Rappel + Rappel + + + + 记录名称不能为空! + Le nom de l'enregistrement ne peut pas être vide ! + Le nom de l'enregistrement ne peut pas être vide ! + + + + 开始时间不能大于结束时间! + Le début ne peut pas être ultérieure à la fin ! + Le début ne peut pas être ultérieure à la fin ! + + + + 操作失败,请重新操作! + Échec de l'opération, veuillez réessayer ! + + + + CRecordTablModel + + + 设备名称 + Nom de l'équipement + + + + 记录名称 + Nom de l'enregistrement + Nom de l'enregistrement + + + + 操作人 + Opérateur + + + + 开始时间 + Début + + + + 结束时间 + Fin + + + + 维护内容 + Contenu de la maintenance + + + + CRecordWidget + + + 处理问题 + Problèmes traités + + + + 上班遗留问题 + Problèmes laissés par le shift précédent + + + + 当班处理问题 + Problèmes traités durant le shift + + + + 当班遗留问题 + Problèmes laissés à la fin du shift + + + + 关键信息备注 + Remarques importantes + + + + 保存 + Sauvegarder + Sauvegarder + + + + CRelaySettingWidget + + + 保护定值管理 + Gestion des valeurs de protection + + + + 切换 + Changer + + + + 当前执行组: + Groupe exécuté actuel : + + + + 前置设备 + Équipement précédent + + + + 序号 + Numéro de série + Numéro de série + + + + 定值名称 + Nom de la valeur + + + + 定值组号 + Numéro de groupe de valeurs + Numéro de groupe de valeurs + + + + 当前值 + Valeur actuelle + + + + 预置值 + Valeur prédéfinie + + + + 返校值 + Valeur de retour + + + + 范围 + Plage + + + + 单位 + Unité + + + + 定值代号 + Code de valeur + + + + isError + isError + isError + + + + 读取 + Lire + + + + 修改 + Modifier + + + + 确认 + Confirmer + + + + 清空 + Effacer + + + + + + + + + + + + + + + + + + 提示 + Rappel + Rappel + + + + 未知值:%1 + Valeur inconnue : %1 + + + + 无保护定值操作权限! + Pas de droits pour modifier les valeurs de protection ! + + + + 行:%1,当前值无效,请先读取! + Ligne : %1, valeur actuelle invalide, veuillez lire d'abord ! + + + + 行:%1,预置值无效,请先读取! + Ligne : %1, valeur prédéfinie invalide, veuillez lire d'abord ! + + + + 行:%1,预置值不在设定范围! + Ligne : %1, valeur prédéfinie hors de la plage définie ! + + + + 行:%1,返校值无效! + Ligne : %1, valeur de retour invalide ! + + + + 行:%1,预置值与返校值不一致! + Ligne : %1, valeur prédéfinie et valeur de retour incohérentes ! + + + + 请先查询当前执行组! + Veuillez d'abord vérifier le groupe exécuté actuel ! + + + + 设置的组号应不为当前执行组! + Le numéro de groupe défini ne doit pas correspondre au groupe exécuté actuel ! + Le numéro de groupe défini ne doit pas correspondre au groupe exécuté actuel ! + + + + 验证 + Validation + + + + 权限验证 + Validation des autorisations + + + + 请选择切换组! + Veuillez sélectionner le groupe de commutation ! + + + + 未选择设备! + Aucun équipement sélectionné ! + + + + 无定值组配置! + Aucune configuration de groupe de valeurs ! + + + + 接收超时! + Délai de réception dépassé ! + + + + 发送命令失败! + Échec de l'envoi de la commande ! + + + + CReportFavTreeWidget + + + 收藏夹 + Favoris + + + + 报表管理 + Gestion des rapports + + + + 请输入收藏报表名称 + Veuillez entrer le nom du rapport favori + + + + + 报表名不能为空! + Le nom du rapport ne peut pas être vide ! + + + + 当前收藏报表名称已存在! + Le nom du rapport favori actuel existe déjà ! + + + + 重命名 + Renommer + + + + 删除 + Supprimer + + + + 当前报表名称已存在! + Le nom du rapport actuel existe déjà ! + + + + 选择报表收藏文件 + Sélectionner le fichier de favoris des rapports + + + + 保存报表收藏文件 + Sauvegarder le fichier de favoris des rapports + Sauvegarder le fichier de favoris des rapports + + + + 收藏报表_ + Rapport favori_ + + + + CReportStackedWidget + + + 返回 + Retour + + + + CReportWidget + + + 导出报表 + Exporter le rapport + + + + CRollSwitchWidget + + + 播放组 + Groupe de lecture + + + + 画面文件名称 + Nom du fichier d'écran + Nom du fichier d'écran + + + + 画面轮询间隔(s) + Intervalle de polling d'écran (s) + Intervalle de polling d'écran (s) + + + + 自动轮询(设定的时间内,未检测到键鼠操作,自动轮询播放画面) + Polling automatique (si aucune opération clavier/souris n'est détectée pendant le temps défini, le polling de l'écran est automatiquement effectué) + Polling automatique (si aucune opération clavier/souris n'est détectée pendant le temps défini, le polling de l'écran est automatiquement effectué) + + + + 开始 + Commencer + + + + 停止 + Arrêter + + + + 关闭 + Fermer + + + + 轮询时间(s) + Temps de polling (s) + Temps de polling (s) + + + + CRunSequenceFilterDialog + + + 过滤 + Filtrer + + + + 关键字 + Mot-clé + + + + 顺控名称: + Nom du contrôle séquentiel : + + + + 类型 + Type + + + + 标准顺控 + Contrôle séquentiel standard + + + + 自定义顺控 + Contrôle séquentiel personnalisé + + + + 位置 + Emplacement + + + + 位置名称: + Nom de l'emplacement : + + + + CRunningSequenceModel + + + 名称 + Nom + + + + 位置 + Emplacement + + + + 类型 + Type + + + + 执行结果 + Résultat de l'exécution + + + + 标准顺控 + Contrôle séquentiel standard + + + + 自定义顺控 + Contrôle séquentiel personnalisé + + + + 未执行 + Non exécuté + + + + 正在执行 + En cours d'exécution + + + + 已触发 + Déclenché + + + + 执行失败 + Échec de l'exécution + + + + 执行成功 + Exécution réussie + + + + 执行终止 + Exécution arrêtée + + + + 执行暂停 + Exécution suspendue + + + + 执行跳过 + Exécution sautée + + + + CSecondButtonGroupWidget + + + 配置错误! + Erreur de configuration ! + + + + CSecondNavigationWidget + + + 是 + Oui + + + + 否 + Non + + + + 切换画面 + Changer d'écran + + + + 调用程序 + Appeler le programme + + + + 导入 + Importer + + + + 导出 + Exporter + + + + 一级 + Niveau 1 + + + + 二级 + Niveau 2 + + + + 三级 + Niveau 3 + + + + 是否使用 + Utilisé ou non + Utilisé ou non + + + + 操作 + Opération + + + + 图标 + Icône + + + + 数据 + Données + + + + web发布 + Publication web + + + + + 提示 + Rappel + Rappel + + + + 导出成功! +导出路径: + Exportation réussie ! +Chemin d'exportation : + + + + 保存失败 + Échec de la sauvegarde + Échec de la sauvegarde + + + + 属性配置 + Configuration des propriétés + + + + 全部展开 + Développer tout + + + + 全部收缩 + Réduire tout + + + + CSecondReportWidget + + + 结束时间晚于开始时间,请调整时间之后再查询! + L'heure de fin est ultérieure à l'heure de début, veuillez ajuster l'heure avant de rechercher ! + L'heure de fin est ultérieure à l'heure de début, veuillez ajuster l'heure avant de rechercher ! + + + + 未选择测点,请选择测点之后再查询报表! + Point de mesure non sélectionné, veuillez sélectionner un point de mesure avant de rechercher le rapport ! + + + + 暂不支持10000条以上数据的查询,请调整查询时间或时间间隔之后再查询! + La recherche de plus de 10 000 données n'est pas encore supportée, veuillez ajuster la période de recherche ou l'intervalle de temps avant de rechercher ! + La recherche de plus de 10 000 données n'est pas encore supportée, veuillez ajuster la période de recherche ou l'intervalle de temps avant de rechercher ! + + + + 开始时间 + Heure de début + + + + 查询时间 + Période de recherche + Période de recherche + + + + 当前登录用户无运维管理功能权限! + L'utilisateur actuel n'a pas les autorisations de gestion de la maintenance ! + L'utilisateur actuel n'a pas les autorisations de gestion de la maintenance ! + + + + 导出表头失败: +无法打开文件! + Échec de l'exportation de l'en-tête : +Impossible d'ouvrir le fichier ! + + + + 导出表头至: + + En-tête exporté vers : + + + + + + 当前登录用户无运维管理功能权限! + L'utilisateur actuel n'a pas les autorisations de gestion de la maintenance ! + L'utilisateur actuel n'a pas les autorisations de gestion de la maintenance ! + + + + + 报表管理 + Gestion des rapports + + + + 导入表头失败: +导入格式错误,仅支持csv文件! + Échec de l'importation de l'en-tête : +Format d'importation incorrect, seuls les fichiers CSV sont supportés ! + + + + 导入表头失败: +无法打开导入的文件! + Échec de l'importation de l'en-tête : +Impossible d'ouvrir le fichier importé ! + + + + 导入表头失败: +表头长度与现有表头长度不一致! + Échec de l'importation de l'en-tête : +La longueur de l'en-tête importé ne correspond pas à la longueur de l'en-tête existant ! + + + + 导入表头成功! + Importation de l'en-tête réussie ! + + + + 报表数据为空,请先查询报表数据! + Les données du rapport sont vides, veuillez d'abord rechercher les données du rapport ! + + + + 导出报表失败: +无法打开文件! + Échec de l'exportation du rapport : +Impossible d'ouvrir le fichier ! + + + + 导出表格成功! + Exportation du tableau réussie ! + + + + 查询终止! + Recherche terminée ! + + + + 该时间段无数据! + Pas de données pour cette période ! + + + + 生成报表失败! + Échec de la génération du rapport ! + + + + 时间 + Temps + + + + CSecondReportWidgetClass + + + test + test + + + + 日报表 + Rapport quotidien + + + + 月报表 + Rapport mensuel + + + + 年报表 + Rapport annuel + + + + 自定义 + Personnalisé + + + + 是否统计 + Statistiques + + + + 查询 + Rechercher + + + + 收藏 + Favoris + + + + 导出表头 + Exporter l'en-tête + + + + 导入表头 + Importer l'en-tête + + + + 导出表格 + Exporter le tableau + + + + 开始时间 + Heure de début + + + + + 年 + Année + + + + + 月 + Mois + + + + + 日 + Jour + + + + + 时 + Heure + + + + + 分 + Minute + + + + 结束时间 + Heure de fin + + + + 时间间隔 + Intervalle de temps + + + + 1年 + 1 an + + + + 1个月 + 1 mois + + + + 1天 + 1 jour + + + + 1小时 + 1 heure + + + + 30分钟 + 30 minutes + + + + 15分钟 + 15 minutes + + + + 全部 + Tout + + + + CSeqPermDialog + + + + 验证 + Validation + + + + 操作验证 + Validation des opérations + + + + + 用户组 + Groupe d'utilisateurs + + + + + 姓名 + Nom + + + + + 密码 + Mot de passe + + + + + 账号 + Compte + + + + 监护验证 + Validation du superviseur + + + + 取消 + Annuler + + + + 监护验证: + Validation du superviseur : + + + + 操作验证: + Validation des opérations : + + + + + %1输入名称不存在! + Le nom %1 n'existe pas ! + + + + %1无遥控监护权限! + %1 n'a pas les droits de supervision à distance ! + + + + %1无顺控执行权限! + %1 n'a pas les droits d'exécution du contrôle séquentiel ! + + + + %1不允许在该节点登录! + %1 n'est pas autorisé à se connecter à ce nœud ! + + + + %1用户口令错误! + Mot de passe de l'utilisateur %1 incorrect ! + + + + %1用户已失效! + Le compte de l'utilisateur %1 est expiré ! + + + + %1用户已锁定! + Le compte de l'utilisateur %1 est verrouillé ! + + + + %1用户不属于所选用户组! + Le compte de l'utilisateur %1 ne fait pas partie du groupe d'utilisateurs sélectionné ! + + + + %1用户权限检查出错! + Erreur lors de la vérification des droits de l'utilisateur %1 ! + + + + 提示 + Rappel + Rappel + + + + 监护验证: 输入账号有误! + Validation du superviseur : Compte incorrect ! + + + + 监护人和操作人不能为同一人! + Le superviseur et l'opérateur ne peuvent pas être la même personne ! + + + + CSequenceManageWidget + + + CSequenceManageWidget + CSequenceManageWidget + + + + 顺控配置 + Configuration du contrôle séquentiel + + + + 顺控执行 + Exécution du contrôle séquentiel + + + + 顺控报告 + Rapport du contrôle séquentiel + + + + 所有顺控 + Tous les contrôles séquentiels + + + + 正在执行 + En cours d'exécution + + + + + 过滤 + Filtrer + + + + 历史列表 + Liste historique + + + + 执行详情 + Détails de l'exécution + + + + 导出 + Exporter + + + + 打印 + Imprimer + + + + 提示 + Rappel + Rappel + + + + 无顺控操作权限! + Aucun droit d'opération du contrôle séquentiel ! + + + + Save File + Sauvegarder le fichier + Sauvegarder le fichier + + + + (*.pdf *) + (*.pdf *) + + + + CSequenceWidget + + + 顺控 + Contrôle séquentiel + + + + 顺控名称: + Nom du contrôle séquentiel : + + + + - - + - - + + + + 执行方式: + Mode d'exécution : + + + + 自动 + Automatique + + + + 单步 + Pas à pas + + + + 执行 + Exécuter + + + + + + + + + + + + + 暂停 + Pause + + + + + 终止 + Terminer + + + + 正在查询... + Recherche en cours... + + + + 服务应答 [%1]:%2 + Réponse du service [%1] : %2 + + + + 服务应答-错误 [%1] + Réponse du service - Erreur [%1] + + + + %1[%2] +%3%4 +%5%6 + + %1[%2] +%3%4 +%5%6 + + + + + 顺控名称: + Nom du contrôle séquentiel : + + + + 错误代码: + Code d'erreur : + + + + 错误描述: + Description de l'erreur : + + + + 状态变化 [顺控-%1]:%2 + Changement d'état [Contrôle séquentiel-%1] : %2 + + + + 状态变化 [顺控-%1] [功能-%2]:%3 + Changement d'état [Contrôle séquentiel-%1] [Fonction-%2] : %3 + + + + 状态变化 [顺控-%1] [功能-%2] [动作-%3]:%4 + Changement d'état [Contrôle séquentiel-%1] [Fonction-%2] [Action-%3] : %4 + + + + 顺控名称 + Nom du contrôle séquentiel + + + + 功能名称 + Nom de la fonction + + + + 动作名称 + Nom de l'action + + + + 请求人工干预! + Intervention manuelle requise ! + + + + 人工干预请求 + Demande d'intervention manuelle + + + + 重试 + Réessayer + + + + 跳过 + Passer + + + + 等待执行... + En attente d'exécution... + + + + 等待暂停... + En attente de pause... + + + + 等待继续... + En attente de reprise... + + + + 等待终止... + En attente de terminaison... + + + + 顺控开始 + Début du contrôle séquentiel + + + + 顺控终止 + Fin du contrôle séquentiel + + + + 顺控暂停 + Pause du contrôle séquentiel + + + + 顺控继续 + Reprise du contrôle séquentiel + + + + 单步开始 + Début du mode pas à pas + + + + 单步继续 + Reprise du mode pas à pas + + + + 未执行 + Non exécuté + + + + 正在执行 + En cours d'exécution + + + + 已触发 + Déclenché + + + + 执行失败 + Échec de l'exécution + + + + 执行成功 + Exécution réussie + + + + 执行终止 + Exécution terminée + + + + 执行暂停 + Exécution en pause + + + + 执行跳过 + Exécution sautée + + + + 继续 + Continuer + + + + CSeriaDevTableModel + + + 序号 + Numéro de série + Numéro de série + + + + 位置 + Emplacement + Emplacement + + + + 通道描述 + Description du canal + + + + RTU描述 + Description de l'RTU + + + + 设备描述 + Description de l'équipement + + + + 端口名 + Nom du port + + + + 设备ID + ID de l'équipement + + + + 通讯状态 + État de la communication + État de la communication + + + + 通讯中断 + Communication interrompue + + + + 通讯正常 + Communication normale + + + + CSerialDevStatusWidget + + + RTU/端口 + RTU/Port + + + + CShieldTableDelegate + + + 删除 + Supprimer + + + + 启用 + Activer + + + + 取消 + Annuler + + + + + + 提示 + Rappel + Rappel + + + + 当前用户无标签设置功能权限! + L'utilisateur actuel n'a pas les droits pour définir des étiquettes ! + + + + 请先取消屏蔽! + Veuillez d'abord annuler le blocage ! + Veuillez d'abord annuler le blocage ! + + + + 删除失败! + Échec de la suppression ! + + + + CShieldTableModel + + + 名称 + Nom + + + + 屏蔽类型 + Type de blocage + + + + 屏蔽属性 + Propriété de blocage + + + + 屏蔽模式 + Mode de blocage + + + + 是否启用 + Activé ou non + + + + 时段类型 + Type de période + + + + 屏蔽时段 + Période de blocage + + + + 操作用户 + Utilisateur opérateur + Utilisateur opérateur + + + + 操作主机 + Hôte opérateur + Hôte opérateur + + + + 屏蔽描述 + Description du blocage + + + + 操作 + Opération + + + + 全站屏蔽 + Blocage de station complète + Blocage de station complète + + + + 电压屏蔽 + Blocage de tension + + + + 责任区屏蔽 + Blocage de zone de responsabilité + + + + 设备组屏蔽 + Blocage de groupe d'équipements + + + + 设备屏蔽 + Blocage d'équipement + + + + 测点屏蔽 + Blocage de point de mesure + + + + + 未知 + Inconnu + + + + 已过期 + Expiré + + + + 已启用 + Activé + + + + 未启用 + Non activé + + + + 一次性屏蔽 + Blocage unique + + + + 每周 + Hebdomadaire + + + + 每月 + Mensuel + + + + 每周( + Hebdomadaire ( + + + + %1 + %1 + + + + 每月( + Mensuel ( + + + + CShiftWidget + + + 交接班管理 + Gestion des relèves + + + + 当前值班组 + Équipe de garde actuelle + + + + 填写记录 + Remplir le rapport + + + + 交接班 + Relève + + + + 查询时间 + Période de recherche + Période de recherche + + + + 查询 + Rechercher + + + + 按值班员过滤 + Filtrer par agent de garde + + + + 导出记录 + Exporter les rapports + + + + 保存 + Sauvegarder + + + + 序号 + Numéro de série + + + + 班组 + Équipe + + + + 值班员 + Agent de garde + + + + 接班时间 + Heure de prise de poste + + + + 交班时间 + Heure de remise de poste + + + + 本班处理问题 + Problèmes traités par cette équipe + + + + 本班遗留问题 + Problèmes non résolus par cette équipe + + + + 关键信息备注 + Remarques sur les informations clés + + + + CSimOptWidget + + + CSimOptWidget + CSimOptWidget + CSimOptWidget + + + + 开始模拟操作 + Démarrer la simulation + + + + 序号 + Numéro de série + + + + 图形列表 + Liste des graphiques + + + + + + 提示 + Rappel + Rappel + + + + 当前登录用户无运维管理功能权限! + L'utilisateur actuel n'a pas les autorisations de gestion de la maintenance ! + L'utilisateur actuel n'a pas les autorisations de gestion de la maintenance ! + + + + 请选择一张图形! + Veuillez sélectionner un graphique ! + + + + 确定打开图形:"%1",开始模拟操作? + Confirmez-vous l'ouverture du graphique : « %1 » pour démarrer la simulation ? + Confirmez-vous l'ouverture du graphique : « %1 » pour démarrer la simulation ? + + + + CSliderRangeWidget + + + + 最小值: + Valeur minimale : + + + + + 最大值: + Valeur maximale : + + + + + 确定 + Confirmer + + + + + 取消 + Annuler + + + + CStatisWidget + + + Form + Formulaire + + + + 位置: + Emplacement : + Emplacement : + + + + 统计方式: + Mode de statistiques : + Mode de statistiques : + + + + + yyyy-MM-dd + aaaa-MM-jj + yyyy-MM-dd + + + + 设备类型: + Type d'équipement : + + + + 开始时间: + Heure de début : + + + + 结束时间: + Heure de fin : + + + + 查询 + Rechercher + + + + 告警等级: + Niveau d'alarme : + + + + Excel + Excel + + + + Pdf + Pdf + + + + 打印 + Imprimer + + + + 报表 + Rapport + + + + 图表 + Graphique + + + + 日统计 + Statistiques journalières + + + + 月统计 + Statistiques mensuelles + + + + 年统计 + Statistiques annuelles + + + + 保存为 + Sauvegarder sous + Sauvegarder sous + + + + (*.jpg) + (*.jpg) + + + + + + + + + + 提示 + Rappel + Rappel + + + + 导出成功! +导出路径: + Exportation réussie ! +Chemin d'exportation : + Exportation réussie ! +Chemin d'exportation : + + + + 保存失败 + Échec de la sauvegarde + Échec de la sauvegarde + + + + 结束时间不能小于开始时间! + L'heure de fin ne peut pas être antérieure à l'heure de début ! + + + + 日统计最多查询31天! + Les statistiques journalières peuvent couvrir jusqu'à 31 jours ! + + + + 月统计最多查询12月! + Les statistiques mensuelles peuvent couvrir jusqu'à 12 mois ! + + + + 年统计最多查询2年! + Les statistiques annuelles peuvent couvrir jusqu'à 2 ans ! + + + + 至少勾选一个告警等级! + Cochez au moins un niveau d'alarme ! + + + + CSysParamWidget + + + CSysParamWidget + CSysParamWidget + CSysParamWidget + + + + IP设置 + Paramètres IP + + + + + 查询 + Rechercher + + + + + 设置 + Configurer + + + + 网卡 + Carte réseau + + + + 子网掩码 + Masque de sous-réseau + + + + IP地址 + Adresse IP + + + + 网关 + Passerelle + + + + 日期 + Date + + + + yyyy-MM-dd + aaaa-MM-jj + yyyy-MM-dd + + + + 时间 + Heure + + + + hh:mm:ss + hh:mm:ss + + + + 时间设置 + Paramètres de l'heure + + + + NTP设置 + Paramètres NTP + + + + 是否开启NTP + Activer NTP + + + + 是 + Oui + + + + 否 + Non + + + + NTP服务器 + Serveur NTP + + + + NTP设置失败:%1,主机名:%2 + Échec de la configuration NTP : %1, nom de l'hôte : %2 + Échec de la configuration NTP : %1, nom de l'hôte : %2 + + + + NTP设置成功 + Configuration NTP réussie + + + + 时间设置失败:%1,主机名:%2 + Échec de la configuration de l'heure : %1, nom de l'hôte : %2 + Échec de la configuration de l'heure : %1, nom de l'hôte : %2 + + + + 时间设置成功 + Configuration de l'heure réussie + + + + IP设置失败:%1,主机名:%2 + Échec de la configuration IP : %1, nom de l'hôte : %2 + Échec de la configuration IP : %1, nom de l'hôte : %2 + + + + IP设置成功 + Configuration IP réussie + + + + CTableDataModel + + + + 提示 + Rappel + Rappel + + + + + 只显示前%1条记录! + Seuls les premiers %1 enregistrements sont affichés ! + Seuls les premiers %1 enregistrements sont affichés ! + + + + + + + 时间 + Temps + + + + CTableDelegata + + + 是 + Oui + + + + 否 + Non + + + + CTableModel + + + 图元名称 + Nom de l'élément graphique + Nom de l'élément graphique + + + + 触发动作 + Action déclenchée + + + + 控制面板 + Panneau de contrôle + + + + 默认着色策略 + Stratégie de coloration par défaut + + + + 模拟操作 + Opération de simulation + + + + 统计日期 + Date de statistique + + + + 区域名称 + Nom de la région + + + + 设备类型 + Type d'équipement + + + + %1总数 + Total %1 + + + + CTableViewExport + + + + 保存 + Sauvegarder + + + + + + + 提示 + Rappel + Rappel + + + + + 导出成功! +导出路径: + Exportation réussie! +Chemin d'exportation : + Exportation réussie! +Chemin d'exportation : + + + + + 保存失败 + Échec de la sauvegarde + + + + CToolTip + + + + 全部 + Tout + + + + + 告警列表 + Liste des alarmes + Liste des alarmes + + + + + 时间 + Temps + + + + + 告警内容 + Contenu de l'alarme + Contenu de l'alarme + + + + CTreeItemDelegate + + + 切换导航 + Changer de navigation + + + + 加载网页 + Charger la page Web + + + + CTrendDelegate + + + + 颜色选择 + Sélection de couleur + + + + CTrendEditDialog + + + + 趋势编辑 + Édition de tendance + + + + + 取消 + Annuler + + + + + 确定 + Confirmer + + + + + 添加 + Ajouter + + + + + 删除 + Supprimer + + + + + 清空 + Vider + + + + + + + 警告 + Avertissement + + + + + 测点数量不允许为空! + Le nombre de points de mesure ne peut pas être vide! + + + + + 测点名称不允许存在空值! + Le nom du point de mesure ne peut pas contenir de valeur vide ! + Le nom du point de mesure ne peut pas contenir de valeur vide ! + + + + + 提示 + Rappel + Rappel + + + + + 当前未选中行! + Aucune ligne actuellement sélectionnée ! + Aucune ligne actuellement sélectionnée ! + + + + CTrendEditModel + + + + 测点名称 + Nom du point de mesure + + + + + 颜色 + Couleur + + + + + 点标签非法 + Étiquette de point invalide + + + + + 只能添加模拟量和累积量! + Seules les quantités analogiques et cumulées peuvent être ajoutées ! + Seules les quantités analogiques et cumulées peuvent être ajoutées ! + + + + + 该测点已存在! + Ce point de mesure existe déjà ! + Ce point de mesure existe déjà ! + + + + CTrendEditView + + + + + + 提示 + Rappel + Rappel + + + + + 请选中一行! + Veuillez sélectionner une ligne ! + + + + + 警告 + Avertissement + + + + + 该测点已存在! + Le point de mesure existe déjà ! + + + + CTrendFavTreeWidget + + + + 收藏夹 + Favoris + + + + + + + 错误 + Erreur + + + + + + + 当前趋势名称已存在! + Le nom de la tendance actuelle existe déjà ! + + + + + 添加趋势 + Ajouter une tendance + + + + + 导入 + Importer + + + + + 显示 + Afficher + + + + 编辑 + Modifier + + + + + 重命名 + Renommer + + + + + 删除 + Supprimer + + + + + 导出 + Exporter + + + + + 提示 + Rappel + Rappel + + + + + 确定删除所选项吗? + Êtes-vous sûr de vouloir supprimer les éléments sélectionnés ? + + + + + 选择趋势收藏文件 + Sélectionner le fichier de favoris de tendance + + + + + 保存趋势收藏文件 + Sauvegarder le fichier de favoris de tendance + Sauvegarder le fichier de favoris de tendance + + + + 自定义趋势_ + Tendance personnalisée_ + + + + CTrendTreeView + + + + + 全选 + Tout sélectionner + Tout sélectionner + + + + + + 清空 + Effacer + + + + 刷新 + Rafraîchir + + + + CTrendWindow + + + + 设备/点 + Équipement/Point + + + + + 收藏夹 + Favoris + + + + + + + 错误 + Erreur + + + + + 趋势名称不允许为空! + Le nom de la tendance ne peut pas être vide ! + + + + + 最小值不能大于最大值! + La valeur minimale ne peut pas être supérieure à la valeur maximale ! + + + + CWaittingDlg + + + 报表管理 + Gestion des rapports + + + + 查询中,请等待或终止查询 . . . +(退出窗口默认终止查询) + Recherche en cours, veuillez patienter ou annuler la recherche... +(Fermer la fenêtre annule la recherche par défaut) + + + + 终止查询 + Annuler la recherche + + + + CWaveListDialog + + + Dialog + Dialogue + + + + CWebEngineView + + + Render process normal exit + Processus de rendu terminé normalement + + + + Render process abnormal exit + Processus de rendu terminé de manière anormale + + + + Render process crashed + Processus de rendu planté + Processus de rendu planté + + + + Render process killed + Processus de rendu tué + + + + 刷新 + Rafraîchir + + + + CWorkTicketManage + + + Form + Formulaire + + + + 票库管理 + Gestion de la billetterie + Gestion de la billetterie + + + + 开票 + Émettre un billet + Émettre un billet + + + + 删除 + Supprimer + + + + 开票记录 + Enregistrement de la facturation + Enregistrement de la facturation + + + + 名称 + Nom + + + + 类型 + Type + + + + 文件路径 + Chemin du fichier + + + + + + + + 提示 + Rappel + Rappel + + + + + 请选中一条记录! + Veuillez sélectionner un enregistrement ! + + + + 当前登录用户无运维管理功能权限! + L'utilisateur actuel n'a pas les autorisations de gestion de la maintenance ! + L'utilisateur actuel n'a pas les autorisations de gestion de la maintenance ! + + + + 确认删除 + Confirmer la suppression + + + + 是否删除 %1 ? + Voulez-vous supprimer %1 ? + + + + 删除失败 + Échec de la suppression + + + + CWorker + + + + 设备id + ID de l'équipement + + + + 设备名称 + Nom de l'équipement + + + + 型号 + Modèle + + + + 参数 + Paramètres + + + + 安装日期 + Date d'installation + + + + 状态 + État + + + + 厂家联系方式 + Coordonnées du fabricant + + + + 维护周期(月) + Période de maintenance (mois) + + + + 备注 + Remarques + + + + 所属设备组描述 + Description du groupe d'équipements + + + + 所属设备组标签 + Étiquette du groupe d'équipements + + + + 导出资产信息成功 + Exportation des informations d'actifs réussie + + + + 记录id + ID d'enregistrement + + + + 设备描述 + Description de l'équipement + + + + 记录名称 + Nom de l'enregistrement + + + + 操作人 + Opérateur + + + + 开始时间 + Heure de début + + + + 结束时间 + Heure de fin + + + + 维护内容 + Contenu de la maintenance + + + + 导出维护记录成功 + Exportation des enregistrements de maintenance réussie + + + + 导入资产信息失败,文件打开失败! + Échec de l'importation des informations d'actifs, échec de l'ouverture du fichier ! + + + + 部分设备组标签不存在 + Certaines étiquettes de groupe d'équipements n'existent pas + + + + 导入维护记录失败,文件打开失败! + Échec de l'importation des enregistrements de maintenance, échec de l'ouverture du fichier ! + + + + 部分资产不存在 + Certains actifs n'existent pas + + + + ChanParaWidget + + + Form + Formulaire + + + + 网口参数 + Paramètres réseau + + + + 串口参数 + Paramètres série + + + + 确认修改 + Confirmer les modifications + + + + 重启通道 + Redémarrer le canal + + + + + 通道使能 + Activation du canal + + + + + 通道名称 + Nom du canal + + + + + 通道描述 + Description du canal + + + + 通道号 + Numéro du canal + + + + 波特率 + Débit en bauds + + + + 校验位 + Bit de parité + + + + 通道IP1 + IP du canal 1 + + + + 端口号1 + Numéro de port 1 + + + + 通道IP2 + IP du canal 2 + + + + 端口号2 + Numéro de port 2 + + + + 通道IP3 + IP du canal 3 + + + + 端口号3 + Numéro de port 3 + + + + 通道IP4 + IP du canal 4 + + + + 端口号4 + Numéro de port 4 + + + + 本地端口号 + Numéro de port local + + + + + 警告 + Avertissement + + + + 无修改权限! + Aucun droit de modification ! + + + + 初始化权限失败! + Échec de l'initialisation des droits ! + + + + + + + 提示 + Rappel + Rappel + + + + 重启成功 + Redémarrage réussi + + + + 确定 + Confirmer + + + + 取消 + Annuler + + + + 修改完成 + Modification terminée + + + + 没有修改数据记录! + Aucune donnée modifiée enregistrée ! + + + + ChanStatusWidget + + + 位置 + Emplacement + Emplacement + + + + 否 + Non + + + + 是 + Oui + + + + 未知 + Inconnu + + + + 采集通道 + Canal de collecte + + + + 转发通道 + Canal de transfert + + + + ChanTableModel + + + 序号 + Numéro de série + Numéro de série + + + + 位置 + Position + Position + + + + 通道号 + Numéro du canal + + + + 通道描述 + Description du canal + + + + 通道使能 + Activation du canal + + + + 通讯性质 + Nature de la communication + + + + 通讯规约 + Protocole de communication + + + + 通道地址 + Adresse du canal + + + + 通道状态 + État du canal + + + + 保留未用 + Réservé non utilisé + + + + 通道检测 + Détection du canal + + + + 通道运行 + Fonctionnement du canal + + + + 通道停止 + Arrêt du canal + + + + 接收帧错误率高 + Taux d'erreur des trames reçues élevé + + + + ConfigWidget + + + 分组管理 + Gestion des groupes + + + + + 新增 + Nouveau + Nouveau + + + + + 删除 + Supprimer + + + + + 上移 + Déplacer vers le haut + + + + + 下移 + Déplacer vers le bas + + + + 保存 + Sauvegarder + Sauvegarder + + + + 轮询组 + Groupe de polling + Groupe de polling + + + + 画面文件名称 + Nom du fichier d'écran + + + + 是否启用 + Activer + + + + 画面轮询间隔(s) + Intervalle de polling de l'écran (s) + Intervalle de polling de l'écran (s) + + + + + + 警告 + Avertissement + + + + + + 请选择任意一条记录 + Veuillez sélectionner un enregistrement. + + + + 确认删除? + Confirmer la suppression ? + + + + 画面文件名称不能为空! + Le nom du fichier d'écran ne peut pas être vide ! + + + + 保存成功 + Sauvegarde réussie + Sauvegarde réussie + + + + 保存失败 + Échec de la sauvegarde + Échec de la sauvegarde + + + + 是 + Oui + + + + 否 + Non + + + + + 提示 + Rappel + Rappel + + + + ContrastWidget + + + Form + Formulaire + + + + 统计方式: + Mode de statistique : + Mode de statistique : + + + + 对比方式: + Mode de comparaison : + Mode de comparaison : + + + + 对比时间: + Temps de comparaison : + + + + yyyy/MM/dd + aaaa/MM/jj + yyyy/MM/dd + + + + 查询 + Rechercher + + + + Excel + Excel + + + + Pdf + PDF + + + + 打印 + Imprimer + + + + 报表 + Rapport + + + + 图表 + Graphique + + + + 最严重告警设备 + Équipement avec l'alarme la plus grave + Équipement avec l'alarme la plus grave + + + + + 设备 + Équipement + + + + 按位置统计 + Statistiques par emplacement + + + + 按设备类型统计 + Statistiques par type d'équipement + + + + 日 + Jour + + + + 月 + Mois + + + + 年 + Année + + + + + + 提示 + Rappel + Rappel + + + + 请至少选择一项! + Veuillez sélectionner au moins un élément ! + + + + : + : + + + + 总共: + Total : + + + + 清空 + Vider + + + + 全选 + Tout sélectionner + Tout sélectionner + + + + 保存为 + Sauvegarder sous + Sauvegarder sous + + + + (*.jpg) + (*.jpg) + + + + 导出成功! +导出路径: + Exportation réussie ! +Chemin d'exportation : + + + + 保存失败 + Échec de la sauvegarde + Échec de la sauvegarde + + + + FaultRecordModel + + + 时间 + Temps + + + + 位置 + Emplacement + + + + 设备名 + Nom de l'équipement + + + + 文件名 + Nom du fichier + + + + FaultRecordWidget + + + FaultRecordWidget + FaultRecordWidget + FaultRecordWidget + + + + 开始时间 + Heure de début + + + + 结束时间 + Heure de fin + + + + 刷新 + Rafraîchir + + + + 全部删除 + Supprimer tout + + + + 删除 + Supprimer + + + + 打开 + Ouvrir + + + + + + + + + 提示 + Rappel + Rappel + + + + + 当前用户不具有删除权限 + L'utilisateur actuel n'a pas la permission de supprimer + + + + + 当前未选中任何项 + Aucun élément sélectionné actuellement + + + + 开始时间不能大于结束时间! + L'heure de début ne peut pas être ultérieure à l'heure de fin ! + L'heure de début ne peut pas être ultérieure à l'heure de fin ! + + + + 确定 + Confirmer + + + + 不存在%1位置! + L'emplacement %1 n'existe pas ! + L'emplacement %1 n'existe pas ! + + + + HandoverWidget + + + 交接班 + Relève + Relève + + + + 操作记录 + Enregistrement des opérations + + + + 值班信息 + Informations de quart + + + + 关键告警 + Alarmes critiques + Alarmes critiques + + + + 工作票 + Billet de travail + + + + 交班班组: + Équipe de remise de poste : + Équipe de remise de poste : + + + + 接班班组: + Équipe de prise de poste : + Équipe de prise de poste : + + + + 接班员 + Personnel de prise de poste + Personnel de prise de poste + + + + 密码 + Mot de passe + + + + 接班签到 + Inscription de prise de poste + Inscription de prise de poste + + + + 确认交接 + Confirmer la relève + Confirmer la relève + + + + + + 未签到 + Non inscrit + Non inscrit + + + + + + + + 已签到 + Inscrit + Inscrit + + + + HistoryWidget + + + 开始时间 + Heure de début + + + + 结束时间 + Heure de fin + + + + 查询 + Rechercher + + + + 重开 + Rouvrir + + + + + 消息 + Message + + + + 链接数据库错误 + Erreur de connexion à la base de données + + + + 历史数据过多!表格仅展示查询结果的10000条 +更多数据查看,请缩小起始时间和结束时间之差 + Les données historiques sont trop nombreuses ! Le tableau affiche uniquement les 10 000 +premiers résultats de la recherche. Pour voir plus de données, veuillez réduire la différence entre l'heure de début et l'heure de fin + Les données historiques sont trop nombreuses ! Le tableau affiche uniquement les 10 000 +premiers résultats de la recherche. Pour voir plus de données, veuillez réduire la différence entre l'heure de début et l'heure de fin + + + + + 提示 + Rappel + Rappel + + + + 请选中一条记录! + Veuillez sélectionner un enregistrement ! + + + + IpcPlusWidget + + + IpcPlusWidget + IpcPlusWidget + IpcPlusWidget + + + + ptz + ptz + + + + 调焦 + Mise au point + + + + 聚焦 + Focaliser + + + + 光圈 + Diaphragme + + + + 缩 + Réduire + + + + 伸 + Étendre + + + + 近 + Proche + + + + 远 + Loin + + + + 大 + Grand + + + + 小 + Petit + + + + 预置点: + Point préréglé : + + + + 调用 + Appel + + + + 提醒 + Rappel + + + + 内存库读取失败 + Échec de lecture de la bibliothèque mémoire + + + + Mainwindow + + + Form + Formulaire + + + + 票库管理 + Gestion de la billetterie + + + + 开票记录 + Enregistrement de la facturation + + + + NavigationConfigDialog + + + + 导航栏配置 + Configuration de la barre de navigation + + + + + + + 导入 + Importer + + + + + 添加节点 + Ajouter un nœud + + + + + + + + + + + + 删除节点 + Supprimer un nœud + + + + + - + + + + + + 清空 + Vider + + + + + × + × + + + + + 添加子节点 + Ajouter un sous-nœud + + + + + ∟ + + + + + + 插入节点 + Insérer un nœud + + + + + | + | + + + + + 导航栏 + Barre de navigation + + + + + + + 导出 + Exporter + + + + + + + + + 背景颜色: + Couleur de fond : + + + + + + + 文字颜色: + Couleur du texte : + + + + + 鼠标选中: + Sélection avec la souris : + Sélection avec la souris : + + + + + 鼠标悬停: + Survol de la souris : + + + + + 启用: + Activer : + + + + + web发布: + Publication web : + + + + + 图标: + Icône : + + + + + + + ... + ... + + + + + 操作: + Opération : + + + + + 数据: + Données : + + + + + 项属性: + Propriétés de l'élément : + + + + + 节点层级属性: + Propriétés hiérarchiques du nœud : + + + + + 节点状态属性: + Propriétés de l'état du nœud : + + + + + 窗口配置: + Configuration de la fenêtre : + + + + + 一级节点 + Nœud de premier niveau + + + + + + + + + 级别背景颜色: + Couleur de fond du niveau : + + + + + + + + + 级别文字颜色: + Couleur du texte du niveau : + + + + + + + + + 级别缩进距离: + Distance d'indentation du niveau : + + + + + + + + + px + px + + + + + 二级节点 + Nœud de deuxième niveau + + + + + 三级节点 + Nœud de troisième niveau + + + + + 取消 + Annuler + + + + + 确定 + Confirmer + Confirmer + + + + QObject + + + 自定义项目 + Projet personnalisé + + + + + 未复归 + Non réinitialisé + Non réinitialisé + + + + + 已复归 + Réinitialisé + Réinitialisé + + + + + - + - + + + + + + + 未确认 + Non confirmé + + + + + + + 已确认 + Confirmé + + + + 预览 + Aperçu + + + + 打印 + Imprimer + + + + + + + + 其他 + Autres + + + + + 模拟量 + Quantité analogique + + + + + 数字量 + Quantité numérique + + + + + 累积量 + Quantité cumulée + Quantité cumulée + + + + + 混合量 + Quantité mixte + + + + 位置列表 + Liste des emplacements + Liste des emplacements + + + + 告警/智能告警 + Alarmes/Alarmes intelligentes + + + + SetValueInputDialog + + + Dialog + Dialogue + + + + 确定 + Confirmer + + + + 取消 + Annuler + + + + + 设置值 + Définir la valeur + + + + 人工置数 + Valeur définie manuellement + + + + UserManageWidget + + + UserManageWidget + UserManageWidget + UserManageWidget + + + + + 提示 + Rappel + Rappel + + + + 用户管理插件用户权限认证库调用失败! + Échec de l'appel à la bibliothèque d'authentification des utilisateurs pour le plugin de gestion des utilisateurs ! + Échec de l'appel à la bibliothèque d'authentification des utilisateurs pour le plugin de gestion des utilisateurs ! + + + + 当前用户ID获取失败! + Échec de l'obtention de l'ID de l'utilisateur actuel ! + Échec de l'obtention de l'ID de l'utilisateur actuel ! + + + + VoiceSlider + + + Form + Formulaire + + + + 0 + 0 + + + + WorkTicketWidget + + + 电子签章 + Signature électronique + + + + 保存 + Sauvegarder + Sauvegarder + + + + 出票 + Émettre un billet + + + + + (签章) + (Avec signature) + + + + 创建目录失败: %1 + Échec de la création du répertoire : %1 + + + + + + + 请先关闭文件: %1 + Veuillez d'abord fermer le fichier : %1 + + + + 历史票不存在! + Le billet historique n'existe pas ! + Le billet historique n'existe pas! + + + + + 当前登录用户无运维管理功能权限! + L'utilisateur actuel n'a pas les autorisations de gestion de la maintenance ! + L'utilisateur actuel n'a pas les autorisations de gestion de la maintenance ! + + + + 保存失败:%1 + Échec de la sauvegarde : %1 + Échec de la sauvegarde : %1 + + + + 保存成功 + Sauvegarde réussie + Sauvegarde réussie + + + + 获取当前登录用户失败! + Échec de l'obtention de l'utilisateur actuel ! + Échec de l'obtention de l'utilisateur actuel ! + + + + 事务执行失败!启动回滚 + Échec de l'exécution de la transaction ! Annulation en cours + Échec de l'exécution de la transaction ! Annulation en cours + + + + 出票失败,请检查网络或者主数据库服务器连接是否异常! + Échec de l'émission du billet, veuillez vérifier si la connexion au réseau ou au serveur de base de données principal est anormale ! + Échec de l'émission du billet, veuillez vérifier si la connexion au réseau ou au serveur de base de données principal est anormale ! + + + + + 出票失败:%1 + Échec de l'émission du billet : %1 + + + + 消息 + Message + + + diff --git a/resource/fr/linkage_server/translate/linkage_server_en.mo b/resource/fr/linkage_server/translate/linkage_server_en.mo new file mode 100644 index 0000000000000000000000000000000000000000..f2ed7810d052fea7010ae5181fc9790eac7f641a GIT binary patch literal 6946 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 M)78&qol`;+0Is5ZBme*a literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/icons/app.png b/resource/fr/model_studio/icons/app.png new file mode 100644 index 0000000000000000000000000000000000000000..49005e5546aef5d1c67d41f4f0b781c2fa27c919 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|&H|6fVg?3opai!N99&>>L)K;;OSW!=wTf-D#h%Sy z!wrvB*Lzj0*?Qf~`n~YPjN(t{!mL04on3n__HNF7_7+yxiVTPK*7+ZS4r1_h^>bP0 Hl+XkK>vv9< literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/icons/ats.png b/resource/fr/model_studio/icons/ats.png new file mode 100644 index 0000000000000000000000000000000000000000..e00ac715783c14631d6bcc1fd0f6d215fc7ad024 GIT binary patch literal 415 zcmV;Q0bu@#P)Tl)oqP0mwAOGNf?9*<#M?M zRDn`XUK?l@ffg_UJmv(=dLhMtY)NY7p_rMcIrnIZq(bV0N8FdRXJ(tgOlsd1Fa|6E z&yr4JPcoEYatzeWtOkt6+GdO!?jG~i^rkG(Jn-(>!|@atmgL~?XzsnFg+D=Nb_jd{ zXTWl&gU1CPfD1Fb`LCjtaNYGWz-gmWR5k}Jnpvd_6g?S{G$m;qxCAO4M(bww3ETp2 zl3H06T?1>W_XFTa(i5;9(Y$Aqz>cKpw8QW5175{zSKIrLnK}5yLG4&;Tlr2aEQ51#0mE9<;K@maFXz_==S{-bHSOkNXH7#Or zgCL4cqd|)z1{aIfXb{wX#MLMUvx1HY8b_YIfngbTVVF~fckjG!&bg0yg(!;1LxoDE zQU`Q44)g$lnVtLE5l}O;nuj!j5#QU6Hx^Uez5~69^$hUhXK@1b1J9Cb z$xW?}oC07F`1KLKfKy=J_ZNX7GkY_$xptsK;22m27JwgM%{@K%NzxQ>1#Gp8wh9aY zH^8K%;lzNQ+gUR!0VO}bRM3)#Tmv7#Xri|V+)KJJGY5Q>^cgq*j~|$j)J$>LQD!y{ zJUCG3Up~kJ0_t(Jz(azJAeW?`+uxsdYA*L>hufek>9r%sT?>F4Vw%EMh*Lh%fIsXe VY}Sy>M_2#=002ovPDHLkV1mIEups~d literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/icons/base.png b/resource/fr/model_studio/icons/base.png new file mode 100644 index 0000000000000000000000000000000000000000..72015b283859a7d86ee89b4b51183fd6f705dcd6 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|&H|6fVg?3opai!N2@p9san%ZY zt;WepHz(HY+B{dJ_P+8;b>_6NDI0B6?gzLE&X!Sip7OGFiP(yU=9zoX2@*;}GBK>~<=wd}t$Ye6)^LYh85km0#`YLj{9N}=7 zR4RqX<2efJcDq=XMLZs-TrMjJA&A9d;`a7d{3gw2Q$(XtA%wsMuv)FSxw-k-fWC5d zb%myB0G}AZVzKxYHXe_0xjq?r0P8t58V#1q_K!h4b@sG)?32@sW>@kDXXB7$lue?{D+%?M-gh>-B?eP9~FW%CY2x$wwz2iquq=y zfz9W006LwH+`PNHJJ{xWJn-!Wd_R?+L{(MUmBjvc1rBAkTG8wEfUh>Mudlhkzb6`v za(Q`q)MW)24u=#91^N7x^`ADI&5CxrO*kCJ?RM`oWNh1JG#XKTQ^8HcKoFcD|8WVFz+(z<2e<={4pKro!6k$WZ~^m3 z384bqfzckjC(AJbJB(ymciI`x?v8ikIO0E0nFh%OAZ^s^Bz2V^UIDxTIIR?UbZ!xX zq?Y6nK)paXN!q)6BOj~-Ndw6|n`%br{3{niF7g1N2Qc`%)Xs&{4~~p*lyr92&+e+A z2$8IRbL1mPByGUGb29S!Ne*uJydZK7)@m)O4o3}ucBM$bTE*Q)@&&?Ce?w~)i_+S? zU3xAW8)Q_HY_BZ9>OL`T%|&ee@3xf*A^8mFPYz@h&2wZnKWy+8KFiHtBC#aYIPu^j zaknItLmG$3k^L`Qf7&NWyKwX}nZ;Td_uJ9U0PqFf_HL&3Z<+!C0000ghG0aYY^$6H)baWL8C?uf(8mY5KLLJM|e@G4B7W_JN@{K8Qcr6x&(J{5liSrf362o`VJPbmi}yG zC`O7HpW-?WV+*^5vPRCmTa4Ag$?REdra|LrR&Q=}Di4C_Xg+`83oc=@nTzLGsUzA4 z>ycUz9LqmH?ygfdy=d zVO}8mK4PQji*FjS5z;n`jc_}1-Vg8Njs!u>A15#vBg+55&-CeZ5QO`W@u|8S|3ci# b9=!Vv);>;vI^aOy00000NkvXXu0mjf4-CGF literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/icons/db.png b/resource/fr/model_studio/icons/db.png new file mode 100644 index 0000000000000000000000000000000000000000..5d0ee53f87d926566495dc06d3840a263a8539fc GIT binary patch literal 304 zcmV-00nh%4P)k7R5*?8l-+H@Pz;5?AO`3Lzy?V6dl>;XV3WcI=>%j0*Z_F< z5HJC35ah}?q*16672dFP9(?_Oj&!rKEJ>!SV_+Wmq}`6d&S7S!^jI}g)fMmsoFnl7 zTpLY3fLRP00c$f`{Y1Qxh~y%26_KU;UEsMLkSvKfX z_?HdLEb&mN>axc+o?9e;Sc~PrCP?p0b_hguTChKfhEu;C*f+3^nCDC?#ki|hc2%p1 zR9kHn3iPsiOjRM8EBFcdrt12BRkkn|0J8@PdtpqsFPIDwA90Ph1g zU;}Z2ny00y4J}P1-Vdbr`ugsAX{MB_0h}?9JAjIr#{h4Un07*qo IM6N<$g64#K(*OVf literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/icons/dept.png b/resource/fr/model_studio/icons/dept.png new file mode 100644 index 0000000000000000000000000000000000000000..008850dc996ff3c6b7c3eedc1877862c6ecc7c5e GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|&H|6fVg?3opai!NFVdQ&MBb@08$}c A!TLl-+H@KoEonAAq+G zPyrw@v%C|es$Ue9AxDqhhQs3?8~S=H_21~ODyXOh?>wcIuh-ti=c~EEJNNF< zEoLWG!$o9PF983B5FgBDAF(4RZCAq(`IU1bhyZ@(D>}3MtOTjg3&<`V{iQlM(V%ny O0000TR6$C_KoG1Ij{)}y9@94=bMWX7)E_ALfc?Sl{zEWN zSYMzI=tFLO^#Ou8c#qWD17Xrp!4x!;bkjwpx+kk)7_bCRBaW2PBY+D4pGBzx(5dP} z*%J~0xCHPH;I+tKd2NC@q9ci_?h2(lC!6485rdW_I!-O6L}PD8`8xn_Gaj7-Xh*q& zs&?5UHuT;MpH>z4QF$%rNxA{B&O~QSs%l?K77?n0nYCptrL+d{fw4y=2?<1mN}m{f z&ZJS#-1xI>dUxyZt>;37Qxg#qZ0Vhu9T@K8)@u`lip;DNkv)wRk!&o_J!^j^a`Zlg zmm(K~d(CV2(`0000a$ysne}$o<;KDZA0%Sn( zfQVSzt%8>Bh9KV^EN&*C3Y4VwH%j%UVSK z7wYWsJqloG1A(lL2ig*kXH{r=O&4?{6Oad@wO~pCL^IIjPL&5WUC>Ok;f=z2RKV%7 z8kFVO+(k9bnT*oVYqV^mC<$^xdupBl@NznEVKhmTI7Q<$6Qs&n+RifcIoqH%);MtI@#yRM)80W%(P^2)1X2ZyOhZZ-jboZA(_m}Cy3;POguFNZbso+fY zM}BpUyvB4c|Vyeqw1-Gz0@I$+PkTKXqk-NUGl@TC~k7@Jo?xuGrbdOJ7+4s^yACtRt%0Z z3+|YwMvIrs_?&1|8+5OGVq3}I3$K#P#!t64{yuDfMbpK1{AfwHFT$F zVv;Gd)co?Pv-k83&UEaRUF+W&t-FwzT-8ntec5xOuxQ8jt^Lm9Rr@FMa(|^}d@Da| z(Yt#$-m11K*5x-w%qItOB3~c4evy0CQgv$2n`OzuRWoa^d4fx&Exygy$1lZ8^N;im zHuZeCRvzm<>UK@PJ$dG4&XKyQg3D*i_7uEGrQ#DiYdfdL2ERB2-W@r=xHPqzZ@c(G kQft>MznPX}!<_@uIf?Td+|eA`Yy64)H4WaA)mygz14ZRqXaE2J literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/icons/device_child.png b/resource/fr/model_studio/icons/device_child.png new file mode 100644 index 0000000000000000000000000000000000000000..87859a9767848612cd78a7e3f223dd890aca4b0e GIT binary patch literal 259 zcmV+e0sQ`nP)ChYmjy-^D;2b_c&;vNP+0-QT2);sVN}DcijbT*8bx{YS2II;R zE|+^vKRCnx{J-yf-#JQfif6o{RYoep16EPXBEmt5Fm>ACZ6C)9hM1zZkK=DdJjUm) z!ZVCS6rf zMehZ-aqX+kv}|3*pjlk>3vG;Yymf?m)J-Ny2ffU@5&O@P`~f?XG;N2jO7Q>y002ov JPDHLkV1ix!aL@n% literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/icons/dict.png b/resource/fr/model_studio/icons/dict.png new file mode 100644 index 0000000000000000000000000000000000000000..f63dff6dd21b9930d09187984fbc575331d5dfd9 GIT binary patch literal 546 zcmV+-0^R+IP)=24f5y$HDVF91aJ#t_#K(hzPsg4#{K^nM?+k z%LT6MVm_a9001Ha5usEn(RRC~<#I`lMuYxjHk(noTn_4LwMwhiDyX~NEFz&Bk`%}Q zpjNAW+WV65C;S(_QRw?VWLbuyC=kV$Zc{)k77NzF$!IhRRaLRsY+x7$R8tFv2 z#uyyO!D6up_PED^N~J>acpSN04yjZMrfGgV*?PSO0CYMX^!xqrYh#)w{e)JlMVh7s zFAWj>j-1cu(d+flY&IbX0({^9aymf}U>F7_lL=&5rgpo{{S_Gi27>|Z_xo?7KFDUX kuq+FSL;|DHC@g#jA8VTooYJ>+ivR!s07*qoM6N<$f?G7^QUCw| literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/icons/fesCfg.png b/resource/fr/model_studio/icons/fesCfg.png new file mode 100644 index 0000000000000000000000000000000000000000..52c678dc436aec203d7eb46d8e6f26039527f990 GIT binary patch literal 368 zcmV-$0gwKPP)TRKab7KoA@(3ZMjc5J$`((g7tT9k_##4oC$d9V8v# z|44Q^a5|uai`H7C3kD}btaK0Nc4uey?npuiSR;}=&ocmz0J4RAJ%Ba^&;hsua9BuG zn2^*-o+PzPSV)?iH?tNbB_taFyC`Q5pozXulJ;I$Io3$(NQO<6xEm2=E_*xf?t6xp z!(KX4YF$e&8j@N`wPQ_${Tjt)L{ykel3j#7J64-D0AHrca!79Hh`s^5SjPx^2k;PK zru5Zq*K^j+k&VIHFpD$E%J0o-RCh%*6@{;Z6I8xFV?~$a2XHUxs>^?Zq@DE9hz3ac@DG^$0|qw9ASR+HDgFVA$*PpaCfN)k%$A$MXdC<*Cy-J@4~<-tT$8@6+H5{aC~+-hwNk6B{@WZW2A%lEDDpaUH^ocrNjXv5a;& zv@2PI9bBo8Ud)DhGFeA^88zG&ly~6}LwLq+)GXsP3AS;TQ`{H3JzzYziQrbzQe@B+ z!b*ml4{qt3C>ON8i5HAyxLeF%zn(z{7BKybKgoQr;VI8xINp_<^@J(hlyVlk-7#Ub={0T9DM*8DLn+}TeL9%0000zlHm=4Kn#T+h5_6_N6=gca0E7x5gdgLlnrzP2Y3mL z;0SJTrdSfZ9Osev!&kS#p`i;^cdy;){UFC(244V-9uA|Hmgwx3P;Cq*BE9+5jD8i~`)rd^T4Hum z*_$mQ$+{(*ovw4vdG#swOmpAre&*4if^s)I64ifKoA_F{NX_X>44AxatU-0|K=Ns0&qIuJHMoZ zPytB?Mxp?hkPeI%_9SzhkJxe;=^ozm&ECxJoqg4|EiQ?9;3ioCc%CTNMw0Pi=HxdM zlB3HtPfYG4m19^*ZUL;iu`dOZP9ZRsyl?GnEZMmjlz`-mjUj7NH3(!20E;MW&9EX_ z186$&MpA;0JmYgoEN| z#N@w`+(p*Flk_61fMn@}HXhuHLC7YMv~_RIrYA|Yd!DuBEQ`Dym;U$x;FjdUV<(c! z&g-?Lb&4m~MYhXR6f=@*0Qo2f{00000JODfZ1O@+K zCyr!kp51k!Z0o+~MX7LY!zu*Pckic{-6g{N8C%00V@Kp1pC%4bRyfRtPAF8Wq7=SX zRV1tZaU( zD8K_&sN1u9gYtpvwj_fV2m;mo;#RI)y?)so%*#helEWjK1a8A;?pZl(+SdP3aF8t< zJV^{dw(%0}+PZ=+t-Yg=VV<@%OMw3PLsZ|iYSOx4n+A?T2aVNEhNC8-2T=wDBDzF+ zup9z%gPdkq_-#pmubFII{i5}xw0!2A?sNLI9XPWAGPQZ3;pzZ2X)s z{0SjI0EvY@qNvBs%5O2W|OUU8V3Ut zgdz$mqNoDO1sDV?Y_JMGkqI%#BCE`@$|PIt5vl8UPUh5C9VZ1O;#4Cyt1LAWS)~%*VX2A+N3rzZ7GPcmL%GUW?(N z7&D!i?Ny{$I-d+IIBaU59g5>7GE$JDYz~GsLO-325w@b7(V6v&HcH30b2?nE(~Bt$ zYugIJ9<4SdLl71mLEHkG$8;X`2+zE03QG>6#x+c6#y3i1O>7n z!ypJ_oJLu!sZpGT$h@U&vhZ4zXKkCkg2RO{{Ek2b#evxQWQ|{uk|D-y4vLmyqjZL; zt0-&fWVBIlMz@lYJMc3V?$EhpS`9qD&&+T&6lHsa9b9%|bA@mkA}A+#i+zqck&+!E zO>8okW|?d$3|^O9H*7H(eT1bzE-VaiTNE2~nMFG+UaVS%GOn%#UJghynx}qFNH95V zFUh`5F3c|}(I%R}z$+xuzo4fpApjxy1OX2K9{?;601*Hc02u%T1-alSj^tN}MyZwt z(jx0x6bSvn#u+2LOTUF&OhgOvOf#LTW@z?m$z6+vpg@Dt7lZO)B)KZat;=9&KA9P~ zk`k50WH5Q;Xm?5F7zOKwcPn}}WDE@yaw>Z>gIk6}UNdhD4u%~g7IKM@Z-yC_A{2g) zLYowxl@5|0drd)+6cv>njb$4QO+pBpv4(OOuCLmwdkA^vYea%Ew3Wn>^?c_2k&Y-wQ( zVP|P>XCSFDIXO2VW^ZyJSWiz)AX9H_Ab7dfKa&Ks9Vrg_`WG(TRMBmNKn#6hfiMCa? z{82Vwgmwa=*ZL%Lp;fBzBn$cQd(WKj*v<2d2vw~CB##4@7y%3nGy9Bh7DB4pdLjII z0gwqaIJyCm%Ll-+H@FcgJ9P~Kq!Mxav80NJ1&fldJ305<3bWdufm z_aikUbObtq(UlU(K=@0JWXTUc-#zxVJu1sGF+fFFZIAjOB&G3?>Y+1$q=lr_D}W+5 z13%gPc*nQ3y*&c}HSiBifc*nNeU-p=EvW*gw)Zb@p@lqaZ1u1Uk|Nn#ZvZd{ekFZN znmz@HRyLLMTe^(Hlk}0VEjr9Q;QdCL84&km*O@@lIx`=d(JET}WxKkUAmV*S1>464 zni|l;_TOcsOF-2cGi_`~vTnt5PASo6gm>_39QL6AC%8LvDOu}(n*aa+07*qoM6N<$ Ef`>?XuK)l5 literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/icons/network.png b/resource/fr/model_studio/icons/network.png new file mode 100644 index 0000000000000000000000000000000000000000..dc0b0060321fe15275ba0ef9efc0133911b4be3f GIT binary patch literal 484 zcmVVLfkD^!6qxmB6J`S|7dXbfE&Hpd4s#691Y5@r*%PU_9 zc3B`#VNZfQZUGw2{zTr5l*yJD)<9|}6#D>UEkF;k0UNV7VI!Drrq)R{x7pWxV&{%y z8>SWGA4;&g_U+l1xkB-!Eextjp33bWEP@WDnnRS&u&+2Tls!uWK@f(YNLq_@=^{2Ff+XzJqJ^D`tyUI-SXc*1 zV`HDnDu`BT{R5KJG75^lu@PHao0E}QIP~tgOENI*-rmf+?|f}7NfPEE3$tK|NLxe( zwy#g)3>*RbK+BJhO95p#KLdT>6BrgUDsaA2)rs3|M*F%S-QJM0;0X<^@yaMmQvR87w45Oy6->N#cgc}=GT{CrN+gXf8B9aCgI)kxS>E`)>7>;{Jl8?*e09N8SUD8Qu#VqgHFY zXI7c;`|j??{U7fwZtE#t$F=gJqstk4fk}0tOZ6CB6((g*y1jGnGJ}u0XQt1Wop|Me zal>S*-yBLit2c|?jcBcX{K9WjcjVzatPWR71zn2x6NJ592z$&vy0!9hv3sVl=?}&S z7LTQNu9h)bS?j2;Zr*fgTl)XyCP!NT`l{~;cf`wT6mjMw(x3aSqv{}L4EmmwS z1PfbR1#ugD(HGD~D-UQP*oi)YS?z2hvs@vBWL-iIq{!UNH*@CR+(w$F)S*Tk$4#IO zG%NBFpcetRz$|cA5wz-!L;;OOhnArpH0!*9P0y>~CVaO~Xf&i~K+GrOWTT>L2KQP5f70MG}l87v5U zUBD!;SvhaUxdSZxq;O7X9QaefOJTDGd>8C;=&-@5U>n>AyIBY87%95bKpP$|r!mT` zP13ZJ(mv_Yl1DS?_Gl=9Cc2QNurG_w;q!wHryyP>Ip0-JX)?Q z8CV+;(8GL+?t0Xpp@9spg-BwBo5ZD_dXu3E=g=jCX;*6vYb&~9*q0ppX4rBLw+$Y7 zbfd1T;DKNy`0h1$Wi^mmznIF5TYCn-1UpoVOxRqABLMd}Y_+aKJF;+A8%bO*r++)}}60Y~x(vQ4+$1-yuw z_nolWs2-Y!E&0LgMYWjk5(k`5RDn&yFc7>V2FM1@1}TaMfC&f_5H{#0EfXY6K-i!I zoK(6&*q}@h^wp(uolh%HvSj)G&+qfwi(wexA%w67U}Guz2f&u(){DQJ5wYM6fEK`$ zhRrwPCYV$dLRbOV19&6ZCR`1m0q{Wb`&LC2fI})`(Aq&UH;!1zHRF24o^ihZ=xRUI zh?ba>+=+kGCT6zv(rerzCn2eSro9tF=yV*z7s)E(#*JS{c8jtsGwsxotdpY}H#Xji zJ@|mZ?aRQ;$Ne7bssQ^JJrT6tce9IlCF+KP)R5*>Tl+A4dK@5c-5%;76=zx{hchW)VAWH?14$?tL1uPvv z2g%(B(!tUJ9V~M6207LYL4uJ+`!k-;<7ayYecvNDMC1v;lGDb@rm7xu_F0gKG~5XH zOu(h8wiiJJyaN~k__X(Q0-n&;761-hYyW^m=WEuLL%#`ZcKQ+K&7I z;0M601SkNv044z59{922kCvzV50WC7aPRi4Q3&swqV5BrqWDuEme*)ZgBL~A!HCSQz3%6fhy{h%@~33sm^3><~1tTkOLHJY3S@a&Jhh85m|-G zw)q(Be}{z@g*K1-&}V5Ra7DYb;1>(hH7;Vq#)7Tl+jJYFc5~nG65Tq4O+>5hYiREbOYKA*Z|ld-5_jG z-u(a@gbmmr)k(iA*F6IgwPeN4*`Lq<-FY$3GhT}^UIQC-YcJMQO5fgk7ZhV$Ya_)s z12-w9;YW}FPrwcEYUAvIJT%)Q@Fm-D0*W!-0fPWLEt(ov?gV@gaGg@xFG2|B@-y%W z^esRGI08#xd!@;{ehl*NH%Pw0QhUdvMlzbqw=$Zj9~EFF@$(v!V1FjI1Kep$q00&2 zD0T>;H*IQxs|eynst|rO&`LVF5fhLGAV;n*HEQNi0chrur%|2NWo9?C+pcD(bY+B` zI?L^>-W18HOvpE#G&w*VKqv6MCFJEw literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/icons/tv_icon.png b/resource/fr/model_studio/icons/tv_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..16e4536b36ea5cc677c1ecc97b2a862cb1baa91c GIT binary patch literal 349 zcmV-j0iyniP)RXPV;sT$Ry%T$xre0!PH~SyT*Vq!!kxrdP&}?9i*i`O zVLnl70Ihf`rtTWhgI+wM1#P&&9o|yBE<8lL6n~T=OyMdP{T*kR!7Vx?XCWSxU=`b0 zp#-~_OZnH>h;}$+HY=2`P@0f#Q_3GgKh|&&v-*Q#1)*+Sru-8eU;=~X0xAiuXM_Ug z@r<1cF=cC14@x!qXi(@C?MZ)a;WP86YC(t{!Ey*3#aI-1iG5cM9r0g<8|`B;n?WTl)+KLP!NWH81C4CbN~)}mkxl7SG5A^KJ;7o{DR3mGnVkXH09cc}32_@U z%iXthD7s#aHcjOS<<0=~Q(!cbTTk31==yV%vW578>r}QuA-3NJ6=8F<_WG!=29XqK z*J?vLoSWI~2uQIn?TV6PYG#=AKiM7rVA^18HV*-23v0o|@o9b_xePN@Zz35_GmVQ9-vPK4tTP^u zMSo5oJTUXD6W8jXg)S}xs;`Ca6~3;@M+E<7W+vUXJr{2tVpYlhFAz6Xwd#@Vv>fXH nXgde29_Bbl|FYBk*Z_P2-L0YZOPM&200000NkvXXu0mjfd$7Z5 literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/icons/userGroup.png b/resource/fr/model_studio/icons/userGroup.png new file mode 100644 index 0000000000000000000000000000000000000000..bb1b57c41e8c9c541508210f1e813539de9e1a1b GIT binary patch literal 393 zcmV;40e1e0P)DQ^8TgKn&b4{Ba5Cz@Cu`ND1zMql0t+9gq$%9k>J+ zpoh~zN+1=OSx3jjcW1`1Gk(Zgt)!E*o2CgVRJ8(d0?-0@a`zQL58!BKUujGxq^f%W z0|1J>0T|uYxJ{9RnO*MV9D3$O30y)kt3wf5a znT=S1`_8{st8Kv<@!XbTd-!D#$Z?#BP8h`8L zi>j{fQ5sYdB9Z&@3gErqKb0PP(VFi@=Vn~K7*u&B!ENqZp9!fd2_FDH*X{|+JA4N4 zVrI9*6cUkEL?#glw6}cZdQ3}uCnC(i1MJM~SgK+TetUe5J@+W~%!&LJF>#1OtY*t; nEZ{M$Y8K*_&P(=B3;^nHGh(6p^S`Y*00000NkvXXu0mjfA5Np2 literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/setting/fileLogic/configcheck.xml b/resource/fr/model_studio/setting/fileLogic/configcheck.xml new file mode 100644 index 00000000..ed89240b --- /dev/null +++ b/resource/fr/model_studio/setting/fileLogic/configcheck.xml @@ -0,0 +1,374 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resource/fr/model_studio/setting/style/fesTemp.xlsx b/resource/fr/model_studio/setting/style/fesTemp.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..db2f176d673d4d92c2d23562be420897da54146c GIT binary patch literal 18311 zcmeHvWmFx_(k@PLcXxMpmteu&-QC^Yf?IG20YY$hw*bN2HMo23PIAvH`QG#0bJsdQ zGiw!l*t@EFrn;Y+p028vmj(rc2Ks)4$!!XL|NPeh1voLbGm>|-vv*>U2e6?6zIgS6 zZI?0b42=T9M2KM&!?l#u%5=W$Z1W`k815Xi6D=oxCrI3-7m&0|GZ@0D! z;R{&|Okrn|8_z?Vk%h{MDP4_Rh;%zgMp!G_LlVUesb>OPST4Uk?eREaTIFk=#~=n5 zW-U+(WQjm9cIylevuje0!N!n?P>*UKIYF>%f=7^Nbpe-Ax&sL-#D~V}e-R&%0tcT; zGRC4-hqp?%=-bKV9YuHM3IlQs1+*|M0%!_^R>#ZgDMzeWfF^{>0BjI`hQ_Ko(Z*GnzaY3R|3- zekaeUVGR{+;>tY3A9SpqsyHtnCAf0_-kVN?+1QeR-ZTOM0z&$0ZyMP-ntbohm;{A4 zL5!#&YqC!Wg{KoKbV@k-5gB|o5#rHNb~;`SNO|$~&`(}4)`R&7{5RQ79bPB01tv<{ zs~F~q$<*SkgoB`DQt724(YjN~eo?$eO$odVXua>jgHndBRY!(e+O(YIS7KG-?W{w1;4LGg7hw4F?#S& zX^&438kP$+x4err_in&S2xE6VR5zV7YP3Fi=>XMjIK>cA!p*39Qhm-ve*6KGUZ8Jj z?4d|+W?b2g2ADFUP+u6dp-3*fqG3#StD@%JZgb3;=+~1pCnJuN?MK*cpG@3LonXII zyed8Y&cG{eQg&K<)m2l3xC3Z1qC7W#sOK~CA{cgx==fXPLoq)L2TIhEg>OWw#lg(X zW~^C=NiS!6SVb5AF%d4B@|#g>0m{zPPJfmupqoc>}jW2T^WF zWU|?0zJ;B%S{3ZGW>tLsWKf-dmA%msy^#Zr){|;GH?E@h-CY0dngDJG$ldyfQ~GBH_@4}J zc8*p~<|Zc2zdA5%(-uE1z;KTT2Li(UAG|+An0}1>q$Rm6M#RulwMDm2-f!ST@Mlnk zq!*H1$!ZsS>Kw>pLQu?X8Uh;345!wUbSI*w(-~g)zKxQOeBF~u05vC3emBV~MH!G$ zraj#f{c_*dmZo4xTjoTr0*B=TEK;ea*FmdQlp_PB4@EsqUQkpwMjQ*rkY`A)2sbSW zT|{Ggu6k-XWv<_}q&(!FM4H%Wm|v`GkS9=(7b$E%PuX6XTdyk`WQ=~vQDi=yTJKMk3+Thg1M7Tevh{@+VV+ZM+#;DAMYKW^z&jmo@Ri-p`QoB}AU`Ix; z7DhcH^)-5JR{GC^S$(N{QYbBf_a0}-aMmOYaOrHPJ(yJTRVVa6A|{7f!UHBg82}nK2f@1eKpr1Cex?HD2{(yp6Ccm$4gB3wE{5V84hfLG|l# z!>d^w+;?o@ldJ2sYx|>Xq1NoiU*pHZtWm133N770-4*MPfwHIJB<}fUuG;KZ3kk&6 zCPRE zt{&@8-k!AWcNCSW{oNUyVd!Y$0fx0aU_Aeu0m=MhK&EIpePBctUmG92N03>i$({K? z;`+X#t>MPkLz;+Ei7<;)>hW|O;zPCDqdWm>^`J!cJX7?Iz?WW4s3N0uk5L=0QDhCm z9?nd!qYdBYDYF!IUKkHzmW`@6c?&Ohr#T8lGcCHW3}__>YX{K#w?&p_yMzn18;t3h z3EwJHaoB&@t^b_7ZZJb7dsM%5b(A!KRfZCJ$brQixhaS{te+k^I!z=+y4-npP5k+q z`IRY#lfq1oX`CQhft$QeE1a+xHMWWkGYj_Wd?4a^G7no7P9I+J_=^d}{bpxj+jO4J$k&%*a=->rtn2=tByvC!< z^m8#cb6-Eb8Bz8^S>n}QGt^8TmeI%yzhh=XN$2g$({Q)$oV97F=0rO8Hpo?7s%WFH z+5ST6Ku+H)MJkxr)~ZB^5*}hl6Eo6msyZydI~!V<|JgauPF~}_`Sr~BM;_HJTALUN zDRgvYWYYbtRF@NYBJk=FRe}ryO6<>SMrOv9`np{hJm$<8HBg2vnD|8VefE+12t7t% zw~V|(pW-&C0zqNNGd{@{d&Cl^?|}!};Ce;qL-x>sMdVol2rIC60uDfQ0Kx;14~lDe z9wgug2>?+5$P7Rj08#^sAR?G?4x_wKP;m<n;Vjq8Hzm_ zDsJCrjrWnMU2;yT5)-S7%hhpw@GL2R6FpjHb0mxHj`kiND6l;DP|(O<~=p>6wEP^Ng zkbSqd@S|Wi%ain#`ihV?|d_0r(%-aN?^&BjDyO~ce!PoIf)S(O}Wr>xpN~qKz zcWjhQ;wE}16NDg~la}mw-8?of&pEI;ON_KzL46yKn3gD~fLcL3S3&4Co^KE@VBa;` zusG=41!q?C+69zm=QDYpAjU|U8>*<1>qea3BJ5llo*x)$^Z5~G`wJ8l7=*Aj+HMlv zr<9AjW%np)-BKMJN;D7sUijU3Qp)8n`Ukav{b&Y;<{suqFW4z>{$Op@cQuM~uaMTr zP3aRmh*{5*V&)Bw!)R>`4nw8Sm^f8%p9y|O3K=2CRlnCpF(-2t(a#)SMV`+)i|wQjxdqcK z;zgVci(`7k<1H@7ysWfu-AHfT|7r48;px z@n9vCyYqw=ka8&vLbq25Rh!j8G~xJ?A~i}sX7Is z#PJ$)OMqnk)ww3$8i8k9Psw-|V6~g8dq_1$OI2(5t>=?g_A}()SGxt2zRV5*#{Lap z>|_0#h$iFD!M~(f#)ukvdOPY1Nq&nieC!~FXH!w~!DXCZTjCWN38HHPx{ntIAsvlp z9tQdancr-wpP5;u#^F)Z7vWvtJia(iUIY`;3md_gC*60^5e0A~Bq_sLklQgfI>IHOB%{Bx#-}L^BOf%z+{6)6b+{ZsMWc+Qgc$^nDjD++bNb*>FYNCpB0XQ-ZQtO$5p3`9Re!6AT#r znYxrL4N%8UDJX7%7o**8g!NEqj1EoIvi$9VhxnqD(;B!}*a>Z8xlJ@~hJ|mtpGYF* z0`>=YOsl5EO{GmS)5j0tt&@0i#6Ui%*R3k>!Vhx2V=x0B)-{mbuoT89`7P7xq359QK24RQDXgq{{J5^n z)02HT!hO`WRAcZeCtL5OAGOmRAQ!v4oeOH2K0z zUWxTQ`kss}^KGN~eu|>c%ra~gwD;dY?jj0JeHF{7O~l!M2Hgb}I;SJaN0W*pL&fhE zRT_7Im!DRFbor3BYGj#w2CP&T8keRiwybZdat<|Rgr$QS+9P_W_XdoXfP8bBdP@u= zw!#_%prK4aTC|kRJEC+Z2d!Au?;~SfesllyVHaGnDuOLjou~a=krB&qgIyB>4=}%2Ly^ z8Zk#oh4kt@LWJ8*`t74te`@7&6ec&Jup)j#>tf%BFv+7!q?n)-H>-)3PbWmB_PpKE z1BE+d;a4B6+aEuhwB`vTBY`~{H3ewtzE`eRD3v5gscIcWLGEc`!a!0zqYNCDTo=j3 zsT!85YgUb5jNwDwdNsI;8&~>f;*!A6^L~cJj-_DLq?1@xk>O6}ip^%znrVKruo%ga zoJS@XbW{_c5&OIcxT%D<_mlEj{*KDnK$*4f$MqOz6eZ~!^qcEZij`DbOj%XfH%PEf z#dW%E9u_<$c0e+8o6Re>C0Zi~SU@*E6Vtayyy{ zooZHWIWkIVQ{DqFR9=HWdAd}z*KMxD4Q}GV+08{uWjM zi4c3@XJ^5M<7SVG%F+Jtkhs=yhxmN6J)(vnKr=8x{E~Xg@A-0BvLiT{+a$`s@Avd| zYJdUX=jkFdjO>gqAWZDeUtBaFXB+YO@|817r~?^=h(kSI5TcS9Bz%A?)WJt+y!99? zQZiXAIzcltPHk++_=na=%wK7WiP4K-5Fzo9Cr;hdykF0 z<@;NLj0WmfEI?FPV5A0a-o7OtH`5s@vfli(E`g z$uJfSlOr7CIG%X*#7r}VrF}eaddqIeiqgEQF;BqpE0(XgxF*uI}_xJj`JBi)Klf~Mu$C0yHMU)QT&p7w>5lu zH&HIUpb&Pc#6i8coq_@}AM@Bj1!8T-Hgwi`H`J0w&e{yScCa`I4c6;vnh2g zL!La(HAnt=4w{j89`+KZyH>Q;Dtc{kb<#YSYGCTdOGt!I!zIfwS5Ft<`En~SX{@ZL_yLM;7O$#gKOSt&=*ylGnUYJFP+C3>J&P0S2Kwf6YPNK@)w8EFzhBFucS z*pMLT(dB(0KMD1QYqv7kGmx6a;^JvkOSgyB^vp-R_K7&+4x zfhR%cs?M+jq3M&x{Dk1I{4$+VLSI{PUYGh{6AI-Kl*%JkLz)bUu0i!$TAWssYDf)= zDhp|+t5=0>`+o}f7+}@h;6)iM&oM(v2MXcF`?9>p8Wb9U?-+T%J00J8yNG+&LP3x@ znwz8*HYS+3Ab?R-Sho0V>NV>X6}gXb$yAnY0?tTN8)%wwV@KJIrBzX(4uf6E%DmAT z6@}en$d5>7e-Ly;bZl(yH|~+$UpRRN zF$dCe>LLYr&o^}Juh_NE-=rs`)C1eR0RMd|XN--w`xWpEn~(tlg8TU>b8_~uHgWns zeVfs?io;REdWr4z!{iD?Kx@g)v^($=nQb8wP;Mk=R~m zJ05oXs6E->@|<$hytzbRH};ZkzCcVc_tAiCt*rvm1Xrw9;<1wxISyF&1X-#P$@c0 ztT7j4_6$+yYUo&k=A^ecS~RJYvEj(=d7AizKsem1n+T-`kR5`mVrIyvht%uSC1+R+ zwJ3vYeNrr5$nWC1TVq~YDW9f$o9wQS+_m3->BIiMj+S*bfTo3KV2soCF#wbTo3Gu& z6P6?y2x5V9mAJ|7^GewBZmGd$b4QvW>Vqz%hr>J~k2a?I06w(Z|b6~ZWvr+7JrA?3D!`r3rGk~%OeW-?3dCF%TY6{%IE z#m8!6G}#SiXRQf}W2}l$Kj6lQv#Y0ilrQXNBoB#`mF<$8aW5$fW!j0OLA@N{$3eM)`jloT+;U%O=Ew17Iim+n%IU*IHRUQak^ceYc|j?LhZo% zxQ5#2lbV)GT+%!<-rY#?Es8j{)gh94izZAZxNb$CuXr1(uS`QXwQRaqTks3BnQc8< zfJ$$)DQ|gz_ZUPZMLJ`JO~^AmEtZ9IT`>fUl%s{)fLjZb=*%sA+=Lk}egS3=C%l*a z#Cb-T!Nk?Zr!+~@92QaoaA@?*!;tKya|pgqv?`Y9!8 z(F+Ja=|>0lG8>8_lnjA3i5a1iqDLtpsxyiU8BSsbgbS0XnyO?aprK_ucMFZUm1KS` zV@-$Bshxb~K!rV~oo>;%7deXHv{o*bK^MY(D-cWamH z`OrgOw$4tyL7`*dgL4C%Yobzn5(~c}M8-$Dlab{gl@K3;(HDUVd#hAfyL(>ccj)h0 zo|zQ@>{}o9h~ewIatj}nO#|J!fMC>sx1|Ha&4~chw~bz#PIR+q&ejBnOs~<&cOchD z-5Z8JY2ghalh6wkQ6_+SrD?m?g@e_ogvCQ;+~vRHaYE+ohbdf_O5-1U)H5GWyW}3! zE8dtPEICO3hHaUJWM%;wx!9+C#$S)i@k@V;8av&=poL}#&?0UZ6(UNuGC994@s8YV z9iBqsjSkKF7@`G&dMKm*++Y`-x4j4j+xCw~I<-&*DUOV;87&t00 z5R`SQmEr)}Xlaf@LP0e7K-eN1RiXHYuo-kPk{HN)2ZeHt^<&c++I4F=X1dNaEmXKX zNVYD6Y%6;Yh*%n165%jXujG4WCCc?r4xwlmO4vl8;a_{C?5P`+*z%~hXC+XIG})d) z_)WxJ-_btC)}FwLi*Pw8q=`uGfOWpx*wC$yTLRgF!;8|&p%7emBcubOLWwc*pqzoPETvpoiUrO>ILkG&2O zH$c+U?KZn%yQ;QrWAuJ-e!8>yC}IW2ORzekk4*vI|IL@z`(cFOK;X5pyviOkTCISE zV*hkUk&Q(U13$sHt&{y*vmOcr2L5~Vr?2Cz?=5;gShY8#XfOKhs^J2fxqV;s-A@&W zf%5~wl59eBHm!&QOzW2+d}Z~&Ol~~4Fl4U~0A7mv!U$dw$?bgoe%~hr z$(>CvNpbgVhad;ExuC-@zA*|Cd>M6hjw@!^Z0nMN0YAIr>FoGCNhO_IN?qdH!`HqA zuhBvoyo)H1M0O=65U1ekv%^fxk41%j`&%_pZ(ee{DwHLQkv-4kRqAYc#g z7j!TQrSk)21|sxgqr9a8d#(~Te!5fgH+9}S59Uf2CnJk9x0eSpw`aD|hm$mjhi1Y& z_m4sWGF5}lo3>_La;NW_>3ovN3tik*k=TVlI#zg9v}pReFHW$@X8t)}KIp^T!XA`z zu?+s1E}7%YUg{n~dbkXpJ7Yc~mXD{|Rf$B;V+YP^3(vzH3^`2=B(CaUv8n}Pv5Kat z@@owYRFiB9tzxv+(+_7s%Emmy9B zMMCROr3(vD<7>x^zL}RPl~0U>R3mXhcNL+UrtCJb7JDq|Jr6*hQ2yRXO+E7L^u@@` zU{+nStUMAtjn%|rp?#7K1sm>1aZ{_;>D$xx0JaLUEMtB<|2&`NVA(16AbOl7&<<|f z2ClQM%%c&{00KXP4h&${Vz;(~6?miaeBJc{yIePB$%fE%;m-D0#EBHSe+s6Xc=n>09go6S44E&=WOmgn9|KY4)>?q!+IL8Fm;$e(ieTB$ntB+ej2&DKUbrFUf=jCrk^$ zx@!epZ1Gx3ph7q}bog4+e?mXlWh^*_@>Z)lpV?ImZ?Kw}S}^EJ>@vbu@MMbB--1mS zZU{f|Om&d76>YTyuD+YV91~?d5po5=@5s>Kmin4_qr2DN1OzRdF+9)!F<4XxWk!(t z;G7?AIj@asx?fT$Kc+%mn=JqwtzM*Y{96x?)5#>knZ3*nj5Vf04tmH{cPhV~14*a043R;r6E2R#wp-y55a(d2<$+Uf(%!@lf0Vcm}+GQ-OmyNvNeKy>fFGF@O7cl7sM{V$ zK25e;jT~4bybM?l7FgshO077f^-LJP&*&P|-PmAdxj%f@sgSjrIrYXzRCAA*R%%5ciKIv^0)q~wq!A{@Lqu9cKp+xg1#*Le&IOJ8 zTUb(GW{C-@R6HUdNQQ>rA3QAMBmTOm*_`NfeRQ zx&*H7ScpGx>(bB7+D`5Ok4=afA&!0P^S^g$^$k=-I7hG9-yAclb(C+TZ3?lG`{Ni!A%&mlcy5aD^(2gS^>G*7OxvS<~)OYbCqQBFoZj zsk~2g!g;#OH-!1Q$Eg<84|LuM6V9wUXRIEkch5QBE)%+jO@LnBg5UObQ*?) z1tGy4h-)AbJ3K{;u6t4RQj$su+@u$`M`a>L2CwSYG9@J5Z3Ks$Em|$Y*N3XSwL%VT zU4#=yaq-Ftqcm8?7=qdT+Sw=9Fa=tAaYALXB`Bhm>579b%{x|qz`fw?z@gRv+m}z5 ztDO~&kv-M$c$rh9S2J?u%<*`|l&RZAdvQ|{*avZU%yJiB=1Zc+GIXDMdB1Rfx`IH) z?)SVxh!;frfprLXo<~Dacg%# zzm)d-2e)^4K}XYr!^e2r)k5@h-%m)N=#rNV`%UdCD~lIerkq`q+8+!?3(OeXH0y(+ zto>5t5a4owTa--#2=$7H5su;{gzaSWpD61KXDoTdmdY~;T-2TcQe<#jazV52z8l?V_O4V6aoe923^|~&b-~#R{|x=+h#yL zlv**2An$_t4#aCQ2neom zM;HE)Q#Yxw@(NQrI5F*zG^NPp9qkSW+VlZ!If6*C+_8JXsj0p0uD6p~wIh<;!DRVg zzmYNz^lqnk@U!VjI$qF~x&1!_9{*&{galJ`Y5*u}0dYa>pP>B7_E%{Bux{Iov{f)8 zBG9^5-Z!Fc-GURZg~n9Hd8?LZV4(rXvIyfZVc*(=YFD78J>O~vzqa3X3Qq4iud!O- zQMZmx;f*l-EVx%}?o4+7_5Q$M1dF=}W(FHB0m1(%ZDkEFJ5ME6x4Ze^tpa*X!rbR; zFCxauJSEI@eAbnue%E0IbDGJrr+jKe3*5?(=gc6p#H=G_N!vGlu{D-k5?8BMo(%0Z20`A4Z4 zO?P@|L5))QM~N9tH+l*Km`V{6M;EcnlS4N9G%^Y#bME=9$p>`D%G-oEYFQg9qnU1I z-|Rkd#Lfb1kHqC+=0so!jZp44${I3I)b2u(khicug8bd>*~4iL#R4om3s|!IUdO8? zVrT1YV(YA@>|t->r1RbNjis!~bu*%doyvNL6*YvS$s@r9!F5i$hz@nika4yB}WHO%5X{U4YCNF+Z?hG-(3tnU^dX z6B(jG`RlepGSd~`9@2)$sl^hX-s&Ur1m{vnfUM`D5#hZT7q{@@jpMj`oQU$ryyNPDO z*q$0+`2?>%*EVUcoll4fy{9K8j;)Qw<=jt9k#}Z4j4#WAPk~Hnlrs5Bcu-3<7dwTx z>mJNE3!%EmK_0(7T|rkTgHyz=`eO85s0or2vG-fY=n&BB6TG&!>glnw0rHrjceHQ~ z)f|<>?NxjDzUkcy;E@v~#%~DF&Ndf6@cI+)zB(IeJSbtB8ve9mF*V&IL;3*b>mVvw z@`i1uWfgtsktT4&lXaZ;ZAWCS)uw|EN?c}!`|@mWff7nwONP5M;Ja^Y_^o#|U;O}2 zEnpDTA9LuRyBYl2fq*^)0tO-k{ACsR$L{>8;NQEo?+SiyjG)K+r<418qrbYj?-D;7 z4f;do2Q2@$#=ZwSe;(g=VfcRhWy6NQxA*Io4d0o6wny<-vH!b)!>=a#b&G&MrN2M$ z|7i4I8wUI;{%fiGpW@blxx$~~e-ys|Z#VtD`1|Ma{iZVkuS9@Xq5nm`D=_}|d;c{w{%4CDe--;PQ2y&B|2qHsQvo0Mk9PlRw*T#-zgO@7JihmE>(3tk zF8oI=|KG3t*J}RnvOjxm|9{B-S=;~X<^P&N^QV?(qCYPG|6ajQEkE*UepT~pCHJ3d zJOGbiz)=0mjr>saqptfu*D?z5JO7~NM=9%nu7v<#1HS$rv_}FW~G_@cV!N2U>z4@&Et; literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/setting/style/kbdTable.qss b/resource/fr/model_studio/setting/style/kbdTable.qss new file mode 100644 index 00000000..99f5fed7 --- /dev/null +++ b/resource/fr/model_studio/setting/style/kbdTable.qss @@ -0,0 +1,3 @@ +QTableView { + border: 1px solid black; + } \ No newline at end of file diff --git a/resource/fr/model_studio/setting/style/psc3000Temp.xlsx b/resource/fr/model_studio/setting/style/psc3000Temp.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..2499b4b7ab8a303a66888f871f35b6a56c87ad80 GIT binary patch literal 12913 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 F{|{wb=5PQ2 literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/setting/style/scrollBar.qss b/resource/fr/model_studio/setting/style/scrollBar.qss new file mode 100644 index 00000000..d871f2e5 --- /dev/null +++ b/resource/fr/model_studio/setting/style/scrollBar.qss @@ -0,0 +1,71 @@ +QScrollBar:vertical { + border: 1px solid grey; + background: gray; + width: 15px; + margin: 22px 0 22px 0; +} +QScrollBar::handle:vertical { + background: #F0F1EF; + min-height: 20px; +} +QScrollBar::add-line:vertical { + border: 1px solid grey; + background: #F0F1EF; + height: 20px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical { + border: 1px solid grey; + background: #F0F1EF; + height: 20px; + subcontrol-position: top; + subcontrol-origin: margin; +} +QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical { + border: 1px solid grey; + width: 3px; + height: 3px; + background: white; +} + +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { + background: none; +} + +QScrollBar:horizontal { + border: 1px solid grey; + background: gray; + height: 15px; + margin: 0px 22px 0 22px; +} +QScrollBar::handle:horizontal { + background: #F0F1EF; + min-width: 20px; +} +QScrollBar::add-line:horizontal { + border: 1px solid grey; + background: #F0F1EF; + width: 20px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal { + border: 1px solid grey; + background: #F0F1EF; + width: 20px; + subcontrol-position: left; + subcontrol-origin: margin; +} +QScrollBar::left-arrow:horizontal, QScrollBar::right-arrow:horizontal { + border: 1px solid grey; + width: 3px; + height: 3px; + background: white; +} + +QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { + background: none; +} diff --git a/resource/fr/model_studio/setting/style/toolBar.qss b/resource/fr/model_studio/setting/style/toolBar.qss new file mode 100644 index 00000000..a784ad82 --- /dev/null +++ b/resource/fr/model_studio/setting/style/toolBar.qss @@ -0,0 +1,3 @@ +QToolBar { + spacing: 6px; /* spacing between items in the tool bar */ + } \ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/ACCUML.xml b/resource/fr/model_studio/setting/table/ACCUML.xml new file mode 100644 index 00000000..f22f65cd --- /dev/null +++ b/resource/fr/model_studio/setting/table/ACCUML.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ACCUML_LIMIT_INFO.xml b/resource/fr/model_studio/setting/table/ACCUML_LIMIT_INFO.xml new file mode 100644 index 00000000..c7ff62fd --- /dev/null +++ b/resource/fr/model_studio/setting/table/ACCUML_LIMIT_INFO.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ACCUML_MAP_TO_FES.xml b/resource/fr/model_studio/setting/table/ACCUML_MAP_TO_FES.xml new file mode 100644 index 00000000..7e233d6e --- /dev/null +++ b/resource/fr/model_studio/setting/table/ACCUML_MAP_TO_FES.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ACCUML_TEMP_DEFINE.xml b/resource/fr/model_studio/setting/table/ACCUML_TEMP_DEFINE.xml new file mode 100644 index 00000000..0317a085 --- /dev/null +++ b/resource/fr/model_studio/setting/table/ACCUML_TEMP_DEFINE.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ACS_DEVICE_INFO.xml b/resource/fr/model_studio/setting/table/ACS_DEVICE_INFO.xml new file mode 100644 index 00000000..5d31d4d5 --- /dev/null +++ b/resource/fr/model_studio/setting/table/ACS_DEVICE_INFO.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/ADD_POINT_FROM_FES_TEMP.xml b/resource/fr/model_studio/setting/table/ADD_POINT_FROM_FES_TEMP.xml new file mode 100644 index 00000000..a44c8b49 --- /dev/null +++ b/resource/fr/model_studio/setting/table/ADD_POINT_FROM_FES_TEMP.xml @@ -0,0 +1,8 @@ + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/ALARM_ACTION_DEFINE.xml b/resource/fr/model_studio/setting/table/ALARM_ACTION_DEFINE.xml new file mode 100644 index 00000000..c152bbd8 --- /dev/null +++ b/resource/fr/model_studio/setting/table/ALARM_ACTION_DEFINE.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ALARM_KEYWORD_DEFINE.xml b/resource/fr/model_studio/setting/table/ALARM_KEYWORD_DEFINE.xml new file mode 100644 index 00000000..0b6eaafe --- /dev/null +++ b/resource/fr/model_studio/setting/table/ALARM_KEYWORD_DEFINE.xml @@ -0,0 +1,8 @@ + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/ALARM_LEVEL_DEFINE.xml b/resource/fr/model_studio/setting/table/ALARM_LEVEL_DEFINE.xml new file mode 100644 index 00000000..e8f1833f --- /dev/null +++ b/resource/fr/model_studio/setting/table/ALARM_LEVEL_DEFINE.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ALARM_LEVEL_SOUND_DEF.xml b/resource/fr/model_studio/setting/table/ALARM_LEVEL_SOUND_DEF.xml new file mode 100644 index 00000000..cb418e12 --- /dev/null +++ b/resource/fr/model_studio/setting/table/ALARM_LEVEL_SOUND_DEF.xml @@ -0,0 +1,8 @@ + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/ALARM_MANNER_DEFINE.xml b/resource/fr/model_studio/setting/table/ALARM_MANNER_DEFINE.xml new file mode 100644 index 00000000..00726b06 --- /dev/null +++ b/resource/fr/model_studio/setting/table/ALARM_MANNER_DEFINE.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ALARM_SMS_CONFIG.xml b/resource/fr/model_studio/setting/table/ALARM_SMS_CONFIG.xml new file mode 100644 index 00000000..cb69b1a9 --- /dev/null +++ b/resource/fr/model_studio/setting/table/ALARM_SMS_CONFIG.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ALARM_SMS_DEVICE.xml b/resource/fr/model_studio/setting/table/ALARM_SMS_DEVICE.xml new file mode 100644 index 00000000..c2bcfa81 --- /dev/null +++ b/resource/fr/model_studio/setting/table/ALARM_SMS_DEVICE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ALARM_SMS_RULE.xml b/resource/fr/model_studio/setting/table/ALARM_SMS_RULE.xml new file mode 100644 index 00000000..7908ed1c --- /dev/null +++ b/resource/fr/model_studio/setting/table/ALARM_SMS_RULE.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ALARM_STATUS_DEFINE.xml b/resource/fr/model_studio/setting/table/ALARM_STATUS_DEFINE.xml new file mode 100644 index 00000000..587838e1 --- /dev/null +++ b/resource/fr/model_studio/setting/table/ALARM_STATUS_DEFINE.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ALARM_STATUS_DIG_SET.xml b/resource/fr/model_studio/setting/table/ALARM_STATUS_DIG_SET.xml new file mode 100644 index 00000000..cca96ed0 --- /dev/null +++ b/resource/fr/model_studio/setting/table/ALARM_STATUS_DIG_SET.xml @@ -0,0 +1,9 @@ + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/ALARM_TYPE_DEFINE.xml b/resource/fr/model_studio/setting/table/ALARM_TYPE_DEFINE.xml new file mode 100644 index 00000000..b5543871 --- /dev/null +++ b/resource/fr/model_studio/setting/table/ALARM_TYPE_DEFINE.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ANALOG.xml b/resource/fr/model_studio/setting/table/ANALOG.xml new file mode 100644 index 00000000..19a33e10 --- /dev/null +++ b/resource/fr/model_studio/setting/table/ANALOG.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ANALOG_CONTROL.xml b/resource/fr/model_studio/setting/table/ANALOG_CONTROL.xml new file mode 100644 index 00000000..c79d2ce5 --- /dev/null +++ b/resource/fr/model_studio/setting/table/ANALOG_CONTROL.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ANALOG_LIMIT_INFO.xml b/resource/fr/model_studio/setting/table/ANALOG_LIMIT_INFO.xml new file mode 100644 index 00000000..ba6f8098 --- /dev/null +++ b/resource/fr/model_studio/setting/table/ANALOG_LIMIT_INFO.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/ANALOG_MAP_TO_FES.xml b/resource/fr/model_studio/setting/table/ANALOG_MAP_TO_FES.xml new file mode 100644 index 00000000..39cfbf4e --- /dev/null +++ b/resource/fr/model_studio/setting/table/ANALOG_MAP_TO_FES.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ANALOG_OVER_STATISTICS.xml b/resource/fr/model_studio/setting/table/ANALOG_OVER_STATISTICS.xml new file mode 100644 index 00000000..d6f654b3 --- /dev/null +++ b/resource/fr/model_studio/setting/table/ANALOG_OVER_STATISTICS.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ANALOG_TEMP_DEFINE.xml b/resource/fr/model_studio/setting/table/ANALOG_TEMP_DEFINE.xml new file mode 100644 index 00000000..87dcb66c --- /dev/null +++ b/resource/fr/model_studio/setting/table/ANALOG_TEMP_DEFINE.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/APC_ANALOG.xml b/resource/fr/model_studio/setting/table/APC_ANALOG.xml new file mode 100644 index 00000000..baeb67fb --- /dev/null +++ b/resource/fr/model_studio/setting/table/APC_ANALOG.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/APC_DIGITAL.xml b/resource/fr/model_studio/setting/table/APC_DIGITAL.xml new file mode 100644 index 00000000..0e9fc0cd --- /dev/null +++ b/resource/fr/model_studio/setting/table/APC_DIGITAL.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ATS_FES_LOCATION_INFO.xml b/resource/fr/model_studio/setting/table/ATS_FES_LOCATION_INFO.xml new file mode 100644 index 00000000..da497914 --- /dev/null +++ b/resource/fr/model_studio/setting/table/ATS_FES_LOCATION_INFO.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/ATS_FES_PLATFORM_INFO.xml b/resource/fr/model_studio/setting/table/ATS_FES_PLATFORM_INFO.xml new file mode 100644 index 00000000..076ff2e1 --- /dev/null +++ b/resource/fr/model_studio/setting/table/ATS_FES_PLATFORM_INFO.xml @@ -0,0 +1,8 @@ + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/BACKGROUND_X_FES_ACCUML.xml b/resource/fr/model_studio/setting/table/BACKGROUND_X_FES_ACCUML.xml new file mode 100644 index 00000000..b253bf7f --- /dev/null +++ b/resource/fr/model_studio/setting/table/BACKGROUND_X_FES_ACCUML.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/BACKGROUND_X_FES_ANALOG.xml b/resource/fr/model_studio/setting/table/BACKGROUND_X_FES_ANALOG.xml new file mode 100644 index 00000000..534e20d2 --- /dev/null +++ b/resource/fr/model_studio/setting/table/BACKGROUND_X_FES_ANALOG.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/BACKGROUND_X_FES_DIGTAL.xml b/resource/fr/model_studio/setting/table/BACKGROUND_X_FES_DIGTAL.xml new file mode 100644 index 00000000..e5fea40e --- /dev/null +++ b/resource/fr/model_studio/setting/table/BACKGROUND_X_FES_DIGTAL.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/BAS_CRAFT_DEF.xml b/resource/fr/model_studio/setting/table/BAS_CRAFT_DEF.xml new file mode 100644 index 00000000..81835947 --- /dev/null +++ b/resource/fr/model_studio/setting/table/BAS_CRAFT_DEF.xml @@ -0,0 +1,8 @@ + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/BAS_MODE_DEF.xml b/resource/fr/model_studio/setting/table/BAS_MODE_DEF.xml new file mode 100644 index 00000000..a2d9fab0 --- /dev/null +++ b/resource/fr/model_studio/setting/table/BAS_MODE_DEF.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/BAS_MODE_TYPE.xml b/resource/fr/model_studio/setting/table/BAS_MODE_TYPE.xml new file mode 100644 index 00000000..8fe188b6 --- /dev/null +++ b/resource/fr/model_studio/setting/table/BAS_MODE_TYPE.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/BAS_TIMETABLE_CTRL_PARAM.xml b/resource/fr/model_studio/setting/table/BAS_TIMETABLE_CTRL_PARAM.xml new file mode 100644 index 00000000..6570416c --- /dev/null +++ b/resource/fr/model_studio/setting/table/BAS_TIMETABLE_CTRL_PARAM.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/BAS_TIMETABLE_DEF.xml b/resource/fr/model_studio/setting/table/BAS_TIMETABLE_DEF.xml new file mode 100644 index 00000000..cff317ed --- /dev/null +++ b/resource/fr/model_studio/setting/table/BAS_TIMETABLE_DEF.xml @@ -0,0 +1,9 @@ + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/BAS_TIMETABLE_INFO.xml b/resource/fr/model_studio/setting/table/BAS_TIMETABLE_INFO.xml new file mode 100644 index 00000000..56436957 --- /dev/null +++ b/resource/fr/model_studio/setting/table/BAS_TIMETABLE_INFO.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/BAS_TIMETABLE_SCHEDULE.xml b/resource/fr/model_studio/setting/table/BAS_TIMETABLE_SCHEDULE.xml new file mode 100644 index 00000000..397e2681 --- /dev/null +++ b/resource/fr/model_studio/setting/table/BAS_TIMETABLE_SCHEDULE.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/CALC_FUNC_DEF.xml b/resource/fr/model_studio/setting/table/CALC_FUNC_DEF.xml new file mode 100644 index 00000000..e14b3bf9 --- /dev/null +++ b/resource/fr/model_studio/setting/table/CALC_FUNC_DEF.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/CALC_GROUP_DEF.xml b/resource/fr/model_studio/setting/table/CALC_GROUP_DEF.xml new file mode 100644 index 00000000..850411e1 --- /dev/null +++ b/resource/fr/model_studio/setting/table/CALC_GROUP_DEF.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/CALC_IN_PARA.xml b/resource/fr/model_studio/setting/table/CALC_IN_PARA.xml new file mode 100644 index 00000000..239197b0 --- /dev/null +++ b/resource/fr/model_studio/setting/table/CALC_IN_PARA.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/CALC_OUT_PARA.xml b/resource/fr/model_studio/setting/table/CALC_OUT_PARA.xml new file mode 100644 index 00000000..b2e2d5d8 --- /dev/null +++ b/resource/fr/model_studio/setting/table/CALC_OUT_PARA.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/CALC_PARA_DEF.xml b/resource/fr/model_studio/setting/table/CALC_PARA_DEF.xml new file mode 100644 index 00000000..5f27fe17 --- /dev/null +++ b/resource/fr/model_studio/setting/table/CALC_PARA_DEF.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/CCTV_CAMERA_INFO.xml b/resource/fr/model_studio/setting/table/CCTV_CAMERA_INFO.xml new file mode 100644 index 00000000..806a1d27 --- /dev/null +++ b/resource/fr/model_studio/setting/table/CCTV_CAMERA_INFO.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/CCTV_MONITOR_INFO.xml b/resource/fr/model_studio/setting/table/CCTV_MONITOR_INFO.xml new file mode 100644 index 00000000..1a56a1f4 --- /dev/null +++ b/resource/fr/model_studio/setting/table/CCTV_MONITOR_INFO.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/CCTV_ORIENTATION.xml b/resource/fr/model_studio/setting/table/CCTV_ORIENTATION.xml new file mode 100644 index 00000000..d3d5438b --- /dev/null +++ b/resource/fr/model_studio/setting/table/CCTV_ORIENTATION.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/CCTV_SEPARATOR_INFO.xml b/resource/fr/model_studio/setting/table/CCTV_SEPARATOR_INFO.xml new file mode 100644 index 00000000..99e1db26 --- /dev/null +++ b/resource/fr/model_studio/setting/table/CCTV_SEPARATOR_INFO.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DEV_GROUP.xml b/resource/fr/model_studio/setting/table/DEV_GROUP.xml new file mode 100644 index 00000000..480a8a9e --- /dev/null +++ b/resource/fr/model_studio/setting/table/DEV_GROUP.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DEV_INFO.xml b/resource/fr/model_studio/setting/table/DEV_INFO.xml new file mode 100644 index 00000000..6a05ae62 --- /dev/null +++ b/resource/fr/model_studio/setting/table/DEV_INFO.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DEV_INFO_FOR_EMPTY_ADD.xml b/resource/fr/model_studio/setting/table/DEV_INFO_FOR_EMPTY_ADD.xml new file mode 100644 index 00000000..5a9f5b45 --- /dev/null +++ b/resource/fr/model_studio/setting/table/DEV_INFO_FOR_EMPTY_ADD.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DEV_TEMP_DEF.xml b/resource/fr/model_studio/setting/table/DEV_TEMP_DEF.xml new file mode 100644 index 00000000..d0a4fc83 --- /dev/null +++ b/resource/fr/model_studio/setting/table/DEV_TEMP_DEF.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/DEV_TEMP_GROUP.xml b/resource/fr/model_studio/setting/table/DEV_TEMP_GROUP.xml new file mode 100644 index 00000000..b6569435 --- /dev/null +++ b/resource/fr/model_studio/setting/table/DEV_TEMP_GROUP.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DEV_TRIGGER_FLAG.xml b/resource/fr/model_studio/setting/table/DEV_TRIGGER_FLAG.xml new file mode 100644 index 00000000..e68d3dc4 --- /dev/null +++ b/resource/fr/model_studio/setting/table/DEV_TRIGGER_FLAG.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DEV_TYPE_DEF.xml b/resource/fr/model_studio/setting/table/DEV_TYPE_DEF.xml new file mode 100644 index 00000000..3733eb37 --- /dev/null +++ b/resource/fr/model_studio/setting/table/DEV_TYPE_DEF.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DEV_TYPE_DEF_61850.xml b/resource/fr/model_studio/setting/table/DEV_TYPE_DEF_61850.xml new file mode 100644 index 00000000..67da67e6 --- /dev/null +++ b/resource/fr/model_studio/setting/table/DEV_TYPE_DEF_61850.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DICT_MENU_INFO_PNT_CLASS.xml b/resource/fr/model_studio/setting/table/DICT_MENU_INFO_PNT_CLASS.xml new file mode 100644 index 00000000..9a797f0f --- /dev/null +++ b/resource/fr/model_studio/setting/table/DICT_MENU_INFO_PNT_CLASS.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DICT_POINT_TYPE.xml b/resource/fr/model_studio/setting/table/DICT_POINT_TYPE.xml new file mode 100644 index 00000000..bcbaa8a0 --- /dev/null +++ b/resource/fr/model_studio/setting/table/DICT_POINT_TYPE.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DICT_POINT_TYPE_FOR_POINT_ADD.xml b/resource/fr/model_studio/setting/table/DICT_POINT_TYPE_FOR_POINT_ADD.xml new file mode 100644 index 00000000..200de52c --- /dev/null +++ b/resource/fr/model_studio/setting/table/DICT_POINT_TYPE_FOR_POINT_ADD.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DICT_STATE_TEXT_INFO.xml b/resource/fr/model_studio/setting/table/DICT_STATE_TEXT_INFO.xml new file mode 100644 index 00000000..eb3bfb50 --- /dev/null +++ b/resource/fr/model_studio/setting/table/DICT_STATE_TEXT_INFO.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DICT_TEXT_DEFINE.xml b/resource/fr/model_studio/setting/table/DICT_TEXT_DEFINE.xml new file mode 100644 index 00000000..424a065e --- /dev/null +++ b/resource/fr/model_studio/setting/table/DICT_TEXT_DEFINE.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DICT_UNIT_INFO.xml b/resource/fr/model_studio/setting/table/DICT_UNIT_INFO.xml new file mode 100644 index 00000000..2de81354 --- /dev/null +++ b/resource/fr/model_studio/setting/table/DICT_UNIT_INFO.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DICT_VOL_LEVEL.xml b/resource/fr/model_studio/setting/table/DICT_VOL_LEVEL.xml new file mode 100644 index 00000000..c8237339 --- /dev/null +++ b/resource/fr/model_studio/setting/table/DICT_VOL_LEVEL.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DIGITAL.xml b/resource/fr/model_studio/setting/table/DIGITAL.xml new file mode 100644 index 00000000..41cc99cd --- /dev/null +++ b/resource/fr/model_studio/setting/table/DIGITAL.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DIGITAL_CONTROL.xml b/resource/fr/model_studio/setting/table/DIGITAL_CONTROL.xml new file mode 100644 index 00000000..ff9d7b70 --- /dev/null +++ b/resource/fr/model_studio/setting/table/DIGITAL_CONTROL.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DIGITAL_MAP_TO_FES.xml b/resource/fr/model_studio/setting/table/DIGITAL_MAP_TO_FES.xml new file mode 100644 index 00000000..460b50eb --- /dev/null +++ b/resource/fr/model_studio/setting/table/DIGITAL_MAP_TO_FES.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/DIGITAL_TEMP_DEFINE.xml b/resource/fr/model_studio/setting/table/DIGITAL_TEMP_DEFINE.xml new file mode 100644 index 00000000..d0d95f5d --- /dev/null +++ b/resource/fr/model_studio/setting/table/DIGITAL_TEMP_DEFINE.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FAULT_RECALL_COND_DEF.xml b/resource/fr/model_studio/setting/table/FAULT_RECALL_COND_DEF.xml new file mode 100644 index 00000000..872b084e --- /dev/null +++ b/resource/fr/model_studio/setting/table/FAULT_RECALL_COND_DEF.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FBD_GROUP_INFO.xml b/resource/fr/model_studio/setting/table/FBD_GROUP_INFO.xml new file mode 100644 index 00000000..567ff3f4 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FBD_GROUP_INFO.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_ACCUML.xml b/resource/fr/model_studio/setting/table/FES_ACCUML.xml new file mode 100644 index 00000000..101d2a02 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_ACCUML.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_ANALOG.xml b/resource/fr/model_studio/setting/table/FES_ANALOG.xml new file mode 100644 index 00000000..cc0ee44c --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_ANALOG.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_ANALOG_CTRL.xml b/resource/fr/model_studio/setting/table/FES_ANALOG_CTRL.xml new file mode 100644 index 00000000..eb9213c3 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_ANALOG_CTRL.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_CHANNEL_PARA.xml b/resource/fr/model_studio/setting/table/FES_CHANNEL_PARA.xml new file mode 100644 index 00000000..c91a730c --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_CHANNEL_PARA.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_CONST.xml b/resource/fr/model_studio/setting/table/FES_CONST.xml new file mode 100644 index 00000000..1073ac09 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_CONST.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_CONST_TEMP.xml b/resource/fr/model_studio/setting/table/FES_CONST_TEMP.xml new file mode 100644 index 00000000..6bd658ba --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_CONST_TEMP.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DATA_BLOCK.xml b/resource/fr/model_studio/setting/table/FES_DATA_BLOCK.xml new file mode 100644 index 00000000..111e3713 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DATA_BLOCK.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DATA_BLOCK_TEMP.xml b/resource/fr/model_studio/setting/table/FES_DATA_BLOCK_TEMP.xml new file mode 100644 index 00000000..d4ed5581 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DATA_BLOCK_TEMP.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DEV_ACCUNL_TEMP_DEF.xml b/resource/fr/model_studio/setting/table/FES_DEV_ACCUNL_TEMP_DEF.xml new file mode 100644 index 00000000..2f9ab791 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DEV_ACCUNL_TEMP_DEF.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DEV_ANALOG_CTRL_TEMP_DEF.xml b/resource/fr/model_studio/setting/table/FES_DEV_ANALOG_CTRL_TEMP_DEF.xml new file mode 100644 index 00000000..f0e5bcd7 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DEV_ANALOG_CTRL_TEMP_DEF.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DEV_ANALOG_TEMP_DEF.xml b/resource/fr/model_studio/setting/table/FES_DEV_ANALOG_TEMP_DEF.xml new file mode 100644 index 00000000..85f0ec39 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DEV_ANALOG_TEMP_DEF.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DEV_DIGITAL_CTRL_TEMP_DEF.xml b/resource/fr/model_studio/setting/table/FES_DEV_DIGITAL_CTRL_TEMP_DEF.xml new file mode 100644 index 00000000..fb547dca --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DEV_DIGITAL_CTRL_TEMP_DEF.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DEV_DIGITAL_TEMP_DEF.xml b/resource/fr/model_studio/setting/table/FES_DEV_DIGITAL_TEMP_DEF.xml new file mode 100644 index 00000000..991c20f8 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DEV_DIGITAL_TEMP_DEF.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DEV_INFO.xml b/resource/fr/model_studio/setting/table/FES_DEV_INFO.xml new file mode 100644 index 00000000..c47e9e20 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DEV_INFO.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DEV_INFO_FOR_ADD.xml b/resource/fr/model_studio/setting/table/FES_DEV_INFO_FOR_ADD.xml new file mode 100644 index 00000000..0347651a --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DEV_INFO_FOR_ADD.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/FES_DEV_INFO_FOR_EMPTY_TEMP.xml b/resource/fr/model_studio/setting/table/FES_DEV_INFO_FOR_EMPTY_TEMP.xml new file mode 100644 index 00000000..4e384aff --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DEV_INFO_FOR_EMPTY_TEMP.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DEV_MIX_CTRL_TEMP_DEF.xml b/resource/fr/model_studio/setting/table/FES_DEV_MIX_CTRL_TEMP_DEF.xml new file mode 100644 index 00000000..59c6d179 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DEV_MIX_CTRL_TEMP_DEF.xml @@ -0,0 +1,49 @@ + + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DEV_MIX_TEMP_DEF.xml b/resource/fr/model_studio/setting/table/FES_DEV_MIX_TEMP_DEF.xml new file mode 100644 index 00000000..de2c3e45 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DEV_MIX_TEMP_DEF.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DEV_PT_TEMP_DEF.xml b/resource/fr/model_studio/setting/table/FES_DEV_PT_TEMP_DEF.xml new file mode 100644 index 00000000..3a639ce7 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DEV_PT_TEMP_DEF.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DEV_TEMP_DEF.xml b/resource/fr/model_studio/setting/table/FES_DEV_TEMP_DEF.xml new file mode 100644 index 00000000..b5328d32 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DEV_TEMP_DEF.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_ADD.xml b/resource/fr/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_ADD.xml new file mode 100644 index 00000000..6cc0a907 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_ADD.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_IMPORT.xml b/resource/fr/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_IMPORT.xml new file mode 100644 index 00000000..503899db --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DEV_TEMP_DEF_FOR_IMPORT.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DEV_TYPE_DEF.xml b/resource/fr/model_studio/setting/table/FES_DEV_TYPE_DEF.xml new file mode 100644 index 00000000..35598eae --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DEV_TYPE_DEF.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DIGITAL.xml b/resource/fr/model_studio/setting/table/FES_DIGITAL.xml new file mode 100644 index 00000000..d6b58f30 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DIGITAL.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_DIGITAL_CTRL.xml b/resource/fr/model_studio/setting/table/FES_DIGITAL_CTRL.xml new file mode 100644 index 00000000..6b7eb73f --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_DIGITAL_CTRL.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_MIX.xml b/resource/fr/model_studio/setting/table/FES_MIX.xml new file mode 100644 index 00000000..564f3f51 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_MIX.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_MIX_CTRL.xml b/resource/fr/model_studio/setting/table/FES_MIX_CTRL.xml new file mode 100644 index 00000000..dbb9408f --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_MIX_CTRL.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_PROTOCOL.xml b/resource/fr/model_studio/setting/table/FES_PROTOCOL.xml new file mode 100644 index 00000000..fb40b0d5 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_PROTOCOL.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FES_RTU_PARA.xml b/resource/fr/model_studio/setting/table/FES_RTU_PARA.xml new file mode 100644 index 00000000..acf58ad6 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FES_RTU_PARA.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FORWARD_ACCUML.xml b/resource/fr/model_studio/setting/table/FORWARD_ACCUML.xml new file mode 100644 index 00000000..fd0d65cc --- /dev/null +++ b/resource/fr/model_studio/setting/table/FORWARD_ACCUML.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FORWARD_ANALOG.xml b/resource/fr/model_studio/setting/table/FORWARD_ANALOG.xml new file mode 100644 index 00000000..cd73906c --- /dev/null +++ b/resource/fr/model_studio/setting/table/FORWARD_ANALOG.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FORWARD_ANALOG_CTRL.xml b/resource/fr/model_studio/setting/table/FORWARD_ANALOG_CTRL.xml new file mode 100644 index 00000000..fd05f3a3 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FORWARD_ANALOG_CTRL.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FORWARD_DIGITAL_CTRL.xml b/resource/fr/model_studio/setting/table/FORWARD_DIGITAL_CTRL.xml new file mode 100644 index 00000000..e281b748 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FORWARD_DIGITAL_CTRL.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FORWARD_DIGITAL_DOUBLE.xml b/resource/fr/model_studio/setting/table/FORWARD_DIGITAL_DOUBLE.xml new file mode 100644 index 00000000..580180a3 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FORWARD_DIGITAL_DOUBLE.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FORWARD_DIGITAL_SINGLE.xml b/resource/fr/model_studio/setting/table/FORWARD_DIGITAL_SINGLE.xml new file mode 100644 index 00000000..e7fbafd0 --- /dev/null +++ b/resource/fr/model_studio/setting/table/FORWARD_DIGITAL_SINGLE.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FORWARD_MIX.xml b/resource/fr/model_studio/setting/table/FORWARD_MIX.xml new file mode 100644 index 00000000..92699f8d --- /dev/null +++ b/resource/fr/model_studio/setting/table/FORWARD_MIX.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/FORWARD_MIX_CTRL.xml b/resource/fr/model_studio/setting/table/FORWARD_MIX_CTRL.xml new file mode 100644 index 00000000..c2f5ebfa --- /dev/null +++ b/resource/fr/model_studio/setting/table/FORWARD_MIX_CTRL.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/HIS_WORK_TICKET.xml b/resource/fr/model_studio/setting/table/HIS_WORK_TICKET.xml new file mode 100644 index 00000000..7b62327d --- /dev/null +++ b/resource/fr/model_studio/setting/table/HIS_WORK_TICKET.xml @@ -0,0 +1,8 @@ + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/HMI_TYPE_INFO.xml b/resource/fr/model_studio/setting/table/HMI_TYPE_INFO.xml new file mode 100644 index 00000000..d59bf800 --- /dev/null +++ b/resource/fr/model_studio/setting/table/HMI_TYPE_INFO.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/IA_DISPOSAL_PLAN.xml b/resource/fr/model_studio/setting/table/IA_DISPOSAL_PLAN.xml new file mode 100644 index 00000000..13137880 --- /dev/null +++ b/resource/fr/model_studio/setting/table/IA_DISPOSAL_PLAN.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/INVALID_SYS_TABLE_INFO.xml b/resource/fr/model_studio/setting/table/INVALID_SYS_TABLE_INFO.xml new file mode 100644 index 00000000..777791ca --- /dev/null +++ b/resource/fr/model_studio/setting/table/INVALID_SYS_TABLE_INFO.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/LINKAGE_ACTION.xml b/resource/fr/model_studio/setting/table/LINKAGE_ACTION.xml new file mode 100644 index 00000000..a4346537 --- /dev/null +++ b/resource/fr/model_studio/setting/table/LINKAGE_ACTION.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_BAS.xml b/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_BAS.xml new file mode 100644 index 00000000..3f2ea822 --- /dev/null +++ b/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_BAS.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_MSG.xml b/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_MSG.xml new file mode 100644 index 00000000..605cab72 --- /dev/null +++ b/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_MSG.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_PA.xml b/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_PA.xml new file mode 100644 index 00000000..24f06b1d --- /dev/null +++ b/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_PA.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_PIS.xml b/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_PIS.xml new file mode 100644 index 00000000..8052228a --- /dev/null +++ b/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_PIS.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_PSCADA.xml b/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_PSCADA.xml new file mode 100644 index 00000000..8980661b --- /dev/null +++ b/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_PSCADA.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_PUSH_PIC.xml b/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_PUSH_PIC.xml new file mode 100644 index 00000000..8792f27f --- /dev/null +++ b/resource/fr/model_studio/setting/table/LINKAGE_ACTION_FOR_PUSH_PIC.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/LINKAGE_DEFINE.xml b/resource/fr/model_studio/setting/table/LINKAGE_DEFINE.xml new file mode 100644 index 00000000..9e2013bb --- /dev/null +++ b/resource/fr/model_studio/setting/table/LINKAGE_DEFINE.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/LINKAGE_FUNCTION.xml b/resource/fr/model_studio/setting/table/LINKAGE_FUNCTION.xml new file mode 100644 index 00000000..40508edb --- /dev/null +++ b/resource/fr/model_studio/setting/table/LINKAGE_FUNCTION.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/LINKAGE_FUNCTION_LIST.xml b/resource/fr/model_studio/setting/table/LINKAGE_FUNCTION_LIST.xml new file mode 100644 index 00000000..a8659d9e --- /dev/null +++ b/resource/fr/model_studio/setting/table/LINKAGE_FUNCTION_LIST.xml @@ -0,0 +1,7 @@ + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/LINKAGE_SETTING.xml b/resource/fr/model_studio/setting/table/LINKAGE_SETTING.xml new file mode 100644 index 00000000..e1decba4 --- /dev/null +++ b/resource/fr/model_studio/setting/table/LINKAGE_SETTING.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/LINKAGE_SETTING_FOR_ADD_AND_MODIFY.xml b/resource/fr/model_studio/setting/table/LINKAGE_SETTING_FOR_ADD_AND_MODIFY.xml new file mode 100644 index 00000000..be7bc210 --- /dev/null +++ b/resource/fr/model_studio/setting/table/LINKAGE_SETTING_FOR_ADD_AND_MODIFY.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/LOAD_STAT_DEFINE.xml b/resource/fr/model_studio/setting/table/LOAD_STAT_DEFINE.xml new file mode 100644 index 00000000..7eaf5bbe --- /dev/null +++ b/resource/fr/model_studio/setting/table/LOAD_STAT_DEFINE.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/MIX.xml b/resource/fr/model_studio/setting/table/MIX.xml new file mode 100644 index 00000000..7ae78c33 --- /dev/null +++ b/resource/fr/model_studio/setting/table/MIX.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/MIX_CONTROL.xml b/resource/fr/model_studio/setting/table/MIX_CONTROL.xml new file mode 100644 index 00000000..9526ca53 --- /dev/null +++ b/resource/fr/model_studio/setting/table/MIX_CONTROL.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/MIX_MAP_TO_FES.xml b/resource/fr/model_studio/setting/table/MIX_MAP_TO_FES.xml new file mode 100644 index 00000000..1a330551 --- /dev/null +++ b/resource/fr/model_studio/setting/table/MIX_MAP_TO_FES.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/MIX_METHOD.xml b/resource/fr/model_studio/setting/table/MIX_METHOD.xml new file mode 100644 index 00000000..d8684c35 --- /dev/null +++ b/resource/fr/model_studio/setting/table/MIX_METHOD.xml @@ -0,0 +1,9 @@ + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/MIX_TEMP_DEFINE.xml b/resource/fr/model_studio/setting/table/MIX_TEMP_DEFINE.xml new file mode 100644 index 00000000..7f7397a9 --- /dev/null +++ b/resource/fr/model_studio/setting/table/MIX_TEMP_DEFINE.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/OPT_CTRL_ACT_DEFINE.xml b/resource/fr/model_studio/setting/table/OPT_CTRL_ACT_DEFINE.xml new file mode 100644 index 00000000..3a281291 --- /dev/null +++ b/resource/fr/model_studio/setting/table/OPT_CTRL_ACT_DEFINE.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/OPT_HANDOVER_GRP.xml b/resource/fr/model_studio/setting/table/OPT_HANDOVER_GRP.xml new file mode 100644 index 00000000..39fdc485 --- /dev/null +++ b/resource/fr/model_studio/setting/table/OPT_HANDOVER_GRP.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/OPT_INTERLOCK_DEFINE.xml b/resource/fr/model_studio/setting/table/OPT_INTERLOCK_DEFINE.xml new file mode 100644 index 00000000..eefca3eb --- /dev/null +++ b/resource/fr/model_studio/setting/table/OPT_INTERLOCK_DEFINE.xml @@ -0,0 +1,9 @@ + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/OPT_INTERLOCK_PARA.xml b/resource/fr/model_studio/setting/table/OPT_INTERLOCK_PARA.xml new file mode 100644 index 00000000..8e5c2b7e --- /dev/null +++ b/resource/fr/model_studio/setting/table/OPT_INTERLOCK_PARA.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/OPT_INTERLOCK_PARA_FOR_SELECT.xml b/resource/fr/model_studio/setting/table/OPT_INTERLOCK_PARA_FOR_SELECT.xml new file mode 100644 index 00000000..efa4561c --- /dev/null +++ b/resource/fr/model_studio/setting/table/OPT_INTERLOCK_PARA_FOR_SELECT.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/OPT_SHIELD_DEFINE.xml b/resource/fr/model_studio/setting/table/OPT_SHIELD_DEFINE.xml new file mode 100644 index 00000000..5a6ccaa9 --- /dev/null +++ b/resource/fr/model_studio/setting/table/OPT_SHIELD_DEFINE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/OPT_TOKEN_DEFINE.xml b/resource/fr/model_studio/setting/table/OPT_TOKEN_DEFINE.xml new file mode 100644 index 00000000..89a99e47 --- /dev/null +++ b/resource/fr/model_studio/setting/table/OPT_TOKEN_DEFINE.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/PA_AREA_INFO.xml b/resource/fr/model_studio/setting/table/PA_AREA_INFO.xml new file mode 100644 index 00000000..aceec54f --- /dev/null +++ b/resource/fr/model_studio/setting/table/PA_AREA_INFO.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/PA_AUDIO_INFO.xml b/resource/fr/model_studio/setting/table/PA_AUDIO_INFO.xml new file mode 100644 index 00000000..a8ad91da --- /dev/null +++ b/resource/fr/model_studio/setting/table/PA_AUDIO_INFO.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/PA_BROADCAST_GROUP.xml b/resource/fr/model_studio/setting/table/PA_BROADCAST_GROUP.xml new file mode 100644 index 00000000..693ac25c --- /dev/null +++ b/resource/fr/model_studio/setting/table/PA_BROADCAST_GROUP.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/PA_CTRL_PARAM.xml b/resource/fr/model_studio/setting/table/PA_CTRL_PARAM.xml new file mode 100644 index 00000000..8eaeed27 --- /dev/null +++ b/resource/fr/model_studio/setting/table/PA_CTRL_PARAM.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/PA_LOCATION_AREA_DEF.xml b/resource/fr/model_studio/setting/table/PA_LOCATION_AREA_DEF.xml new file mode 100644 index 00000000..2abc17e7 --- /dev/null +++ b/resource/fr/model_studio/setting/table/PA_LOCATION_AREA_DEF.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/PA_LOCATION_SEQ_DEF.xml b/resource/fr/model_studio/setting/table/PA_LOCATION_SEQ_DEF.xml new file mode 100644 index 00000000..85799deb --- /dev/null +++ b/resource/fr/model_studio/setting/table/PA_LOCATION_SEQ_DEF.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/PA_OPERATOR_DEF.xml b/resource/fr/model_studio/setting/table/PA_OPERATOR_DEF.xml new file mode 100644 index 00000000..0a3d8d1d --- /dev/null +++ b/resource/fr/model_studio/setting/table/PA_OPERATOR_DEF.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/PA_OPERATOR_MAP.xml b/resource/fr/model_studio/setting/table/PA_OPERATOR_MAP.xml new file mode 100644 index 00000000..b934cb26 --- /dev/null +++ b/resource/fr/model_studio/setting/table/PA_OPERATOR_MAP.xml @@ -0,0 +1,7 @@ + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/PA_TIMED_AUDIO.xml b/resource/fr/model_studio/setting/table/PA_TIMED_AUDIO.xml new file mode 100644 index 00000000..dd2b9111 --- /dev/null +++ b/resource/fr/model_studio/setting/table/PA_TIMED_AUDIO.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/PIS_AREA_INFO.xml b/resource/fr/model_studio/setting/table/PIS_AREA_INFO.xml new file mode 100644 index 00000000..6be6b9a5 --- /dev/null +++ b/resource/fr/model_studio/setting/table/PIS_AREA_INFO.xml @@ -0,0 +1,7 @@ + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/PIS_CTRL_PARAM.xml b/resource/fr/model_studio/setting/table/PIS_CTRL_PARAM.xml new file mode 100644 index 00000000..fb4705af --- /dev/null +++ b/resource/fr/model_studio/setting/table/PIS_CTRL_PARAM.xml @@ -0,0 +1,7 @@ + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/PIS_DISPLAY_INFO.xml b/resource/fr/model_studio/setting/table/PIS_DISPLAY_INFO.xml new file mode 100644 index 00000000..abbd197f --- /dev/null +++ b/resource/fr/model_studio/setting/table/PIS_DISPLAY_INFO.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/PIS_FES_LOCATION_INFO.xml b/resource/fr/model_studio/setting/table/PIS_FES_LOCATION_INFO.xml new file mode 100644 index 00000000..31932e1f --- /dev/null +++ b/resource/fr/model_studio/setting/table/PIS_FES_LOCATION_INFO.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/PIS_LOCATION_AREA_DEF.xml b/resource/fr/model_studio/setting/table/PIS_LOCATION_AREA_DEF.xml new file mode 100644 index 00000000..ebfa0210 --- /dev/null +++ b/resource/fr/model_studio/setting/table/PIS_LOCATION_AREA_DEF.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/PIS_MESSAGE_INFO.xml b/resource/fr/model_studio/setting/table/PIS_MESSAGE_INFO.xml new file mode 100644 index 00000000..842c46ee --- /dev/null +++ b/resource/fr/model_studio/setting/table/PIS_MESSAGE_INFO.xml @@ -0,0 +1,9 @@ + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/PSC3000_FES_TEMP.xml b/resource/fr/model_studio/setting/table/PSC3000_FES_TEMP.xml new file mode 100644 index 00000000..21336ee5 --- /dev/null +++ b/resource/fr/model_studio/setting/table/PSC3000_FES_TEMP.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/REGION_INFO.xml b/resource/fr/model_studio/setting/table/REGION_INFO.xml new file mode 100644 index 00000000..8bf57a68 --- /dev/null +++ b/resource/fr/model_studio/setting/table/REGION_INFO.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/REPORT_TYPE_INFO.xml b/resource/fr/model_studio/setting/table/REPORT_TYPE_INFO.xml new file mode 100644 index 00000000..1910a834 --- /dev/null +++ b/resource/fr/model_studio/setting/table/REPORT_TYPE_INFO.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/RM_DEPT_DEF.xml b/resource/fr/model_studio/setting/table/RM_DEPT_DEF.xml new file mode 100644 index 00000000..3f13de5c --- /dev/null +++ b/resource/fr/model_studio/setting/table/RM_DEPT_DEF.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/RM_NORM_FUNC_DEF.xml b/resource/fr/model_studio/setting/table/RM_NORM_FUNC_DEF.xml new file mode 100644 index 00000000..19756b4b --- /dev/null +++ b/resource/fr/model_studio/setting/table/RM_NORM_FUNC_DEF.xml @@ -0,0 +1,9 @@ + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/RM_ROLE_DB_INFO.xml b/resource/fr/model_studio/setting/table/RM_ROLE_DB_INFO.xml new file mode 100644 index 00000000..f9e7b0de --- /dev/null +++ b/resource/fr/model_studio/setting/table/RM_ROLE_DB_INFO.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/RM_ROLE_DEF.xml b/resource/fr/model_studio/setting/table/RM_ROLE_DEF.xml new file mode 100644 index 00000000..b63f79e0 --- /dev/null +++ b/resource/fr/model_studio/setting/table/RM_ROLE_DEF.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/RM_ROLE_HMI_INFO.xml b/resource/fr/model_studio/setting/table/RM_ROLE_HMI_INFO.xml new file mode 100644 index 00000000..04f81104 --- /dev/null +++ b/resource/fr/model_studio/setting/table/RM_ROLE_HMI_INFO.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/RM_ROLE_SPEF_REG.xml b/resource/fr/model_studio/setting/table/RM_ROLE_SPEF_REG.xml new file mode 100644 index 00000000..6cc089a3 --- /dev/null +++ b/resource/fr/model_studio/setting/table/RM_ROLE_SPEF_REG.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/RM_SECURITY_DEF.xml b/resource/fr/model_studio/setting/table/RM_SECURITY_DEF.xml new file mode 100644 index 00000000..b2cd38bd --- /dev/null +++ b/resource/fr/model_studio/setting/table/RM_SECURITY_DEF.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/RM_SPCL_FUNC_DEF.xml b/resource/fr/model_studio/setting/table/RM_SPCL_FUNC_DEF.xml new file mode 100644 index 00000000..2199f841 --- /dev/null +++ b/resource/fr/model_studio/setting/table/RM_SPCL_FUNC_DEF.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/RM_USERG_DB_INFO.xml b/resource/fr/model_studio/setting/table/RM_USERG_DB_INFO.xml new file mode 100644 index 00000000..28d73e23 --- /dev/null +++ b/resource/fr/model_studio/setting/table/RM_USERG_DB_INFO.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/RM_USERG_DEF.xml b/resource/fr/model_studio/setting/table/RM_USERG_DEF.xml new file mode 100644 index 00000000..a7bea1ea --- /dev/null +++ b/resource/fr/model_studio/setting/table/RM_USERG_DEF.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/RM_USERG_HMI_INFO.xml b/resource/fr/model_studio/setting/table/RM_USERG_HMI_INFO.xml new file mode 100644 index 00000000..6e2c24ab --- /dev/null +++ b/resource/fr/model_studio/setting/table/RM_USERG_HMI_INFO.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/RM_USERG_RSP_INFO.xml b/resource/fr/model_studio/setting/table/RM_USERG_RSP_INFO.xml new file mode 100644 index 00000000..506823b8 --- /dev/null +++ b/resource/fr/model_studio/setting/table/RM_USERG_RSP_INFO.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/RM_USER_DEF.xml b/resource/fr/model_studio/setting/table/RM_USER_DEF.xml new file mode 100644 index 00000000..19689ec1 --- /dev/null +++ b/resource/fr/model_studio/setting/table/RM_USER_DEF.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/RT_COLUMN_MODE.xml b/resource/fr/model_studio/setting/table/RT_COLUMN_MODE.xml new file mode 100644 index 00000000..c6245a8b --- /dev/null +++ b/resource/fr/model_studio/setting/table/RT_COLUMN_MODE.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/RT_TABLE_MODE.xml b/resource/fr/model_studio/setting/table/RT_TABLE_MODE.xml new file mode 100644 index 00000000..ff6f1571 --- /dev/null +++ b/resource/fr/model_studio/setting/table/RT_TABLE_MODE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/SAFETY_DAY.xml b/resource/fr/model_studio/setting/table/SAFETY_DAY.xml new file mode 100644 index 00000000..43e61600 --- /dev/null +++ b/resource/fr/model_studio/setting/table/SAFETY_DAY.xml @@ -0,0 +1,8 @@ + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/SAMPLE_DEFINE.xml b/resource/fr/model_studio/setting/table/SAMPLE_DEFINE.xml new file mode 100644 index 00000000..869948f5 --- /dev/null +++ b/resource/fr/model_studio/setting/table/SAMPLE_DEFINE.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/SEQUENCE_ACTION.xml b/resource/fr/model_studio/setting/table/SEQUENCE_ACTION.xml new file mode 100644 index 00000000..c3290cdd --- /dev/null +++ b/resource/fr/model_studio/setting/table/SEQUENCE_ACTION.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/SEQUENCE_DEFINE.xml b/resource/fr/model_studio/setting/table/SEQUENCE_DEFINE.xml new file mode 100644 index 00000000..19015e7b --- /dev/null +++ b/resource/fr/model_studio/setting/table/SEQUENCE_DEFINE.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/SEQUENCE_FUNCTION.xml b/resource/fr/model_studio/setting/table/SEQUENCE_FUNCTION.xml new file mode 100644 index 00000000..8e614fdf --- /dev/null +++ b/resource/fr/model_studio/setting/table/SEQUENCE_FUNCTION.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/SEQUENCE_SETTING.xml b/resource/fr/model_studio/setting/table/SEQUENCE_SETTING.xml new file mode 100644 index 00000000..4d62101b --- /dev/null +++ b/resource/fr/model_studio/setting/table/SEQUENCE_SETTING.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/STAT_INST_DEF.xml b/resource/fr/model_studio/setting/table/STAT_INST_DEF.xml new file mode 100644 index 00000000..8de02dd7 --- /dev/null +++ b/resource/fr/model_studio/setting/table/STAT_INST_DEF.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/STAT_INST_PARA_GRP.xml b/resource/fr/model_studio/setting/table/STAT_INST_PARA_GRP.xml new file mode 100644 index 00000000..b88951fd --- /dev/null +++ b/resource/fr/model_studio/setting/table/STAT_INST_PARA_GRP.xml @@ -0,0 +1,12 @@ + + + + + + + + + + +
+ diff --git a/resource/fr/model_studio/setting/table/STAT_INST_PARA_POINT.xml b/resource/fr/model_studio/setting/table/STAT_INST_PARA_POINT.xml new file mode 100644 index 00000000..53f5a7ca --- /dev/null +++ b/resource/fr/model_studio/setting/table/STAT_INST_PARA_POINT.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/STAT_INST_PARA_POINT_FOR_ADD.xml b/resource/fr/model_studio/setting/table/STAT_INST_PARA_POINT_FOR_ADD.xml new file mode 100644 index 00000000..631feaf5 --- /dev/null +++ b/resource/fr/model_studio/setting/table/STAT_INST_PARA_POINT_FOR_ADD.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/STAT_INST_PARA_TIME.xml b/resource/fr/model_studio/setting/table/STAT_INST_PARA_TIME.xml new file mode 100644 index 00000000..7a8c4b2a --- /dev/null +++ b/resource/fr/model_studio/setting/table/STAT_INST_PARA_TIME.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/STAT_INST_PARA_TIME_FOR_ADD.xml b/resource/fr/model_studio/setting/table/STAT_INST_PARA_TIME_FOR_ADD.xml new file mode 100644 index 00000000..d40cf74f --- /dev/null +++ b/resource/fr/model_studio/setting/table/STAT_INST_PARA_TIME_FOR_ADD.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + +
+ diff --git a/resource/fr/model_studio/setting/table/STAT_INST_RET_GRP.xml b/resource/fr/model_studio/setting/table/STAT_INST_RET_GRP.xml new file mode 100644 index 00000000..eb55eddb --- /dev/null +++ b/resource/fr/model_studio/setting/table/STAT_INST_RET_GRP.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/STAT_INST_RET_PARA.xml b/resource/fr/model_studio/setting/table/STAT_INST_RET_PARA.xml new file mode 100644 index 00000000..9d98e9ed --- /dev/null +++ b/resource/fr/model_studio/setting/table/STAT_INST_RET_PARA.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/STAT_INST_RET_PARA_FOR_ADD.xml b/resource/fr/model_studio/setting/table/STAT_INST_RET_PARA_FOR_ADD.xml new file mode 100644 index 00000000..73b215a0 --- /dev/null +++ b/resource/fr/model_studio/setting/table/STAT_INST_RET_PARA_FOR_ADD.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/STAT_LINK_DEF.xml b/resource/fr/model_studio/setting/table/STAT_LINK_DEF.xml new file mode 100644 index 00000000..68687bf5 --- /dev/null +++ b/resource/fr/model_studio/setting/table/STAT_LINK_DEF.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/STAT_LINK_PARA.xml b/resource/fr/model_studio/setting/table/STAT_LINK_PARA.xml new file mode 100644 index 00000000..9604a491 --- /dev/null +++ b/resource/fr/model_studio/setting/table/STAT_LINK_PARA.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/STAT_LINK_RET.xml b/resource/fr/model_studio/setting/table/STAT_LINK_RET.xml new file mode 100644 index 00000000..a651ee49 --- /dev/null +++ b/resource/fr/model_studio/setting/table/STAT_LINK_RET.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/STAT_TEMPLATE_DEF.xml b/resource/fr/model_studio/setting/table/STAT_TEMPLATE_DEF.xml new file mode 100644 index 00000000..1204fc10 --- /dev/null +++ b/resource/fr/model_studio/setting/table/STAT_TEMPLATE_DEF.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/STAT_TEMPLATE_PARA.xml b/resource/fr/model_studio/setting/table/STAT_TEMPLATE_PARA.xml new file mode 100644 index 00000000..e76d8345 --- /dev/null +++ b/resource/fr/model_studio/setting/table/STAT_TEMPLATE_PARA.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/STAT_TEMPLATE_RET.xml b/resource/fr/model_studio/setting/table/STAT_TEMPLATE_RET.xml new file mode 100644 index 00000000..390fec26 --- /dev/null +++ b/resource/fr/model_studio/setting/table/STAT_TEMPLATE_RET.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/SWITCH_CFG_INFO.xml b/resource/fr/model_studio/setting/table/SWITCH_CFG_INFO.xml new file mode 100644 index 00000000..0b89e09e --- /dev/null +++ b/resource/fr/model_studio/setting/table/SWITCH_CFG_INFO.xml @@ -0,0 +1,12 @@ + + + + + + + + + + +
+ diff --git a/resource/fr/model_studio/setting/table/SYS_MODEL_MSG_RELAY.xml b/resource/fr/model_studio/setting/table/SYS_MODEL_MSG_RELAY.xml new file mode 100644 index 00000000..9cd4a0db --- /dev/null +++ b/resource/fr/model_studio/setting/table/SYS_MODEL_MSG_RELAY.xml @@ -0,0 +1,9 @@ + + + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/TBL_FES_DEV_INFO_FOR_FES_ADD.xml b/resource/fr/model_studio/setting/table/TBL_FES_DEV_INFO_FOR_FES_ADD.xml new file mode 100644 index 00000000..52ff6b03 --- /dev/null +++ b/resource/fr/model_studio/setting/table/TBL_FES_DEV_INFO_FOR_FES_ADD.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + +
+ diff --git a/resource/fr/model_studio/setting/table/TEMP_PLUGIN.xml b/resource/fr/model_studio/setting/table/TEMP_PLUGIN.xml new file mode 100644 index 00000000..e353d1a8 --- /dev/null +++ b/resource/fr/model_studio/setting/table/TEMP_PLUGIN.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/TEMP_PLUGIN_DEV_MAP.xml b/resource/fr/model_studio/setting/table/TEMP_PLUGIN_DEV_MAP.xml new file mode 100644 index 00000000..9de58dae --- /dev/null +++ b/resource/fr/model_studio/setting/table/TEMP_PLUGIN_DEV_MAP.xml @@ -0,0 +1,7 @@ + + + + + + +
\ No newline at end of file diff --git a/resource/fr/model_studio/setting/table/TEMP_PLUGIN_FES_DEV_MAP.xml b/resource/fr/model_studio/setting/table/TEMP_PLUGIN_FES_DEV_MAP.xml new file mode 100644 index 00000000..0a43c2be --- /dev/null +++ b/resource/fr/model_studio/setting/table/TEMP_PLUGIN_FES_DEV_MAP.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ACC.xml b/resource/fr/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ACC.xml new file mode 100644 index 00000000..df6cc2d8 --- /dev/null +++ b/resource/fr/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ACC.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ANA.xml b/resource/fr/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ANA.xml new file mode 100644 index 00000000..14a6453c --- /dev/null +++ b/resource/fr/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_ANA.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_DIG.xml b/resource/fr/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_DIG.xml new file mode 100644 index 00000000..0ba857f7 --- /dev/null +++ b/resource/fr/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_DIG.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + +
+ diff --git a/resource/fr/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_MIX.xml b/resource/fr/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_MIX.xml new file mode 100644 index 00000000..904df2f3 --- /dev/null +++ b/resource/fr/model_studio/setting/table/TEMP_PLUGIN_POINT_MAP_MIX.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/TRIGGER_CONDITION_DEFINE.xml b/resource/fr/model_studio/setting/table/TRIGGER_CONDITION_DEFINE.xml new file mode 100644 index 00000000..0d322709 --- /dev/null +++ b/resource/fr/model_studio/setting/table/TRIGGER_CONDITION_DEFINE.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/TRIGGER_FUNCTION_DEFINE.xml b/resource/fr/model_studio/setting/table/TRIGGER_FUNCTION_DEFINE.xml new file mode 100644 index 00000000..48f637bb --- /dev/null +++ b/resource/fr/model_studio/setting/table/TRIGGER_FUNCTION_DEFINE.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/TRIGGER_PERIOD_DEFINE.xml b/resource/fr/model_studio/setting/table/TRIGGER_PERIOD_DEFINE.xml new file mode 100644 index 00000000..f45eb4d0 --- /dev/null +++ b/resource/fr/model_studio/setting/table/TRIGGER_PERIOD_DEFINE.xml @@ -0,0 +1,11 @@ + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/TRIGGER_TIMER_DEFINE.xml b/resource/fr/model_studio/setting/table/TRIGGER_TIMER_DEFINE.xml new file mode 100644 index 00000000..52d835ee --- /dev/null +++ b/resource/fr/model_studio/setting/table/TRIGGER_TIMER_DEFINE.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/sample.xml b/resource/fr/model_studio/setting/table/sample.xml new file mode 100644 index 00000000..b1f2eed2 --- /dev/null +++ b/resource/fr/model_studio/setting/table/sample.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/sys_model_app_info.xml b/resource/fr/model_studio/setting/table/sys_model_app_info.xml new file mode 100644 index 00000000..6ed95056 --- /dev/null +++ b/resource/fr/model_studio/setting/table/sys_model_app_info.xml @@ -0,0 +1,10 @@ + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/sys_model_dbconfig_domain.xml b/resource/fr/model_studio/setting/table/sys_model_dbconfig_domain.xml new file mode 100644 index 00000000..6641d1ae --- /dev/null +++ b/resource/fr/model_studio/setting/table/sys_model_dbconfig_domain.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/sys_model_dbconfig_node.xml b/resource/fr/model_studio/setting/table/sys_model_dbconfig_node.xml new file mode 100644 index 00000000..93ef5729 --- /dev/null +++ b/resource/fr/model_studio/setting/table/sys_model_dbconfig_node.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/sys_model_deploy_info.xml b/resource/fr/model_studio/setting/table/sys_model_deploy_info.xml new file mode 100644 index 00000000..ede0b3fd --- /dev/null +++ b/resource/fr/model_studio/setting/table/sys_model_deploy_info.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + +
+ diff --git a/resource/fr/model_studio/setting/table/sys_model_domain_info.xml b/resource/fr/model_studio/setting/table/sys_model_domain_info.xml new file mode 100644 index 00000000..0113a92a --- /dev/null +++ b/resource/fr/model_studio/setting/table/sys_model_domain_info.xml @@ -0,0 +1,9 @@ + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/sys_model_location_info.xml b/resource/fr/model_studio/setting/table/sys_model_location_info.xml new file mode 100644 index 00000000..4c2a7e52 --- /dev/null +++ b/resource/fr/model_studio/setting/table/sys_model_location_info.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/sys_model_node_info.xml b/resource/fr/model_studio/setting/table/sys_model_node_info.xml new file mode 100644 index 00000000..8f2dc4e1 --- /dev/null +++ b/resource/fr/model_studio/setting/table/sys_model_node_info.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/sys_model_process_info.xml b/resource/fr/model_studio/setting/table/sys_model_process_info.xml new file mode 100644 index 00000000..321bce80 --- /dev/null +++ b/resource/fr/model_studio/setting/table/sys_model_process_info.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/resource/fr/model_studio/setting/table/sys_model_sub_system_info.xml b/resource/fr/model_studio/setting/table/sys_model_sub_system_info.xml new file mode 100644 index 00000000..896c5707 --- /dev/null +++ b/resource/fr/model_studio/setting/table/sys_model_sub_system_info.xml @@ -0,0 +1,8 @@ + + + + + + + +
diff --git a/resource/fr/model_studio/setting/tree/TriggerFuncTree.xml b/resource/fr/model_studio/setting/tree/TriggerFuncTree.xml new file mode 100644 index 00000000..769b0d20 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/TriggerFuncTree.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/TriggerParaTree.xml b/resource/fr/model_studio/setting/tree/TriggerParaTree.xml new file mode 100644 index 00000000..9a38da25 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/TriggerParaTree.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/alarmTree.xml b/resource/fr/model_studio/setting/tree/alarmTree.xml new file mode 100644 index 00000000..b17998ca --- /dev/null +++ b/resource/fr/model_studio/setting/tree/alarmTree.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/app.json b/resource/fr/model_studio/setting/tree/app.json new file mode 100644 index 00000000..d104d68c --- /dev/null +++ b/resource/fr/model_studio/setting/tree/app.json @@ -0,0 +1,6 @@ +{ +"tree": "app.xml", +"table": "sys_model_process_info.xml", +"where": "%1='-1' OR APP_ID='%1' ORDER BY APP_ID,RUN_ORDER", +"columnNameInTree": "APP_ID" +} \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/app.xml b/resource/fr/model_studio/setting/tree/app.xml new file mode 100644 index 00000000..706bf388 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/app.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/autoRelation.json b/resource/fr/model_studio/setting/tree/autoRelation.json new file mode 100644 index 00000000..99e2b61a --- /dev/null +++ b/resource/fr/model_studio/setting/tree/autoRelation.json @@ -0,0 +1,27 @@ +{ + "acc": { + }, + "ana": { + }, + "anaCtrl": { + }, + "comment": { + "IA": "IA", + "Pos": "PosOn,PosOff", + "c": "以下内容大小写敏感,例如" + }, + "dig": { + "PTRkd": "PTRkdOut,PTRkdIn", + "Pos": "PosOff,PosOn", + "Rkd": "RkdOut,RkdIn", + "sRkd": "sRkdOut,sRkdIn" + }, + "digCtrl": { + "NRT": "RsOper", + "Pos": "Oper" + }, + "mix": { + }, + "mixCtrl": { + } +} diff --git a/resource/fr/model_studio/setting/tree/calcFunc.xml b/resource/fr/model_studio/setting/tree/calcFunc.xml new file mode 100644 index 00000000..dc70f3ea --- /dev/null +++ b/resource/fr/model_studio/setting/tree/calcFunc.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/chan.xml b/resource/fr/model_studio/setting/tree/chan.xml new file mode 100644 index 00000000..091b9041 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/chan.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/resource/fr/model_studio/setting/tree/commonTree.xml b/resource/fr/model_studio/setting/tree/commonTree.xml new file mode 100644 index 00000000..91ab8153 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/commonTree.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/ctrlActDefine.xml b/resource/fr/model_studio/setting/tree/ctrlActDefine.xml new file mode 100644 index 00000000..17cb32d9 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/ctrlActDefine.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/deploy.json b/resource/fr/model_studio/setting/tree/deploy.json new file mode 100644 index 00000000..bdd41b98 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/deploy.json @@ -0,0 +1,6 @@ +{ +"tree": "deploy.xml", +"table": "sys_model_deploy_info.xml", +"where": "%1='-1' OR DOMAIN_ID='%1'", +"columnNameInTree": "DOMAIN_ID" +} \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/deploy.xml b/resource/fr/model_studio/setting/tree/deploy.xml new file mode 100644 index 00000000..a23cdfe9 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/deploy.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/devInstListTree.xml b/resource/fr/model_studio/setting/tree/devInstListTree.xml new file mode 100644 index 00000000..fba0a295 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/devInstListTree.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/devInstTree.xml b/resource/fr/model_studio/setting/tree/devInstTree.xml new file mode 100644 index 00000000..06619eaa --- /dev/null +++ b/resource/fr/model_studio/setting/tree/devInstTree.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/devInstTreeAll.xml b/resource/fr/model_studio/setting/tree/devInstTreeAll.xml new file mode 100644 index 00000000..90297d5e --- /dev/null +++ b/resource/fr/model_studio/setting/tree/devInstTreeAll.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/devInstTreeDev.xml b/resource/fr/model_studio/setting/tree/devInstTreeDev.xml new file mode 100644 index 00000000..fd4fa640 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/devInstTreeDev.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/resource/fr/model_studio/setting/tree/devInstTreeDevAndGrp.xml b/resource/fr/model_studio/setting/tree/devInstTreeDevAndGrp.xml new file mode 100644 index 00000000..c7178212 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/devInstTreeDevAndGrp.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/devInstTreeDevAndLocation.xml b/resource/fr/model_studio/setting/tree/devInstTreeDevAndLocation.xml new file mode 100644 index 00000000..8fdaa304 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/devInstTreeDevAndLocation.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/devInstTreeGrp.xml b/resource/fr/model_studio/setting/tree/devInstTreeGrp.xml new file mode 100644 index 00000000..9bca8f95 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/devInstTreeGrp.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/resource/fr/model_studio/setting/tree/devInstTreeGrpAndLocation.xml b/resource/fr/model_studio/setting/tree/devInstTreeGrpAndLocation.xml new file mode 100644 index 00000000..e1725c7b --- /dev/null +++ b/resource/fr/model_studio/setting/tree/devInstTreeGrpAndLocation.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/devInstTreeLocation.xml b/resource/fr/model_studio/setting/tree/devInstTreeLocation.xml new file mode 100644 index 00000000..9744a51b --- /dev/null +++ b/resource/fr/model_studio/setting/tree/devInstTreeLocation.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/resource/fr/model_studio/setting/tree/devModelTree.xml b/resource/fr/model_studio/setting/tree/devModelTree.xml new file mode 100644 index 00000000..768370fc --- /dev/null +++ b/resource/fr/model_studio/setting/tree/devModelTree.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/devTempTree.xml b/resource/fr/model_studio/setting/tree/devTempTree.xml new file mode 100644 index 00000000..a3e9079c --- /dev/null +++ b/resource/fr/model_studio/setting/tree/devTempTree.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/expressionTree.xml b/resource/fr/model_studio/setting/tree/expressionTree.xml new file mode 100644 index 00000000..d7434943 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/expressionTree.xml @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/fesDevInstListTree.xml b/resource/fr/model_studio/setting/tree/fesDevInstListTree.xml new file mode 100644 index 00000000..782609af --- /dev/null +++ b/resource/fr/model_studio/setting/tree/fesDevInstListTree.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/fesDevTreeAll.xml b/resource/fr/model_studio/setting/tree/fesDevTreeAll.xml new file mode 100644 index 00000000..20d2d5ca --- /dev/null +++ b/resource/fr/model_studio/setting/tree/fesDevTreeAll.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/fesDevTreeDev.xml b/resource/fr/model_studio/setting/tree/fesDevTreeDev.xml new file mode 100644 index 00000000..72656011 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/fesDevTreeDev.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/resource/fr/model_studio/setting/tree/fesDevTreeDevLocation.xml b/resource/fr/model_studio/setting/tree/fesDevTreeDevLocation.xml new file mode 100644 index 00000000..801635f6 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/fesDevTreeDevLocation.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/fesDevTreeDevRTU.xml b/resource/fr/model_studio/setting/tree/fesDevTreeDevRTU.xml new file mode 100644 index 00000000..7bc8b6b5 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/fesDevTreeDevRTU.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/fesDevTreeLocation.xml b/resource/fr/model_studio/setting/tree/fesDevTreeLocation.xml new file mode 100644 index 00000000..64c814d1 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/fesDevTreeLocation.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/resource/fr/model_studio/setting/tree/fesDevTreeLocationRTU.xml b/resource/fr/model_studio/setting/tree/fesDevTreeLocationRTU.xml new file mode 100644 index 00000000..d3b3e89a --- /dev/null +++ b/resource/fr/model_studio/setting/tree/fesDevTreeLocationRTU.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/fesDevTreeRTU.xml b/resource/fr/model_studio/setting/tree/fesDevTreeRTU.xml new file mode 100644 index 00000000..6ca02726 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/fesDevTreeRTU.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/resource/fr/model_studio/setting/tree/fesTree.xml b/resource/fr/model_studio/setting/tree/fesTree.xml new file mode 100644 index 00000000..70cebfe6 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/fesTree.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/location.json b/resource/fr/model_studio/setting/tree/location.json new file mode 100644 index 00000000..54de0fde --- /dev/null +++ b/resource/fr/model_studio/setting/tree/location.json @@ -0,0 +1,6 @@ +{ +"tree": "location.xml", +"table": "sys_model_node_info.xml", +"where": "%1='-1' OR LOCATION_ID='%1'", +"columnNameInTree": "LOCATION_ID" +} \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/location.xml b/resource/fr/model_studio/setting/tree/location.xml new file mode 100644 index 00000000..9609b82a --- /dev/null +++ b/resource/fr/model_studio/setting/tree/location.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/resource/fr/model_studio/setting/tree/lockDefineTree.xml b/resource/fr/model_studio/setting/tree/lockDefineTree.xml new file mode 100644 index 00000000..9a6e7078 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/lockDefineTree.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/mainWindow.xml b/resource/fr/model_studio/setting/tree/mainWindow.xml new file mode 100644 index 00000000..51fb7d04 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/mainWindow.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/optLockPara.xml b/resource/fr/model_studio/setting/tree/optLockPara.xml new file mode 100644 index 00000000..1d08e75d --- /dev/null +++ b/resource/fr/model_studio/setting/tree/optLockPara.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/pcs3000ImportData.json b/resource/fr/model_studio/setting/tree/pcs3000ImportData.json new file mode 100644 index 00000000..c4abcbde --- /dev/null +++ b/resource/fr/model_studio/setting/tree/pcs3000ImportData.json @@ -0,0 +1,52 @@ +{ + "电站设备": + { + "设备ID":"DEV_ID", + "设备类型":"DEV_MODEL", + "设备名称":"DESCRIPTION", + "设备标签":"TAG_NAME", + "端口":"DEV_PORT" + }, + "YC类型": + { + "属于的设备ID":"DEV_ID", + "点名缩写":"TAG_NAME", + "系数":"RATIO", + "远动号":"REMOTE_NO", + "点描述":"DESCRIPTION" + }, + "YX类型": + { + "属于的设备ID":"DEV_ID", + "点名缩写":"TAG_NAME", + "远动号":"REMOTE_NO", + "点描述":"DESCRIPTION" + }, + "YK类型": + { + "属于的设备ID":"DEV_ID", + "远动号":"REMOTE_NO", + "点名缩写":"TAG_NAME", + "点描述":"DESCRIPTION" + }, + "YM类型": + { + "属于的设备ID":"DEV_ID", + "点名缩写":"TAG_NAME", + "系数":"RATIO", + "修正值":"REVISE", + "远动号":"REMOTE_NO", + "点描述":"DESCRIPTION" + }, + "DZ类型": + { + "属于的设备ID":"DEV_ID", + "定值组号":"GROUP_NO", + "定值代号":"SEQ_NO", + "定值序号":"DZ_SEQ", + "装置系数":"RATIO", + "修正值":"REVISE", + "数值描述文件":"VALUE_TEXT", + "点描述":"DESCRIPTION" + } +} \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/pcs3000ToFes.json b/resource/fr/model_studio/setting/tree/pcs3000ToFes.json new file mode 100644 index 00000000..a84742f5 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/pcs3000ToFes.json @@ -0,0 +1,72 @@ +{ + "Device": + { + "设备型号":"TAG_NAME,DEV_MODEL", + "设备描述":"DESCRIPTION" + }, + "YC": + { + "功能号":"FUN_CODE,RES_PARA_INT2", + "信息号":"INFO_NO,RES_PARA_INT3", + "修正值":"REVISE", + "附加值":"APPEND,RES_PARA_INT5", + "点描述":"DESCRIPTION", + "装置系数":"RATIO", + "点名缩写":"TAG_NAME,SHORT_NAME" + }, + "YX": + { + "功能号":"FUN_CODE,RES_PARA_INT2", + "信息号":"INFO_NO,RES_PARA_INT3", + "点描述":"DESCRIPTION", + "点名缩写":"TAG_NAME,SHORT_NAME", + "关联遥信点ID":"ASS_DIG", + "遥信属性":"ATTR", + "自定义#1":"RES_PARA_INT4" + }, + "YM": + { + "功能号":"FUN_CODE,RES_PARA_INT2", + "信息号":"INFO_NO,RES_PARA_INT3", + "修正值":"REVISE", + "点描述":"DESCRIPTION", + "装置系数":"RATIO", + "点名缩写":"TAG_NAME,SHORT_NAME" + }, + "BLOCK": + { + "功能码":"FUNC_CODE", + "起始地址":"STAR_ADDR", + "寄存器长度":"DATA_LEN", + "寄存器类型":"DATA_FARME_TYPE", + "轮巡时间":"REF_CYCLE", + "生成SOE":"IS_CREATE_SOE" + }, + "YK": + { + "功能号":"FUN_CODE,RES_PARA_INT2", + "信息号":"INFO_NO,RES_PARA_INT3", + "点描述":"DESCRIPTION", + "点名缩写":"TAG_NAME", + "遥控属性":"ATTR", + "遥控参数":"CTRL_TYPE", + "自定义#1":"RES_PARA_INT4" + }, + "DZ": + { + "定值组号":"GROUP_NO", + "修正值":"VALUE", + "定值代号":"SEQ_NO", + "点描述":"DESCRIPTION", + "装置系数":"VALUE_RATIO", + "定值序号":"DZ_SEQ", + "数值描述文件":"VALUE_TEXT" + }, + "AO": + { + "装置系数":"RATIO", + "修正值":"REVISE", + "定值代号":"SEQ_NO", + "点描述":"DESCRIPTION" + } +} diff --git a/resource/fr/model_studio/setting/tree/projec.xml b/resource/fr/model_studio/setting/tree/projec.xml new file mode 100644 index 00000000..dc484ab6 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/projec.xml @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/rt.json b/resource/fr/model_studio/setting/tree/rt.json new file mode 100644 index 00000000..9a5fff8e --- /dev/null +++ b/resource/fr/model_studio/setting/tree/rt.json @@ -0,0 +1,6 @@ +{ +"tree": "rtTree.xml", +"table": "RT_COLUMN_MODE.xml", +"where": "TABLE_NAME='%1' ORDER BY COLUMN_NO", +"columnNameInTree": "TABLE_NAME" +} \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/rtTree.xml b/resource/fr/model_studio/setting/tree/rtTree.xml new file mode 100644 index 00000000..1a48efe3 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/rtTree.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/rtuList.xml b/resource/fr/model_studio/setting/tree/rtuList.xml new file mode 100644 index 00000000..45ad585e --- /dev/null +++ b/resource/fr/model_studio/setting/tree/rtuList.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/resource/fr/model_studio/setting/tree/sampleTree.xml b/resource/fr/model_studio/setting/tree/sampleTree.xml new file mode 100644 index 00000000..854e7ccf --- /dev/null +++ b/resource/fr/model_studio/setting/tree/sampleTree.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/statInstInput.xml b/resource/fr/model_studio/setting/tree/statInstInput.xml new file mode 100644 index 00000000..82afced4 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/statInstInput.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/statInstOutput.xml b/resource/fr/model_studio/setting/tree/statInstOutput.xml new file mode 100644 index 00000000..f82c8a41 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/statInstOutput.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/stateTextTree.xml b/resource/fr/model_studio/setting/tree/stateTextTree.xml new file mode 100644 index 00000000..7679aa1d --- /dev/null +++ b/resource/fr/model_studio/setting/tree/stateTextTree.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/staticsTree.xml b/resource/fr/model_studio/setting/tree/staticsTree.xml new file mode 100644 index 00000000..0bd23344 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/staticsTree.xml @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/sysConfigTree.xml b/resource/fr/model_studio/setting/tree/sysConfigTree.xml new file mode 100644 index 00000000..2bc0a959 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/sysConfigTree.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resource/fr/model_studio/setting/tree/textDefine.outline b/resource/fr/model_studio/setting/tree/textDefine.outline new file mode 100644 index 00000000..10a10d29 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/textDefine.outline @@ -0,0 +1,6 @@ +{ +"tree": "textDefine.xml", +"table": "DICT_TEXT_DEFINE.xml", +"where": "CLASS_NAME='%1'", +"columnNameInTree": "CLASS_NAME" +} \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/textDefine.xml b/resource/fr/model_studio/setting/tree/textDefine.xml new file mode 100644 index 00000000..83d31e53 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/textDefine.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/resource/fr/model_studio/setting/tree/userTree.xml b/resource/fr/model_studio/setting/tree/userTree.xml new file mode 100644 index 00000000..4d84cf29 --- /dev/null +++ b/resource/fr/model_studio/setting/tree/userTree.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + diff --git a/resource/fr/model_studio/translate/model_common_FR.qm b/resource/fr/model_studio/translate/model_common_FR.qm new file mode 100644 index 0000000000000000000000000000000000000000..b10f0ad29f49ee0f5aacf1c741950940d1862356 GIT binary patch literal 845 zcmZuv&r1|x7=G4uUA;KhAgMJZuYq+FiaLaWh!@Z8&Q9&fy4J1}(W!;h5kWopgG6wb zv=VG5L0Sc4FI@_vzaUERo7sV2Po3-ezR}It;bZvTm-l<0AMZPZ2k8r68XGHLdwXj4 z%OAhr25>9t-WUSf?zInQYCt5`eiA$8?Zo_7-&p_DePuvnp4Q@ff0#qNoZ~wzYrn7k z;5}rr`B#)tAMPTLByvc@fW_Yx2c>> zDrW(itjkK!Pioc*r+p>#Hl1CpFI2_isyAo58@ng9GKVj=_UilFjiX|V%M8W{WDzFI zW8j%0=%>FF1?5R5hv}=D-jtbB + + + + QObject + + + 获取版本信息失败! + Échec de l'obtention des informations de version ! + + + + 模拟量 + Grandeur analogique + + + + 数字量 + Grandeur numérique + + + + 混合量 + Grandeur mixte + + + + 累积量 + Grandeur cumulative + + + + + 消息 + Message + + + + 确定删除? + Confirmer la suppression ? + + + + 请先选择要删除的内容 + Veuillez d'abord sélectionner le contenu à supprimer + + + diff --git a/resource/fr/model_studio/translate/model_linkage_EN.qm b/resource/fr/model_studio/translate/model_linkage_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..35829326161bd6b8d7835f2bee7cdc4e27451243 GIT binary patch literal 9976 zcmd5>Yj9NM8UAuxlCZg$U>d`cETF((G(a#vQU<&rUWy6>qt@vULv|CQG0|L9oH{}w zkN_b;LqkZo1Oo|b60lT4LWtELwN7no$LX}*emHy1Zg55{ty7(LYM=Le_gwazvtctj z9slgR=j`{rx9`0?@3$*Pe7Wyl?m6(@T+hU#z2l$UE=0m2A--@4;mQ-@%WH+0(FVEz z^gQU@po$Pz;)O`QTX>$ngy$9FhIQ8o;rUS9xbZRU+agxD_6squS=|5C%|c|J6MuQD zONiMOaRu*x4*E)5$xZmZ;2Ea#7slO{?-t^kMRD(^o)KbZ5!0;UxIZ_%0Daao&3KUM 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 fB(bJ!*FZ#`Sk#+NzHazF^VOtBGs + + + + CctvActDlg + + + 选择监视器: + Select monitor: + + + + 单画面 + Single camera + + + + 四画面 + Four Camera + + + + 九画面 + Nine camera + + + + 序列显示 + serial display + + + + 选择车站: + select location: + + + + 选择摄像机: + Select camera: + + + + 选择预设位: + Select orient location: + + + + 选择序列 + Selece series + + + + 序号 + Sequence number + + + + 摄像机 + Camera + + + + + + 消息 + Message + + + + 已经存在,无法添加! + Can't be added,alreay existed! + + + + 提交事务失败,已回滚 + Commit transaction failed,rolled back + + + + 开启事务失败 + Start transaction failed + + + + 添加成功 + Add succcess + + + + 修改成功 + modify success + + + + KbdPeriodDlg + + + 名称 + Name + + + + 描述 + Description + + + + 开始时间 + Start time + + + + 结束时间 + End time + + + + 月 + Month + + + + 1:星期一/2:星期二/3:星期三/4:星期四/5:星期五/6:星期六/0:星期天 + 1:Monday/2:Tuesday/3:Wednesday/4:Thursday/5:Friday/6:Saturday/0:Sunday + + + + 日 + Day + + + + 时 + Hour + + + + 分 + Minute + + + + 秒 + Second + + + + + 消息 + Message + + + + 名称为空 + Name is null + + + + 描述为空 + Description is null + + + + Linkage + + + + + + + + + + + + + + 联动动作定义错误 + Linkage action define error + + + + + + + + + + + + + + 添加成功 + Add success + + + + + + + + + + + + + + 修改成功 + Modify success + + + + + 动作内容错误 + Action content error + + + + 发布内容包含非法字符*,请替换掉*字符 + Content posting contains illegal characters*, please replace * characters + + + + + + + + + 消息 + Message + + + + + 该动作未定义: + Not define the action: + + + + 以下功能使用了该动作,请先修改对应功能设置! + + The following functions use this action,please modify the corresponding function settings first! + + + + + + + + + 删除成功 + Delete success + + + + 功能名称重复 + Function name repeat + + + + + 以下联动使用了该功能,请先修改对应联动设置! + + The following linkage uses this function,please modify the corresponding linkage settings first! + + + + + + + 请先保存修改 + Please save modify first + + + + 请选中要添加的功能 + Please select the function want to add + + + + + 请选中要修改的行 + Please select the line to modify + + + + 如果此联动正在执行或者已触发会导致联动终止,确定删除? + If this linkage is being executed or triggered, the linkage will be terminated and the deletion will be confirmed? + + + + 删除失败! + Delete failed! + + + + 请选中要修改的条目 + Please select items to modify + + + + 提交事务失败,已回滚 + Transaction submit failed,rollback has started + + + + PeriodWidget + + + 添加失败 + Add failed + + + + 添加成功 + Add success + + + + 修改失败 + Modify failed + + + + 修改成功 + Modify success + + + + 删除失败! + Delete failed! + + + + 删除成功 + Delete success + + + + + + 消息 + Message + + + + 提交事务失败,已回滚 + Transaction submit failed,rollback has started + + + + QObject + + + 联动动作 + Linkage action + + + + 联动功能 + Linkage function + + + + 联动定义 + Linkage define + + + + 触发定义 + Trigger define + + + + 动作类型 + Action type + + + + 动作列表 + Action list + + + + 搜索动作描述 + Search action description + + + + + + + + + 添加 + Add + + + + + + + + 修改 + Modify + + + + + + + + + 删除 + Delete + + + + 功能类型 + Function type + + + + 功能列表 + Function list + + + + 功能所含动作列表 + List of actions included in the function + + + + 搜索功能描述 + Search function description + + + + + 添加记录 + Add record + + + + + 修改记录 + Modify record + + + + + 删除记录 + Delete record + + + + 联动类型 + Linkage type + + + + 联动列表 + Linkage list + + + + 联动所含功能列表 + List of actions included in the linkage + + + + 搜索联动描述 + Search linkage description + + + + 触发类型 + Trigger type + + + + 0:定时触发/1:周期触发/2:触发函数/3:触发器定义 + 0:Timed trigger/1:Cycle trigger/2:Trigger function/3:Trigger definition + + + + 保存 + Save + + + + TriggerFuncWidget + + + 添加 + Add + + + + 删除 + Delete + + + + 函数定义 + Function define + + + + 保存 + Save + + + + 请选中要添加的专业! + Please select the subsystem to add! + + + + + 请选中要删除的触发函数! + Please select the trigger function you want to delete! + + + + + 写入数据库不成功 + Write into database failed + + + + 删除成功 + Delete success + + + + 保存成功 + Save success + + + + + + 消息 + Message + + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + + TriggerParaWidget + + + 添加 + Add + + + + 删除 + Delete + + + + 保存 + Save + + + + 请选中要添加的专业! + Please select the subSystem to add! + + + + + 请选中要删除的触发器! + Please select the trigger you want to delete! + + + + + 写入数据库不成功 + Write into database failed + + + + 删除成功 + Delete success + + + + 保存成功 + Save success + + + + + + 消息 + Message + + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + diff --git a/resource/fr/model_studio/translate/model_plan_curve_EN.qm b/resource/fr/model_studio/translate/model_plan_curve_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..fa4e86c12bc674eb4f94455a8a2095434619d530 GIT binary patch literal 8186 zcmb_hYitzP6+XL$^%};z#xIC*!_x9fY7%UchLQ>#Y^dC{5lu{zrmD(<*T!Ib$v$}W zM`b4vOdT+7c*ZYGc&6f&xOA~GP8+q6DkUmae^hFTDB77_r%nTE)S^@({qDV<+41hq z?1a>o_s-1D`R;emJ+FKGtw`OBKYY@C;QiU9BWwGIudg7oM~EiAN zN_5{D`_%8>#yorN({8;4B)=$Q{NzGz=^HHdk__DTo7pIK@DORyGlA7o|y_IKd% zR@U7=-i7?wq_J6*;D2m#;k&Dein=Dxy8nLM-*h-1`#Vvo&ym~v5K-QB$FgIOV+=Yf zJ2w%zs~x{zj`ycK9RGQD4v};uJ8NVOVl3E( zu@Lt+#aIx*=)rxN81o^&=mFfkMWOpbE6PwDQ9Mp}&}^XWPAL9PX#K_mIy#_}$z zrLc+Y;H$>660M>DH5$x1xZhYZkDkFwLzp>`URvIH)=avVHgH*k70X>+#?lhz4jbuO zIdsBU(m_99n$q?sOF4Yr_-!Zl-%HKp)82OjT{(0~Irl4h-=5g13rtq3s$N&q67mJ= zz3YW7tfRS9P99o{zZICT0UB<>HMb3n>w(&WUqAHcp>=qJeKz8~23!Yl7lL-!JK~Cc z@55akMu9O~V>D-Oxo4?IzS1h6>HxWDWKaC%Vfpx}=-}Si&}&LhA0EzTGz+U%H+fsC z!htQmV3oh6zOf-35Og;h&~4@h&8U1i$_X3;+THDGXm_`p(f%Ainhw$~&1B6JgzYue zR$tBD;%y51YU)hhhoYU_Gq&ig#t|Lqk9b^7pX8acgy%aSZ33$rFk}W1pe@X(v}NYVKR+$vtocgQL}*Pi z5uuH_EHLH*c2zt8*0ad0F>`D9qdWJ+hR>PvYtiAe9H3h(-xF3baD13efICMcpVNam zgLp&ajWDi#RK_JzGe;0|h&B^K#k?ez@ngS?4v)n4pDt4l9aY{wARvq@9*?4%`(cDKe)z7p#?h+;}PFo18(RbK+* zV&?4!K1;K@n5xYo$>*=gJ5LBtH;0>-1ZUvr$Y5N5W#JxqW;c ziBw!FUmg$~xmmUe%anJX#`6qbm5(X9VqyHv{ff`@Pa&)LFlVO2%E{y zaprlgNa27Yi6Jtm$4b}!?k4_*q{}; z;z-PbxvC#l(!#)?Gf_q*3f(e1XF=V|ODa~EutIq~FGdqmtXfeEvqaEG?Q}w~Ur`;G z#n1m*d81Y7J0XltXd^=scre+=KvlCoeytJEd^=wxZDEC0bna9Gk_O=r?I?5SveL;i zuBfedvy3sUb+nA-t#q}FrLA_h%n;c5i^UT2?v^ovl@6D&v{9GKSfZFa%1YV>SMb3_ zQq%9@^JsrYuXf1C51O0LyrdKHdNruRtmpGi(|lYl*KBe+T5y0KKNa&3JAZEZ{N?7e zR3HPebH(_n0atY(9t3^X&eRrw=k<7xHw(2H^Of#5mEBk6_6sZzcXq}{cpuMLJL+U= z9e9tEAt_s!tc0FG>|q@iKiYvF&OU?{g>_v3Hw!}@eWSZNm`ufTEqY;oST1W1i$<}?QffoEjyt2sLCg_bu=mV{*=c$!?nOsdk5QrP z<;{=xzq-_eu5dK67nh%0d3|n$2dM*R0ko}IUuUE@Hgq;af_h%#C>W}$XMAwh0F#ML zY?f15cTqH~MeCX!1laM9opV&VL^fTh^3*GTybpY#6YXpLDJBEk)T%3AU$R*-R1Z!K ztUal#0zo^S$xeW_Vz~JlbZX@$37%H!)wNo|!%7&T;zY^v|15MK(3AQSRnGH#;fZ2P zZxH$tE4lYo52In{HxGS>uQSZeXglu9VPYYjvCl;D6&>1Ju5`DTqdF5NW2pkGPT|Jd z)2tL^=IX_tYO)>#U)G^y2T~S&5(zC~%%$Kl+PYimIK#SAJ^lJpErac@N+Oc180Kp% ze=#~uxMt07mZY2cKaN + + + + CCombBoxDelegate + + + 星期日 + Sunday + + + + 星期一 + Monday + + + + 星期二 + Tuesday + + + + 星期三 + Wednesday + + + + 星期四 + Thursday + + + + 星期五 + Friday + + + + 星期六 + Saturday + + + + 否 + No + + + + 是 + Yes + + + + CDbInterface + + + 日时段名称 + Name + + + + CPlanCurvesConfigure + + + CPlanCurvesConfigure + + + + + 类型配置 + Type Config + + + + 年时段配置 + Year Interval Config + + + + 周时段配置 + Week Interval Config + + + + 日时段模板配置 + Day Interval Temp Config + + + + 计划曲线配置 + PlanCurve Config + + + + 新建类型 + New Type + + + + + + + + + + 保存 + Save + + + + + + + 计划类型 + Plan Type + + + + + + + + + + 删除 + Delete + + + + 新建模板类型 + New Temp Type + + + + 日时段模板类型 + Day Interval Temp Type + + + + 新建年时段配置 + New Year Interval + + + + 新建周时段配置 + New Week Interval + + + + 新建日时段配置 + New Day Interval + + + + + 日模板类型 + Day Temp Type + + + + 新建计划曲线 + New PlanCurve + + + + 关联标签 + Related Tag + + + + 计划曲线名称 + Name + + + + 类型ID + Type ID + + + + 所属位置 + Location + + + + 所属专业 + Subsystem + + + + + 单位 + Unit + + + + 时段曲线配置 + Interval Curve Config + + + + 导入模板 + Import Temp + + + + 新建 + New + + + + 预览 + Preview + + + + + 否 + No + + + + 是 + Yes + + + + 星期日 + Sunday + + + + 星期一 + Monday + + + + 星期二 + Tuesday + + + + 星期三 + Wednesday + + + + 星期四 + Thursday + + + + 星期五 + Friday + + + + 星期六 + Saturday + + + + + + + ID + + + + + + 类型名称 + Name + + + + 年时段名称 + Name + + + + 是否例外 + isException + + + + 开始月 + Start Month + + + + 开始日 + Start Day + + + + 结束月 + End Month + + + + 结束日 + End Day + + + + 周时段名称 + Name + + + + 星期 + Week + + + + 年时段 + Year Interval + + + + 周时段 + Week Interval + + + + valueId + + + + + + + 日时段名称 + Name + + + + + 开始时间 + Start Time + + + + + 结束时间 + End Time + + + + + 值 + Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 提示 + Prompt + + + + + + + + 名称不能为空! + The name cannot be empty! + + + + + + + + + 保存成功! + Save Successfully! + + + + + + + + + 保存失败! + Save failed! + + + + 行: %1 结束时间不能小于开始时间! + Row:%1 End time cannot less than start time! + + + + 行: %1 与行:%2 时间段不连续! + Row: %1 is not discontinuous with Row: %2! + + + + 周时段配置需覆盖一整周 + Week interval configuration needs to cover the entire week + + + + %1 : 开始月不能大于结束月! + %1 : Begin month cannot be bigger than the end month! + + + + %1 : 开始日不能大于结束日! + %1 : Begin day cannot be bigger than the end day! + + + + + 年配置需要覆盖全年! + Year interval configuration need to cover the whole year! + + + + 请从1月1日开始配置! + Please start configuration from January 1st! + + + + 请配置到12月31日! + Please configure until December 31! + + + + 模拟量出口 + Analog output + + + + 是否删除曲线'%1'? + Delete curve '%1' ? + + + + 删除成功! + Delete successfully! + + + + 删除失败! + Delete failed! + + + + + + 计划类型为空,请检查类型配置! + The plan type is empty,please check type config! + + + + + 周时段配置被使用,无法保存! + Week interval configuration is in use, cannot be saved! + + + + 日模板类型为空,请检查类型配置! + The day temp type is empty,please check type config! + + + + + 请选择一条时段曲线! + Please select a time period curve! + + + + 未找到年描述 + No year description found + + + + 未找到周描述 + No week description found + + + + 导入失败 + Import failed + + + + 导入成功 + Import successfully + + + diff --git a/resource/fr/model_studio/translate/model_sequence_EN.qm b/resource/fr/model_studio/translate/model_sequence_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..3b691ea70fa8d0bd698c8127ac3bef0d976a2b82 GIT binary patch literal 4194 zcmcgvYiv_x7=Fv8+iJVUX$+aD9Zn^48c}~O3UU*Sz_@6_Ps`dtp{&pq20!Eym~Kef zlp!$3Wn_aXSqDPgR#J-ok(dxgj6WnKYR)-5`(c!r7`#QF_xskK?H)buOesT*^M98b`rUmPLw?4~atTZ?CxW5%tkL?tDTdGq`E>< zr!Q{C_o{P4AW7sr=KN?|6YQ=zKfAdAc>9aCeHbTlUn~A~<}Bd3N}ie>B%+liKg~Tr zRP?dyx}%k7@(kB6-~2{2DdYP6yXkm+(e+2`R$(TmEcF0OCOIeh27-RZ-0Cm&z+?=e|Q1@-0+rMT7zfux<36G zFICej|Q3@Dm-AbCz>WMRI z>VO5oP4jRjjNh1w#2b zaQ3Ksj_JEnYI{6$>P(G=Mio780SN%05wKCfZZN_@&nhgQN26-pUwXRkR>q;a+5En#o%^J9E%h*71YwcZ`^Cu)<3)XVb z4Z+_Sa3YY@2i%;bjd%_Tk;Bl5?+J{4;=_qG;-oJ>5XQ|FT7Qq!pZ(t3thS%dbnaI7 z^eL$>wdJ7R-S@xK8R<@H`%aCeBND`(4o4(lDgmc9ctPEB+(P?qX$Ng=3rC(RkjV3B zsVEyiq7Vc^5PGA8fW)z|i!RC^pRdE;t<;oPq*L^PLH*)>wYgUYTx~u#(veX64_Y{v zi!9oRxbls40&_GMj0n1=UIl{nqzwW$4dx%kYZxr^iqwKE%G1Ja+8AUmB)>p2<)#&h z)5?PM@E9cNCFgOy$mhggM_h!=*mVGN({p&OjyKzt+j_ZvHH%)VMmyIvA@H_YE7Jr0MuN z-Gi(YV_ZbXkN9vFj2X2&)YYD|`uSdasjC3738}#;-H0C+4Z{O1!G{@`O`}jgEKhK) zr5(Zi?_fPLO(blEJ?=CRH2f6Nj^Hm>;^@j?%1w_P{L=dZcvWz@ko#uTfE9OKp4C`P zHi>KtL0TT-vf8;uWB7)v&{#B#YATb(A=iwN*W+qW++K#wv;+X$cDS^;0J24%-CY=* z_paPG?2dII;la#h!;Mk4Avv65IPIfVf@Tnzz$;8{|ErJ`)wlM_@i4M0r3}T@=AC+C zNEu3I-c8!`UWrA?8a{4J>+!?>FyAO_8ofEFO(K5=5d4hHSOYkZ`Kj)~+Ob zlq7mmw+wx?I{3c&&Qa|`r#-1sS}dgD3s;+$PVIvhZRddfp~}%wE!8TJLbn|@#MHdc9Dg~h%v4#%T5q(WU@in2PAB{O!frcLUTosKNEat zbP?2}5A&CaNLx;QKa!2pP5w)eCCq78PcegDCDZHbQwL8f7f+4sXjO*#^^-egaKw_z z-QAw>@_$I!T$zPB^u3^Eu#u|$1)GJp#fEFINywS&4uv@I3Tfq_cki{AW6o_6$e+I) ZStD9TRK~b(1Vc_#>+LPrK_)mHe*)a)ViW)X literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/translate/model_sequence_EN.ts b/resource/fr/model_studio/translate/model_sequence_EN.ts new file mode 100644 index 00000000..e98f3c89 --- /dev/null +++ b/resource/fr/model_studio/translate/model_sequence_EN.ts @@ -0,0 +1,228 @@ + + + + + QObject + + + 顺控动作 + Sequential action + + + + 顺控功能 + Sequence control function + + + + 顺控定义 + Sequence definition + + + + + 添加 + Add + + + + + 修改 + Modify + + + + + 删除 + Delete + + + + 保存 + Save + + + + 所有 + All + + + + 所属位置: + Location: + + + + + 搜索描述 + Search description + + + + 功能名称: + function name: + + + + 请输入描述关键字 + Please enter a descriptive keyword + + + + 功能描述: + Function description: + + + + 此功能所包含的动作列表 + List of actions included in this function + + + + + 添加记录 + Add record + + + + + 修改记录 + Modify record + + + + + 删除记录 + Delete Record + + + + 顺控列表 + Sequence List + + + + 此顺控所包含的功能列表 + List of actions included in this function + + + + SeqOrderCtrl + + + 添加成功 + Added successfully + + + + 以下功能使用了该动作,请先修改对应功能设置! + + The following functions use this action,please modify the corresponding function settings first! + + + + 删除失败! + failed to delete! + + + + + + + + 删除成功! + successfully deleted! + + + + + 以下顺控使用了该功能,请先修改对应顺控设置! + + The following sequencer uses this function, please modify the corresponding sequencer setting first! + + + + 请选中要修改的功能 + Please select the function to be modified + + + + 名称和描述都不允许为空 + Neither the name nor the description is allowed to be empty + + + + 功能名称重复 + Duplicate feature name + + + + 修改成功 + Successfully modified + + + + 获取车站信息失败 + Failed to obtain station information + + + + 保存失败 + Save failed + + + + + + + 添加成功! + Added successfully + + + + + + + 修改成功! + Successfully modified + + + + + + + 请先保存修改 + Please save the changes first + + + + + 请在左侧选中要添加的功能 + Please select the function you want to add on the left + + + + + + 请选中要修改的行 + Please select the row to be modified + + + + 请选中要添加的顺控 + Please select the sequence to add + + + + + + 消息 + Message + + + + 提交事务失败,已回滚 + Failed to commit transaction and rolled back + + + diff --git a/resource/fr/model_studio/translate/model_studio_EN.qm b/resource/fr/model_studio/translate/model_studio_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..77bd079d21ba6a7c88d00e14a8a27534779bfa62 GIT binary patch literal 16727 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 literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/translate/model_studio_EN.ts b/resource/fr/model_studio/translate/model_studio_EN.ts new file mode 100644 index 00000000..fa3a3b98 --- /dev/null +++ b/resource/fr/model_studio/translate/model_studio_EN.ts @@ -0,0 +1,7293 @@ + + + + + AlarmWidget + + 添加记录 + Add record + + + 删除记录 + Delete record + + + 撤销更改 + Undo changes + + + 保存 + Save + + + Excel导出 + ExcelExport + + + Excel导入 + ExcelImport + + + 所属告警状态选择 + 所属报警状态选择 + Select alarm status + + + 添加<< + Add<< + + + 删除>> + Delete>> + + + 告警动作选择 + 报警动作选择 + Select alarm action + + + 消息 + Message + + + 是否保存当前预案 + Whether to save the current plan + + + 超过了最大字符限制512 + Exceeded maximum character limit of 512 + + + 保存成功! + Save successed! + + + 设备实例 + Device instance + + + 位置: + Location: + + + 专业: + Subsystem: + + + 设备测点 + Device point + + + 只显示有预案的测点 + Only show points with plan + + + 预案 + Plan + + + 请选中对应的告警方式 + 请选中对应的报警方式 + Please select the corresponding alarm method + + + 保存不成功 + Save failed + + + 保存成功 + Save successed + + + 请选中对应告警等级 + 请选中对应报警等级 + Please select the corresponding alarm level + + + + CModelStudiologin + + + 数据库查询域失败 + Select domain failed + + + + 数据库中不存在任何域 + There isn't any domain in database + + + + 数据库查询位置失败 + Select location failed + + + + 数据库中不存在任何位置 + There isn't any location in database + + + + 数据库查询应用失败 + Select apply failed + + + + 数据库中不存在任何应用 + There isn't any apply in database + + + + 数据库查询专业失败 + Select subsystem failed + + + + 数据库中不存在任何专业 + There isn't any subsystem in database + + + + 账号:%1 + account:%1 + + + + 登录失败 + Login failed! + + + + 失败原因: + + Failed reason: + + + + CommonWidget + + 导出当前配置 + Export current configuration + + + 添加记录 + 导入当前配置 + Import current configuration + + + 删除记录 + Delete record + + + 撤销更改 + Undo change + + + 保存 + Save + + + 输出测点 %1 格式不正确 + Output point %1 incorrect format + + + 数据库查询错误 + Database query error + + + 输出测点%1 不存在对应的车站和专业信息 + Output point %1 corresponding station and subsystem information don't existed + + + 超时输出测点 %1 格式不正确 + Timeout output point %1 incorrect format + + + 输出测点和超时输出测点不属于同一个车站与专业 + Output point and timeout output point not belong to the same station and subsystem + + + 消息 + Message + + + 文件打开不成功 + Open file failed + + + 导出配置成功! +导出路径: + Export configuration success!export path: + + + 保存失败 + Save failed + + + 导出失败:%1 + Export failed:%1 + + + 打开文件 + Open file + + + 导入失败:%1 + Import failed:%1 + + + 导入成功 + Import success + + + + DevWidget + + 显示模式 + Display mode + + + 详细模式 + Detailed mode + + + 表格模式 + Table mode + + + 设备实例 + Device instance + + + 位置: + Location: + + + 专业: + Subsystem: + + + 设备测点 + Device point + + + 属性面板 + Attribute panel + + + 保存 + Save + + + 刷新 + Refresh + + + 添加设备组 + Add device group + + + 导入设备组 + import device group + + + 修改设备组 + Modify device group + + + 删除设备组 + Delete device group + + + 复制设备 + Copy Device + + + 复制整个设备组设备 + Copy all devices of the device group + + + 修改设备 + Modify device + + + 删除设备 + Delete device + + + 同步前置设备的描述到所选设备 + Synchronize description of Fes devices to selected devices + + + 关联RTU/清除前置RTU + Association RTU/Clear Fes RTU + + + 添加累积量特殊点 + Add special accuml point + + + 添加模拟量特殊点 + Add special accuml point + + + 添加数字量特殊点 + Add special digital point + + + 添加枚举量特殊点 + Add special mix point + + + 删除特殊点 + Delete special point + + + 强制删除测点 + Force delete point + + + 生成该测点的闭锁出口 + Generate interlock exit of the point + + + 从前置设备添加测点 + Add point from Fes devices + + + 刷新所选测点属性 + Refresh selected point attributes + + + 基础属性 + Base + + + 限值属性 + Lmt + + + 前置属性 + Fes + + + 控制属性 + Ctl + + + 通过点类型获取单位失败 + Get unit by point type failed + + + 该设备的模板未与前置模板有任何关联, +请先关联! + The device's template is not associated with the Fes template,please associated first! + + + 添加失败 + Add failed + + + 提示 + Prompt + + + 测点属性已经修改,是否保存? + The point attribute has been modified,whether to save? + + + 保存失败: + Save failed: + + + 保存失败 + Save failed + + + 保存成功! + Save success! + + + 查询设备信息失败 + Query device message failed + + + 删除点失败! + Delete point failed! + + + 删除点成功! + Delete point success! + + + 标签名已存在,请修改 + Tagname already existed,please modify + + + 复制失败! + Copy failed! + + + 模板有错,请重新打开软件 + The templete is wrong,please reopen the software + + + 未选中设备 + Unselected device + + + 导出设备组 + Export Device Group + + + 设备信息有误,请重新打开软件 + Device message is wrong,please reopen the software + + + 复制设备-请输入新的设备名 + Copy device-please input new device name + + + 复制成功 + Copy success + + + 请选中要复制的设备组 + Please select the device group you want to copy + + + 复制设备组-请输入新的设备组名 + Copy device group-please input new device name + + + 新的设备组名 + new device group name + + + 标签名或描述不能为空 + Tagname and decription can't be null + + + 数据库链接出错 + Database link error + + + 设备组的标签名重复!请重新填写 + Duplicate tagname of device group!Please refill + + + 请选择设备! + Please select device! + + + 设备信息有错,请重新打开软件 + Device message is wrong,please reopen the software + + + 修改设备属性 + Modify device attrubutes + + + 修改成功 + Modify success + + + 请选中要删除的设备 + Please select the device you want to delete + + + 删除设备失败! + Delete Device failed! + + + 删除设备成功 + Delete device success + + + 请选中要关联的设备实例 + Please select the device instance you want to associate + + + 导入成功 + Import success + + + 导出成功 + Export success + + + 选择要添加的测点 + Select the point you want to add + + + 请选中要添加的设备 + Select the device you want to add + + + 不可添加的前置测点类型 + The Fes point type can't be added + + + 请选中要添加的设备组 + Please device group you want to add + + + 请选择同一类型的测点 + Please select the same type of point + + + 选择前置设备进行关联 + Select a Fes device to associate + + + 获取设备信息错误 + Get device message error + + + 消息 + Message + + + 未选择任何RTU,将执行清除RTU属性操作,是否执行? + No RTU selected,will chear RTU attributes,whether to execute? + + + 执行失败! + Execute failed! + + + 执行成功 + Execute success + + + 请先选择位置和专业 + Please select location and subsystem + + + 获取车站标签信息失败 + Get location tag messsage failed + + + 添加成功 + Add success + + + 请选中设备组 + Please select a device group + + + 删除设备组失败! + Delete device group failed! + + + 删除设备组成功 + Delete device group success + + + 累计量无闭锁出口 + Accuml point doesn't has interlock exit + + + 数据库链接错误 + Database link error + + + 此测点非控制点,无法生成闭锁出口 + This point is not a control point,unable to generate interlock exit + + + 请选中要生成出口的测点 + Please select the point to generate the exit + + + 闭锁出口生成成功! + Generate interlock exit success! + + + 未选中具体设备! + No specific device selected! + + + 获取设备信息失败! + Get device message failed! + + + 前置关联 + Fes association + + + 直接添加设备 + Add devices directly + + + 参数错误 + Para error + + + 添加的数据格式不对 + The added data format is incorrect + + + 无此数据%1 + No such data %1 + + + 获取测点序号信息失败! + Get the point serial number information failed! + + + 缺少xml文件 + Missing xml file + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + 添加不成功 + Add failed + + + 该测点 %1 不是特殊点,不可删除! + The point %1 is not special point,can't be delete! + + + 请选中要同步更新描述的设备 + Please select the device you want to update description synchronously + + + 更新描述完毕! + Update description complete! + + + + EditRelationDlg + + 点类型: + Point type: + + + 添加 + Add + + + 移除 + Remove + + + 确定 + Ok + + + 取消 + Cancel + + + 模拟量 + Analog + + + 模拟量控制 + Analog control + + + 数字量 + Digital + + + 数字量控制 + Digital control + + + 累积量 + Accuml + + + 枚举量 + Mix + + + 枚举量控制 + Mix control + + + 后台测点标志 + Back point flag + + + 前置测点标志 + Fes point flag + + + 警告 + Warnning + + + 不允许表格为空! + The talbe can't be empty! + + + 后台标志不允许重复! + Back flag does not allow duplicates! + + + + ExpressionWidget + + 添加记录 + Add record + + + 删除记录 + Delete record + + + 撤销更改 + Undo change + + + 保存 + Save + + + 添加 + Add + + + 删除 + Delete + + + 函数定义 + Function define + + + 测试 + Test + + + 车站 + Station + + + 专业 + Subsystem + + + 修改记录 + Modify record + + + 计算输出点列表 + The list of calculation output point + + + 输入变量列表 + The list of input variable + + + 所有 + All + + + 链接数据库失败! + Database link failed! + + + 函数定义中,有引用此分组ID:%1,请先删除引用了该分组的函数 + The function definition referenced this group ID %1,please delete the function that references the group first + + + 请选中要添加的分类! + Please select the type want to add! + + + 请选中要删除的函数! + Please select the type want to delete! + + + 链接数据库失败 + Database link failed + + + 计算点中,有引用此函数的输出点:%1,请先删除该计算点 + In calculation point has point referenced to this function:%1,please delete the point first + + + 写入数据库不成功 + Write to database failed + + + 删除成功 + Delete success + + + 保存成功 + Save success + + + 获取车站信息失败! + Get station message failed! + + + 添加失败 + Add failed + + + 添加成功 + Add success + + + 请选中要修改的输出 + Please select the output want to modify + + + 选中的输出不唯一,数据库错误 + Select multiple outputs,database error + + + 修改失败! + Modify failed! + + + 修改成功 + Modify success + + + 删除R失败! + Delete R failed! + + + 请选中对应的输出 + Please select the corresponding output + + + + FesTempWidget + + 属性同步至实例设备 + Synchronize attributes to device instance + + + 添加记录 + Add record + + + 修改 + Modify + + + 复制点 + Copy point + + + 删除记录 + Delete record + + + 操作应用至前置设备 + Operational application to the Fes device + + + 模板点列表 + Template point list + + + 添加应用至前置设备 + Add application to the Fes device + + + 删除应用至前置设备 + Delete application to the Fes device + + + 累积量 + Accuml + + + 模拟量 + Analog + + + 数字量 + Digital + + + 枚举量 + Mix + + + 模拟量控制 + Analog control + + + 数字量控制 + Digital control + + + 枚举量控制 + Mix control + + + 数据块 + Data block + + + 保护定值 + Protection const + + + 前置设备模板 + Fes device template + + + 累积量模板点 + Accuml template point + + + 模拟量模板点 + Analog template point + + + 数字量模板点 + Digital template point + + + 枚举量模板点 + Mix template point + + + 模拟量控制点 + Analog control point + + + 数字量控制点 + Digital control point + + + 枚举量控制点 + Mix control point + + + 导出%1不成功 + Export %1 failed + + + 文件打开不成功! + Open file failed! + + + 导入失败!事务已回滚!原因: + Import failed!The transaction has been rolled back!reason: + + + 导入失败!原因:事务开启失败 + Import failed!reason:Transaction open failed + + + excel文件中没有%1表 + There is no %1 table in the excel file + + + 表格%1中没有%2列 + There is no %2 column in table %1 + + + 设备模板名为空! + Device template name is null! + + + 存在同名模板%1,无法导入 + There is a template with the same name %1,import failed + + + 写入TAG_NAME失败 + Write TAG_NAME failed + + + 写入设备描述失败 + Write device description failed + + + 错误:没有%1表! + Error:no %1 table! + + + 错误:没有此列%1 + Error:no %1 column + + + 请选中要添加测点的模板! + Please select the template to add point! + + + 添加失败 + Add failed + + + 添加成功 + Add success + + + 请选中要修改的模板 + Please select the template to modify + + + 请选中要修改的行 + Please select the line to modify + + + 请选中要复制的模板点 + Please select the template point to copy + + + 复制点失败! + Copy point failed! + + + 消息 + Message + + + 请至少选择一条数据! + Please choose a piece of data + + + 是否删除前置测点? + Do you want to delete the fes points? + + + 删除失败! + Delete failed! + + + 删除成功 + Delete success + + + 添加成功! + Add success! + + + 该模板在数据库中的数据不唯一 + The template's data in the database is not unique + + + 修改成功! + Modify success! + + + 是否删除前置模板? + Do you want to delete the fes template? + + + 链接数据库查询失败 + Database query failed + + + 有以下RTU引用了模板%1: +%2 + 是否强制删除此模板? + The following RTU references the template %1:%2 whether to force delete this template? + + + 删除失败 + Delete failed + + + 删除设备成功 + Delete device success + + + 请选中需要导出的设备 + Please select the device you want to export + + + 保存模板 + Save template + + + 导出模板不成功! + Export template failed! + + + 导出设备模板不成功! +原因:%1 + Export device template failed!reaseon:%1 + + + 保存文件失败! +%1 + Save file failed!%1 + + + 导出成功!导出路径: + %1 + Export success!export path:%1 + + + 模板导入 + Import template + + + 导入失败! +失败文件:%1 +失败原因:%2 + + Import failed! Failed file:%1 Failed reason:%2 + + + 导入成功 + Import success + + + 导入失败 + Import failed + + + 请输入模板所属的专业和类型 + Please enter the subsystem and type belong to template + + + 选择PSC3000导出的转发数据 + Select the forwarding data exported by PSC3000 + + + 未检测到任何设备模板 + No device templates detected + + + 导入失败! +失败原因:%1 + + Import failed!reason:%1 + + + 请选择要实例化的前置模板 + Please select the Fes template to be instantiated + + + 获取模板信息失败! + Get template message failed! + + + 模板信息错误 + Template message error + + + 实例化成功! + Instantiation success! + + + 复制前置设备模板 + Copy Fes device template + + + 数据库链接错误 + Database link error + + + 标签名已存在,请修改 + Tag name already exists,please modify + + + 复制失败! + Copy failed! + + + 复制成功! + Copy success! + + + 未选中模板点 + Template point not selected + + + 选中要添加的设备 + Select a device want to add + + + 添加点失败! + Add point failed! + + + 添加成功! + Add success! + + + 选中要删除的设备 + Select the device want to delete + + + 删除点失败! + Delete point failed! + + + 删除点成功 + Delete point success + + + 删除点成功! + Delete point success! + + + 请先保存修改 + Please save changes first + + + 该列不可编辑 + This column is not editable + + + 该列是主键,不可编辑 + This column is the primary key,cannot be edited + + + 选中要修改的设备 + Select the device want to modify + + + 当前属性无法同步 + Current attributes cannot be synchronized + + + 开始执行批量菜单 + Start executing the batch menu + + + 结束执行批量菜单 + End executing the batch menu + + + 修改失败 + Modify failed + + + 修改成功 + Modify success + + + + FesWidget + + 添加记录 + Add record + + + 修改记录 + Modify record + + + 删除记录 + Delete record + + + Excel导出 + ExcelExport + + + Excel导入 + ExcelImport + + + 添加失败 + Add failed + + + 添加成功 + Add success + + + 修改失败 + Modify failed + + + 修改成功 + Modify success + + + 以下通道设置中有引用该规约,请先删除通道! + + The protocol is referenced in the following channel,please delete the channel first! + + + 有以下FES设备模板挂载在此设备类型,请先FES设备模板 + + The following FES device templates are mounted on this device type,please first handle FES device template + + + 删除失败 + Delete failed + + + 删除成功 + Delete success + + + + KbdAddTempGroupDlg + + 模板组标签名 + Template group tag name + + + 模板组描述 + Template group description + + + 同时添加以下设备模板 + Add the following device template at the same time + + + 间隔信息 + Interval information + + + 断路器 + Breaker + + + 上隔离刀 + Top isolation knife + + + 下隔离刀 + Down isolation knife + + + 接地刀闸 + On ground knife gate + + + 手车 + Handcart + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + 添加失败 + Add failed + + + 消息 + Message + + + + KbdApcAnaWidget + + 添加记录 + Add record + + + 删除记录 + Delete record + + + 消息 + Message + + + 输出测点 %1 格式不正确,请重新输入 + Output point %1 format is incorrect, please re-enter + + + 数据库查询错误 + Database query error + + + 输出测点%1 不存在对应的车站和专业信息 + Output point %1 does not exist corresponding station and subsystem information + + + 超时输出测点 %1 格式不正确 + Point %1 output timeout and format is incorrect + + + 超时输出测点%1 不存在对应的车站和专业信息 + Point %1 output timeout and there is no corresponding station and subsystem information + + + 超时输出测点与输出测点不是同一个车站和专业 + The timeout output point not belong to the same station and subsystem with output point + + + 输出测点或者超时状态输出DI点 格式不正确,请重新输入 + The format of output point or timeout status output DI point is incorrect,please re-enter + + + 不存在对应的车站和专业信息 + There is no corresponding station and subsystem information + + + 所选的输出测点和超时输出测点不是同一个车站 + The selected output point and timeout output point are not in the same station + + + 所选的输出测点和超时输出测点不是同一个专业 + The selected output point and timeout output point are not in the same subsystem + + + 添加失败 + Add failed + + + 是否删除? + Delete or not? + + + 删除失败 + Delete failed + + + 修改失败 + Modify failed + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + 回滚事务失败! + Rollback transaction failed! + + + + KbdApcDigWidget + + 添加记录 + Add record + + + 删除记录 + Delete record + + + 消息 + Message + + + 输出测点 %1 格式不正确,请重新输入 + The format of output point %1 is incorrect,please re-enter + + + 数据库查询错误 + Database query error + + + 输出测点%1 不存在对应的车站和专业信息 + Output point %1 does not exist corresponding station and subsystem information + + + 添加失败 + Add failed + + + 是否删除? + Delete or not? + + + 删除失败 + Delete failed + + + 修改失败 + Modify failed + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + 回滚事务失败! + Rollback transaction failed! + + + + KbdBackPointPatch + + + Dialog + Dialog + + + + 位置: + Location: + + + + 专业: + Subsystem: + + + + 设备组: + Dev group: + + + + 设备: + Device: + + + + 点类型: + Point type: + + + + 前置RTU: + Fes RTU: + + + + 查询 + Search + + + + 描述包含字符: + Charactors contained by description: + + + + 批量修改后台测点 + Batch modify backstage points + + + + 模拟量 + Analog point + + + + 数字量 + Digital point + + + + 累积量 + Accuml point + + + 枚举量 + Mix point + + + + 混合量 + Mix + + + + 基础属性 + Base attributes + + + + 前置属性 + Fes attributes + + + + 限值属性 + Limit attributes + + + + 控制属性 + Control attributes + + + + %1 选中行 从0开始自增 + %1 selected line increments from 0 + + + + %1 选中行 从1开始自增 + %1 selected line increments from 1 + + + + %1 选中行 自定义自增 + %1 selected line increments Customly + + + + %1 选中行 取相同值 + %1 selected line set same value + + + + %1 选中行 查找与替换 + %1 selected line find and replace + + + + + + + + + + + + + + + + + 消息 + Message + + + + + %1 +文本格式不对 + %1\ntext format is wrong + + + + + + 该列不可编辑 + This column is not editable + + + + + + 该列是主键,不可编辑 + This column is not editable due to as the key + + + + 开始执行自增菜单 + Start executing the self-increment menu + + + + 自增菜单结束 + Self-increment menu end + + + + + + 修改成功! + Modify success! + + + + 开始执行取相同值菜单 + Start executing the same value menu + + + + 取相同值菜单结束 + Execute the same value menu end + + + + 开始执行查找与替换菜单 + Start executing the find and replace menu + + + + 查找与替换菜单结束 + Execute the find and replace menu end + + + + + + + 所有 + All + + + + 取相同值 + set same value + + + + 请输入 + Please enter + + + + KbdBatchFesDevDlg + + 批量实例化 + Batch instantiation + + + 批量实例设备 + Batch instantiation device + + + 批量设置 + Batch setting + + + 批量实例数量 + Batch instantiation number + + + 批量起始数字 + Batch start number + + + 批量标签名格式(%1表示占位符) + Batch tag name format(%1 represents a placeholder) + + + 示例:tagName%1 + Example:tagName%1 + + + 批量描述格式(%1表示占位符) + Batch description format(%1 represents a placeholder) + + + 示例:#%1电表 + Example:#%1ammeter + + + 实例化失败! + Instantiation failed! + + + 提交事务失败,已回滚 + Submit transaction failed,rolled back + + + 批量标签名格式为空 + Batch setting tag name null + + + 批量标签名格式中含有非法字符.号 + Batch tag name format contains illegal characters.char + + + 批量标签名格式中没有包含占位符%1 + Batch tag name format doesn't contain placeholder %1 + + + 批量描述格式为空 + Batch setting description null + + + 批量描述格式中含有非法字符.号 + Batch description format contains illegal characters.char + + + 批量描述格式中没有包含占位符%1 + Batch description format doesn't contain placeholder %1 + + + 请先选择RTU + Please select RTU first + + + 查询RTU信息失败! + Query RTU message failed! + + + 消息 + Message + + + + KbdBatchInstanceDlg + + 批量实例化 + Batch instantiation + + + 批量处理未完成 + Batch processing is not completed + + + 批量实例设备 + Batch instantiation device + + + 后台设备批量设置 + Batch setting backstage device + + + 批量实例数量 + Batch instantiation number + + + 批量起始数字 + Batch start number + + + 批量标签名格式(%1表示占位符) + Batch tag name format(%1 represents a placeholder) + + + 示例:tagName%1 + Example:tagName%1 + + + 批量描述格式(%1表示占位符) + Batch description format(%1 represents a placeholder) + + + 示例:#%1电表 + Example:#%1ammeter + + + 同时在前置中实例化对应设备 + Simultaneously instantiate the corresponding device in Fes + + + 前置批量设置 + Batch setting Fes + + + 选择同时要实例的前置RTU + Select the Fes RTU that you want to instantiate + + + 实例化失败! + Instantiation failed! + + + 提交事务失败,已回滚 + Submit transaction failed,rolled back + + + 实例化成功! + Instantiation success! + + + 批量标签名格式为空 + Batch setting tag name null + + + 批量标签名格式中含有非法字符.号 + Batch tag name format contains illegal characters.char + + + 批量标签名格式中没有包含占位符%1 + Batch tag name format doesn't contain placeholder %1 + + + 批量描述格式为空 + Batch setting description null + + + 批量描述格式中含有非法字符.号 + Batch description format contains illegal characters.char + + + 批量描述格式中没有包含占位符%1 + Batch description format doesn't contain placeholder %1 + + + 没有选择前置要实例的RTU,无法同时在前置中实例化对应设备 +请先选择! + Not select RTU that Fes want to instance,cannot instantiate the corresponding device in Fes at the same time\nPlease select first! + + + 查询数据库失败 + Database query failed + + + 所选择的后台模板的属性 二次设备模板名 为空 + The properties of the selected backsatge template the secondary device template name is empty + + + 关联失败!数据库链接错误! + Association failed!database link error! + + + 关联失败!不存在相同名称的前置设备,请手动关联! + Association failed!there is no Fes device with the same name,please manually associate! + + + 关联失败!存在多个相同名称的前置设备,请手动关联 + Association failed!there are many Fes device with the same name,please manually associate + + + 关联失败! + Association failed! + + + 关联失败!启动回滚 + Association failed!rolled back + + + 车站没有选择,请在属性框中选择 + No station selected, please select in the property box + + + 专业没有选择,请在属性框中选择 + No subsystem selected, please select in the property box + + + 获取RTU信息失败! + Get RTU message failed! + + + 消息 + Message + + + + KbdCSVReader + + json文件打开不成功 + Open json file failed + + + csv文件打开不成功 + Open csv file failed + + + xlsx文件打开不成功! + Open xlsx file failed! + + + csv文件数据错误,有行数据大小小于2 + Has error in csv file,the line data more than or less than 2 + + + 临时文件保存失败%1 + Save temporary file failed %1 + + + 子设备ID + Sub device ID + + + 设备ID + Device ID + + + 属于的设备ID + Device ID belong to + + + 数据项列数不够 + Data item doesn't have enough columns + + + 无此表单%1 + No such form %1 + + + 写错误%1:%2 + Write error%1:%2 + + + 保存CSV文件不成功%1 + Save CSV file failed %1 + + + + KbdChanWidget + + 获取通道号不成功! + Get channel number failed! + + + 获取车站信息和专业信息失败 + Get station and subsystem message failed + + + 添加失败 + Add failed + + + 添加成功 + Add success + + + 写入失败,原因:获取车站信息和专业信息失败 + Write failed,reason:get station and subsystem message failed + + + 修改失败 + Modify failed + + + 修改成功 + Modify success + + + 有以下RTU挂载在此通道,请先删除RTU + + The following RTUs are mounted on this channel,please delete RTU first + + + 删除失败 + Delete failed + + + 删除成功 + Delete success + + + 请选中要复制的行 + Please select the line want to copy + + + 复制 + Copy + + + 复制数量 + Copy number + + + 复制失败 + Copy failed + + + 复制成功 + Copy success + + + + KbdCreateDevByFES + + 按照前置设备实例化 + Instantiate according to the Fes device + + + 下一步 + Next + + + 取消 + Cancel + + + 完成 + Complete + + + 设备组名称 + Device group name + + + 设备组描述 + Device group description + + + 模板 + Template + + + 对应的设备 + Corresponding device + + + 选择模板组 %1 对应的前置设备(以光标为锚点进行添加,或者拖拽添加) + Select template group %1 corresponding Fes device(Add with the cursor as an anchor, or drag and drop to add) + + + 位置 + Location + + + 专业 + Subsystem + + + 筛选 + Filter + + + 添加时带RTU前缀 + Adding with RTU prefix + + + 添加>> + Add>> + + + >替换< + >Replace< + + + <<删除 + <<Delete + + + 选择责任区 + Select area of responsibility + + + 添加记录 + Add record + + + 删除记录 + Delete record + + + 撤销更改 + Undo change + + + 保存 + Save + + + 责任区表格未保存! + Not saved reesponsibility area table! + + + 请选择责任区 + Please select reesponsibility area + + + 正在处理,请稍后.... + Processing,waiting... + + + 设备组为空!请先添加设备组 + Device group is null!please add device group first + + + 第%1行的设备组名称为空,请删除或修改! + The device group name in line %1 is empty,please delete or modify it! + + + 设备组名称%1重复,请删除或修改! + The device group name %1 repeat,please delete or modify it! + + + 每次添加只能选择相同模板的设备! + Add devices that can only select the same template each time! + + + 未找到前置设备所对应的列! + The column corresponding to the Fes device was not found! + + + 表格中光标所处的位置不是设备模板所对应的位置, +请移动光标到正确的位置 + 表格中光标所处的位置不是设备模板所对应的位置, +请移动光标到正确的位置 + The position of the cursor in the table is not the location corresponding to the device template. \r\nPlease move the cursor to the correct position + + + 请选择要替换的单元格 + Please select the cell to be replaced + + + 按照前置设备批量生成成功 + Batch generation success according to the Fes device + + + 消息 + Message + + + + KbdCtrlActWidget + + 添加记录 + Add record + + + 修改记录 + Modify record + + + 删除记录 + Delete record + + + 撤销更改 + Undo change + + + 保存 + Save + + + 请选中要添加的专业 + Please select the subsystem want to add + + + 动作名%1 + Action name %1 + + + 组名不允许为空! + Group name can't be empty! + + + 修改失败 + Modify failed + + + 修改成功 + Modify success + + + 请选中要删除的数字量文本 + Please select the digital point text want to delete + + + 删除失败 + Delete failed + + + 删除成功 + Delete success + + + 请选中对应的控制动作组 + Please select corresponding control action group + + + 无法获得分量数 + Unable to get the number of components + + + 消息 + Message + + + 此次修改失败,已启动回滚! + This modification failed,rollback started! + + + + KbdDevAndFesWidget + + 设备 + Device + + + 关联状态 + Association status + + + 前置 + Fes + + + RTU + RTU + + + 前置设备 + Fes device + + + 前置测点 + Fes point + + + 清空所选测点的关联 + Clear the association of selected points + + + 移除设备组 + Remove device group + + + 清空所选设备的关联(包括输入输出) + Clear associations for selected devices(including input and output) + + + 同步所选设备的前置测点描述 + Synchronize the Fes point description of the selected device + + + 刷新设备组关联状态 + Refresh device group association status + + + 刷新 + Refresh + + + 已关联:%1,未关联:%2 + Associated: %1,not associated: %2 + + + 请选中设备组 + Please select the device group + + + 所选设备组已经存在,请重新选择 + The selected device group already exists,please re-select + + + 请选中设备组进行删除 + Please select the device group to delete + + + 请选择相同类型的点,控制点与普通测点不要同时选中 + Please select the same type of point,the control point and the common measuring point should not be selected at the same time + + + 所选测点类型与表格中的测点类型不一致 + The selected type of point is inconsistent with the type of point in the table + + + 请选中模拟量的测点类型 + Please select the type of analog point + + + 请拖拽到前置分量上 + Please drag to the Fes component + + + 请拖拽到输出分量上 + Please drag to the output component + + + 更新成功 + Update success + + + 请选中累积量的测点类型 + Please select the type of accuml point + + + 请选中数字量的测点类型 + Please select the type of digital point + + + 请选中混合量的测点类型 + Please select the type of mix point + + + 清空执行完毕! + Clear execution completed! + + + 请选中要同步更新描述的设备 + Please select the device you want to update description ynchronously + + + 更新描述完毕! + Update description complete! + + + 关联失败 + Association failed + + + 关联成功 + Association success + + + 消息 + Message + + + + KbdDevInfo + + 设备实例 + Device instance + + + 搜索... + Searching... + + + 全选 + Select all + + + + KbdFesDevDlg + + 选择前置设备(设备的原有关联关系不覆盖,如需覆盖请先清空关联关系) + Select the Fes device.(the original association of the device is not overwritten.If you need to overwrite, clear the association first) + + + 已选中关联设备 + Associated device selected + + + 后台设备 + Backstage device + + + 前置设备 + Fes device + + + 关联 + Associate + + + 取消 + Cancel + + + 关联失败! + Associate faied! + + + 关联成功! + Associate success! + + + 此次修改失败,已启动回滚! + This modification failed,the rollback has started! + + + 消息 + Message + + + + KbdFesDevTempDlg + + 选择前置设备模板 + Select Fes device template + + + + KbdFesDevWidget + + 位置 + Location + + + 专业 + Subsystem + + + RTU + RTU + + + 实例化设备 + Instantiated device + + + 修改设备 + Modify device + + + 删除设备 + Delete device + + + 刷新 + Refresh + + + 前置设备 + Fes device + + + 所有 + All + + + 请先选择RTU + Please select RTU first + + + 查询RTU信息失败! + Query RTU message failed! + + + 实例化成功! + Instantiation success! + + + 请选中对应设备! + Please select the corresponding device! + + + 修改成功! + Modify success! + + + 删除设备失败! + Delete device failed! + + + 删除设备成功! + Delete device success! + + + 消息 + Message + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + + KbdFesPointDlg + + + 前置测点检索器 + Fes point searcher + + + + 位置 + Location + + + + 专业 + Subsystem + + + + RTU + RTU + + + + 点类型 + Point type + + + + 标签名 + + + + + 模拟量 + Analog + + + + 数字量 + Digital + + + + 累积量 + Accuml + + + + 混合量 + Mixed Quantity + + + + 混合量控制 + Mixed Quantity Control + + + 枚举量 + Mix + + + + 模拟量控制 + Analog control + + + + 数字量控制 + Digital control + + + 枚举量控制 + Accuml control + + + + KbdFesPointPatch + + + Dialog + Dialog + + + + 位置: + Location: + + + + 专业: + Subsystem: + + + + RTU: + RTU: + + + + 设备: + Device: + + + + 点类型: + Point type: + + + + 查询 + search + + + + 描述包含字符: + Characters contained in description: + + + + 批量修改前置测点 + Batch modify Fes points + + + + 模拟量 + Analog point + + + + 数字量 + Digital point + + + + 累积量 + Accuml point + + + 枚举量 + Mix point + + + + 模拟量控制 + Analog control point + + + + 数字量控制 + Digital control point + + + 枚举量控制 + Mix control point + + + + %1 选中行 从0开始自增 + %1 selected line increments from 0 + + + + %1 选中行 从1开始自增 + %1 selected line increments from 1 + + + + %1 选中行 自定义自增 + %1 selected line increments Customly + + + + %1 选中行 取相同值 + %1 selected line set same value + + + + %1 选中行 查找与替换 + %1 selected line find and replace + + + + + + + + + + + + + + + + + 消息 + Message + + + + + %1 +文本格式不对 + %1 tet format incorrect + + + + + + 该列不可编辑 + This column is not editable + + + + + + 该列是主键,不可编辑 + This column is not editable due to as key + + + + 开始执行自增菜单 + Start executing the self-increment menu + + + + 自增菜单结束 + Executing the self-increment menu end + + + + + + 修改成功! + Modify success! + + + + 开始执行取相同值菜单 + Start executing the same value menu + + + + 取相同值菜单结束 + Executing the same value menu end + + + + 开始执行查找与替换菜单 + Start executing the find and replace menu + + + + 查找与替换菜单结束 + Executing the find and replace menu end + + + + + + 所有 + All + + + + 混合量 + Hybrid Quantity + + + + 混合量控制 + Hybrid Quantity Control + + + + 取相同值 + Set same value + + + + 请输入 + Please enter + + + + KbdFesPointWidget + + 位置 + Location + + + 专业 + Subsystem + + + RTU + RTU + + + 添加记录 + Add record + + + 修改 + Modify + + + 删除记录 + Delete record + + + 刷新 + Refresh + + + 添加设备 + Add device + + + 修改设备 + Modify device + + + 删除设备 + Delete device + + + 导入PCS3000设备 + Import PCS3000 device + + + 按照设备ID重排规约参数1 + Reorder parameter 1 according to device ID + + + 前置测点 + Fes point + + + 累积量 + Accuml point + + + 模拟量 + Analog point + + + 数字量 + Digital point + + + 模拟量控制 + Analog control point + + + 数字量控制 + Digital control point + + + 数据块 + Data block + + + 保护定值 + Protection const value + + + 查询RTU信息失败! + Query RTU message failed! + + + 请先选择前置设备 + Please select Fes device first + + + 获取RTU信息失败! + Get RTU message failed! + + + 添加失败 + Add failed + + + 修改记录 + Modify record + + + 复制记录 + Copy record + + + 混合量 + Mix point + + + 混合量控制 + Mix control point + + + 请选择要添加的RTU + Please RTU to add + + + 数据库链接出错 + Database link error + + + 添加成功 + Add success + + + 请选中对应设备! + Please select corresponding device! + + + 数据库链接错误,请重新打开软件 + Database link error,please reopen the software + + + 修改成功! + Modify success! + + + 是否删除前置设备? + Whether to delete Fes device? + + + 删除前置设备失败 + Delete Fes device failed + + + 删除设备成功! + Delete device succuss! + + + 请选择要导入的RTU + Please select RTU want to import + + + 选择PSC3000导出的转发数据 + Select the forwarding data exported by PSC3000 + + + 修改失败 + Modify failed + + + 修改成功 + Modify success + + + 复制 + Copy + + + 复制数量 + Copy number + + + 获取最大规约参数不成功! + Get the max res para failed! + + + 获取最大点号不成功! + Get the max dot no failed! + + + 获取最大设备点序号不成功! + Get the max device seq no failed! + + + 复制失败 + Copy failed + + + 复制成功 + Copy success + + + 是否删除前置测点? + Do you want to delete the Fes points? + + + 删除失败! + Delete failed! + + + 删除成功 + Delete success + + + 点号不支持批量修改 + The dot number does not support batch modification + + + 请选择要排序的RTU + Please select the RTU to sort + + + 是否排序? + Whether to sort? + + + 排序失败 + Sort failed + + + 排序成功 + Sort success + + + 消息 + Message + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + + KbdFesTempDlg + + 全选 + Select all + + + 反选 + Select Inverse + + + 无 + NULL + + + + KbdFesTempPointModifyDlg + + 修改前置模板测点 + Modify the Fes template point + + + 勾选更改 + Check the change + + + 修改应用至前置设备 + Modify and apply to the Fes device + + + 仅修改模板点 + Modify template points only + + + 取消 + Cancel + + + 当前属性表未关联相应模型! + The current attribute table is not associated with the corresponding model! + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + 修改失败 + Modify failed + + + 修改成功 + Modify success + + + 测点模型为空 + The point model is empty + + + 未勾选任何属性 + Unchecked any attributes + + + 选中要修改的设备 + Select devices want to modify + + + 更新失败! + Update failed! + + + 更新成功! + Update success! + + + 消息 + Message + + + + KbdForwardBackWidget + + 转发位置: + Forward location: + + + 转发专业: + Forward subsystem: + + + 转发RTU: + Forwarding RTU: + + + 导出转发表 + Export forwarding table + + + 刷新 + Refresh + + + 模拟量 + Analog + + + 模拟量控制 + Analog control + + + 单点数字量 + Single digital + + + 双点数字量 + Double digital + + + 数字量控制 + Digital control + + + 累积量 + Accuml + + + 混合量 + Mix + + + 混合量控制 + Mix control + + + <<添加 + << add + + + <<插入 + << insert + + + <<全部添加 + << add all + + + 设备组列表 + Device group list + + + 位置 + Location + + + 专业 + Subsystem + + + 全选 + Select all + + + 反选 + Select reverse + + + 全不选 + Select none + + + 测点列表 + Point list + + + 数字量 + Digital + + + 双点数字量只能挑选数字量或数字量控制 + Double digital can only select digital or digital control + + + 转发RTU为空! + Forward RTU is empty + + + 消息 + Message + + + 获取行数据失败! + Get rowData failed! + + + 添加失败! + Add failed! + + + 提交事务失败,已回滚 + Commit transaction failed,rolled back + + + 开启事务失败! + start transaction failed! + + + 添加成功! + Add success! + + + 请选中一行作为插入位置 + Please select one line to insert + + + 后移失败! + Mover back failed! + + + 插入成功! + Insert success! + + + 选择 + Select + + + 点描述 + Point description + + + 所属设备 + Owned equipment + + + 点:%1不是双点,不允许添加,点标签是:%2! + Point:%1 not double,can't be added,the tag_name is:%2! + + + 此次修改失败,已启动回滚! + Modify failed,rolled back! + + + 开启事务失败! + start transaction failed! + + + 修改成功 + Modify success + + + 导出文件 + Export file + + + *.xlsx + *.xlsx + + + 导出成功!文件保存在:%1 + Export success!file save at:%1 + + + %1 中的表的列数和描述数量不一致! + The number of column and description inconsistent in %1 table! + + + 获取%1 信息失败! + Get %1 message failed! + + + + KbdForwardWidget + + RTU列表 + RTU list + + + 车站 + Location + + + 专业 + Subsystem + + + 设备列表 + Device list + + + 测点列表(挑点顺序是鼠标单击选中的顺序) + Point list(The order of picking points is the order in which the mouse clicks) + + + 批量模式 + Batch mode + + + 批量挑点 + Batch pick points + + + 测点类型 + Point type + + + >>添加 + >>Add + + + >>插入 + >>Insert + + + >>替换<< + >>replace<< + + + 删除<< + Delete<< + + + 转发RTU: + Forwarding RTU: + + + 所有编号从0自增 + All numbers increase from 0 + + + 所有远动号从0自增 + All telecontrol numbers increase from 0 + + + 修改所有系数 + Modify all coefficients + + + 修改所有修正值 + Modify all correction values + + + 导入转发表 + Import forwarding table + + + 导出转发表 + Export forwarding table + + + 所有 + All + + + 累积量 + Accuml point + + + 模拟量 + Analog point + + + 数字量 + Digital point + + + 模拟量控制 + Analog control point + + + 数字量控制 + Digital control point + + + 数据库链接错误 + Database link error + + + 添加失败 + Add failed + + + 请先选中要插入的位置 + Please select the location to insert first + + + 数据库链接出错 + Database link error + + + 插入失败 + Insert error + + + 插入成功 + Insert success + + + 两边要替换的数量不一致 + The number of replacements on both sides is inconsistent + + + 替换失败 + Replace failed + + + 替换成功 + Replace success + + + 未选中要删除的点 + The point you want to delete is not selected + + + 删除失败 + Delete failed + + + 删除成功 + Delete success + + + 修改成功! + Modify success! + + + 修改失败 + Modify failed + + + 修改成功 + Modify success + + + %1没有系数 + %1no coefficient + + + 输入 + Input + + + 系数 + Coefficient + + + %1没有修正值 + %1no correction value + + + 修正值 + Correction value + + + 导出文件 + Export file + + + *.xlsx + *.xlsx + + + 正在处理,请稍后.... + Processing,waiting... + + + 请选择导入104转发表文件 + Please select import 104 forwarding table file + + + 请选中要挑点的设备 + Please select the device you want to pick + + + 挑点成功 + Pick points success + + + 消息 + Message + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + + KbdForwardWizard + + 批量挑点导航 + Batch picking navigation + + + 下一步 + Next + + + 取消 + Cancel + + + 完成 + Complete + + + 未挑选任何测点 + No points picked + + + 数据库链接错误 + Database link error + + + 数据库链接出错 + Database link error + + + 事务提交失败,启动回滚 + This modification failed,rollback has started + + + 开启事务失败 + Open the transaction failed + + + 挑点失败 + Pick points failed + + + 累积量 + Accuml point + + + 模拟量 + Analog point + + + 数字量 + Digital point + + + 模拟量控制 + Analog control point + + + 数字量控制 + Digital control point + + + 以设备 %1 为模板挑选测点 + Device %1 picks a point as the template + + + 应用同样的挑点模式到以下设备中 + Apply the same pick pattern to the following devices + + + RTU列表 + RTU list + + + 车站 + Location + + + 专业 + Subsystem + + + 设备列表 + Device list + + + 添加>> + Add>> + + + <<删除 + <<Delete + + + 所选设备 + Devices selected + + + 所有 + All + + + 选中设备:%1与挑点个数不一致, +请确保所选中设备中包含所挑的点一样的序号 + 选中设备:%1与挑点个数不一致, +请确保所选中设备中包含所挑的点一样的序号 + Select device: %1 is inconsistent with the number of picked points,\r\n Please make sure that the selected device contains the same number as the selected point + + + 设备%1中不存在序号为%2的点 + There is no point with the sequence number %2 in device %1 + + + 消息 + Message + + + + KbdGenerateFesDlg + + 生成与后台设备模板一样的前置模板 + Generate a Fes template like the backstage device template + + + 请输入前置模板属性 + Please enter attributes of Fes template + + + 生成 + Generate + + + 取消 + Cancel + + + 提交事务失败,已回滚 + Commit transaction failed,rolled back + + + 生成成功 + Generate success + + + 消息 + Cancel + + + + KbdGenerateTempWizard + + 从前置模板添加测点 + Add a point from the Fes template + + + 下一步 + Next + + + 取消 + Cancel + + + 完成 + Complete + + + 挑选前置模板 + Select Fes template + + + 专业 + Subsystem + + + 设备类型 + Device type + + + 挑选模板测点 + Select template point + + + 模拟量控制 + Analog control + + + 数字量 + Digital point + + + 模拟量 + Analog point + + + 数字量控制 + Digital control + + + 累积量 + Accuml point + + + 枚举量 + Mix point + + + 枚举量控制 + Mix control + + + 全选 + Select all + + + 反选 + Select inverse + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + 所有 + All + + + 消息 + Message + + + + KbdImportDevGroupDlg + + 位置 + Location + + + 专业 + Subsystem + + + RTU + RTU + + + 遥控类型 + path + + + 路径 + path + + + 获取位置标签失败! + get location fail + + + 获取专业标签失败! + get subsystem fail + + + 获取RTU号失败! + get RTU fail + + + 打开文件 + Open file + + + 保存文件 + Save file + + + 消息 + Message + + + + KbdImportDlg + + 导入前置与后台映射表 + Import Fes and backstage mapping tables + + + 浏览 + Browse + + + 导入 + Import + + + 取消 + Cancel + + + 警告 + Warnning + + + 导入未完成! + Import not completed! + + + 选择要导入的文件 + Select the file want to import + + + 预计耗时%1分钟,耗时仅供参考,实际情况可能有偏差! + Expected time consuming %1 minutes,Actual time may be biased! + + + 消息 + Message + + + + KbdInstPluginDlg + + 套件 + Plugin + + + 位置 + Location + + + 专业 + Subsystem + + + 设备组自动创建RTU + Device group create RTU automatic + + + RTU + RTU + + + 通道 + channel + + + 设备分组 + Device group + + + 添加记录 + Add record + + + 同时在所选设备组中批量实例 + Also batch instances in the selected device group + + + 起止编号 + Starting and ending number + + + 至 + To + + + 获取通道号不成功! + Get channel number failed! + + + 请先选择位置和专业 + Please select location and subsystem first + + + 获取车站标签信息失败 + Get location tag name failed + + + 添加设备组 + Add device group + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + 设备组自动创建通道及RTU + Device group create channel and RTU automatic + + + 批量添加 + Batch add + + + 获取车站信息和专业信息失败 + Get station and subsystem message failed + + + 设备组数量: + Device Group Number + + + 消息 + Message + + + 未选择要实例化的RTU + RTU not selected for instantiation + + + 未选择要实例化的通道 + Not select channel! + + + 未选择要实例化的设备组 + Device group not selected for instantiation + + + 未选择套件 + Kits not selected + + + 批量编号的起始数字大于结束数字 + The starting number of the batch number is greater than the ending number + + + 获取通道号不成功 + Get channel number failed + + + 创建RTU失败,已启动回滚! + create RTU failed! + + + 实例化成功! + Instantiation success! + + + + KbdLockDefineWidget + + 消息 + Message + + + 闭锁函数修改未提交,是否提交到数据库? + Interlock function modification is not submitted, whether submit to the database? + + + 添加 + Add + + + 删除 + Delete + + + 闭锁函数定义 + Interlock fucntion definition + + + 保存 + Save + + + 请选中要添加的专业! + Please selct the subsystem to add! + + + 请选中要删除的闭锁函数! + Please select the interlock function to delete! + + + 写入数据库不成功 + Write to database failed + + + 删除成功 + Delete success + + + 保存成功 + Save success + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + + KbdLockParaWidget + + 设备实例 + Device instance + + + 位置: + Location: + + + 专业: + Subsystem: + + + 添加记录 + Add record + + + 修改记录 + Modify record + + + 删除记录 + Delete record + + + 添加成功 + Add success + + + 修改成功 + Modify success + + + 写入数据库不成功 + Write into database failed + + + 删除成功 + Delete success + + + 消息 + Message + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + + KbdOutLineWidget + + 添加记录 + Add record + + + 删除记录 + Delete record + + + 撤销更改 + Undo change + + + 保存 + Save + + + 删除失败 + Delete failed + + + 删除成功 + Delete success + + + 消息 + Message + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + + KbdPage + + 上一页 + Previous page + + + 下一页 + Next page + + + 当前总页数是范围是1-%1,%2是非法值 + The current total number of pages is a range of 1-%1, and %2 is an illegal value + + + 已到达首页 + Have arrived first page + + + 已到达尾页 + Have arrived last page + + + 消息 + Message + + + + KbdPageWidget + + 上一页 + Previous page + + + 下一页 + Next page + + + 当前总页数是范围是1-%1,%2是非法值 + The current total number of pages is a range of 1-%1, and %2 is an illegal value + + + 已到达首页 + Have arrived first page + + + 已到达尾页 + Have arrived last page + + + 消息 + Message + + + + KbdPointDlg + + 位置 + Location + + + 专业 + Subsystem + + + 设备组 + Device group + + + 点类型 + Point type + + + 模拟量 + Analog point + + + 数字量 + Digital point + + + 累积量 + Accuml point + + + 混合量 + Mix point + + + + KbdPointFromTextDlg + + 添加设备模板测点 + Add device template points + + + 模拟量 + Analog point + + + 数字量 + Digital point + + + 累计量 + Accuml point + + + 混合量 + Mix point + + + 全选 + Select all + + + 反选 + Select inverse + + + 事务提交失败,启动回滚 + Transaction submit failed,rollback has started + + + 添加失败 + Add failed + + + 消息 + Message + + + + KbdPointTypeDlg + + 选择测点进行属性刷新 + Select points to refresh attributes + + + 位置 + Location + + + 专业 + Subsystem + + + 设备组 + Device group + + + 点类型 + Point type + + + 累积量 + Accuml point + + + 模拟量 + Analog point + + + 数字量 + Digital point + + + 混合量 + Mix point + + + 数据库链接错误 + Database link error + + + 请选择要应用刷新的点 + Please select points to apply refresh + + + 事务提交失败,启动回滚 + Transaction submit failed,rollback has started + + + 添加失败 + Add failed + + + 消息 + Message + + + + KbdPsc3000Dlg + + 导入PCS3000数据 + Import PCS3000 data + + + 取消 + Cancel + + + 下一步 + Next + + + 完成 + Complete + + + 消息 + Message + + + 本操作将覆盖此RTU %1下的所有设备数据 +以及套件对应的后台设备数据 +是否更新? + 本操作将覆盖此RTU %1下的所有设备数据 +以及套件对应的后台设备数据 +是否更新? + This operation will overwrite all device data under this RTU %1\r\nAnd the backsatege device data corresponding to the kit \r\nUpdate it? + + + 导入成功 + Import success + + + 确定取消导入? + Are you sure to cancel import? + + + 套件构成 + Plugin composition + + + 添加套件 + Add plugin + + + 请选择套件所在行进行删除 + Please select the row of the kit to delete + + + 清除分配的设备 + Clear assigned devices + + + 重置列表 + Reset list + + + 套件 + Plugin + + + 套件中的前置模板 + Fes templates in plugin + + + 分配的前置设备 + Fes device sssigned + + + 设备组名 + Device group name + + + 设备组描述 + Device group description + + + 设备列表 + Device list + + + 前置设备标签 + Fes device tag name + + + 前置设备描述 + Fes device decription + + + 隐藏已分配的设备 + Hide assigned devices + + + 隐藏已导入的设备 + Hide imported devices + + + 所选设备分配至通用套件 + Selected device assigned to universal plugin + + + 所选设备分配至指定套件 + Selected device assigned to designated plugin + + + 选择责任区 + Select responsibility area + + + 添加记录 + Add record + + + 删除记录 + Delete record + + + 撤销更改 + Undo change + + + 保存 + Save + + + xlsx文件打开不成功! + Open xlsx file failed! + + + xlsx文件中无设备报表! + No device report in xlsx file! + + + 表格%1中没有%2列 + There is no %2 column in table %1 + + + 重新写入xlsx文件不成功 + Rewrite into xlsx file failed + + + 请勿重复分配设备:%1 + Please not re assign device:%1 + + + 查询通道标签名失败! + Select channel tag_name failed! + + + 查询通道下所有RTU标签名失败! + Select all RTU tag_name in one channel failed! + + + 查询设备组总数失败! + Select device group count failed! + + + 请拖拽到分配的前置设备列 + Please drag to the assigned Fes device column + + + 请勿重复分配 + Please not re assign + + + 请选择要清除的分配前置设备列 + Please select the distribution Fes device column to be cleared + + + 无法链接数据库 + Database link error + + + 套件中不存在标签名为default的通用套件 + There is no universal plugin with the tag name default in the kit + + + 没有构建任何套件 + Not build any plugin + + + 存在空白套件行,请删除 + Blank kit line exists,please delete + + + 分配前置设备列存在空白,请分配对应的设备 + There is a blank in the distribution Fes device column.Please assign the corresponding device + + + 设备组标签存在空白,请填写 + The device group tag name is blank.Please fill in + + + 设备组描述存在空白,请填写 + The device group decription is blank.Please fill in + + + 分配的前置设备列,有重复分配的前置设备,请重新分配 %1 + The assigned Fes device column has duplicated Fes devices, please reassign %1 + + + 存在重复的设备组名%1 + Duplicate device group name%1 + + + 右边的PSC3000设备中,存在重复的前置设备标签%1 + In the PSC3000 device on the right,there is a duplicate Fes device tag name %1 + + + 数据库错误,无法查询厂站信息 + Database error,unable to query location message + + + 存在标签名冲突的前置设备 +%1 + The tag name conflicted in Fes device %1 + + + 存在同一个通道内设备ID冲突的前置设备 +%1 + The Fes device ID conflicted in one channel %1 + + + 存在前置模板冲突,请修改对应前置模板的标签名 +%1 + Fes template conflict, please modify the tag name of the corresponding Fes template %1 + + + 存在设备ID冲突的前置设备 +%1 + 存在设备ID冲突的前置设备 +%1 + The device ID conflicted in Fes device %1 + + + 存在未分配的前置设备,是否继续导入? + There is an unassigned Fes device,continue importing? + + + 未选择责任区 + Not select responsibility area + + + + KbdRelationFesDlg + + 删除 + Delete + + + 删除所有没有关联前置设备的行 + Delete all rows that do not have associated Fes devices + + + 提示 + Prompt + + + 关联 + Association + + + 取消 + Cancel + + + 后台设备标签 + Backstage device tag name + + + 后台设备描述 + Backstage device description + + + 前置设备标签 + Fes device tag name + + + 前置设备描述 + Fes device description + + + 消息 + Message + + + 处理未完成,请等待 + Processing,please waiting + + + 部分后台设备没有对应的前置设备,请填写完整 +或者删除没有关联前置设备的行 + 部分后台设备没有对应的前置设备,请填写完整 +或者删除没有关联前置设备的行 + Some backstage devices do not have corresponding Fes devices, please fill in the full\r\nor delete rows that are not associated with the Fes device + + + + KbdRtuListWidget + + 请先选择要添加的车站与专业 + Please station and subsystem want to add + + + 添加RTU + Add RTU + + + 获取通道号不成功 + Get channel number failed + + + 添加失败 + Add failed + + + 请选中要修改的RTU + Please select the RTU want to modify + + + 修改RTU + Modify RTU + + + 修改成功 + Modify success + + + 消息 + Message + + + 删除RTU将同时删除该RTU下的设备, +是否删除? + Delete RTU will delete devices belong to it at the same time,do it? + + + 删除失败 + Delete failed + + + 删除成功 + Delete success + + + 请选中要复制的行 + Please select the line want to copy + + + 复制 + Copy + + + 复制数量 + Copy number + + + 获取通道号不成功! + Get channel number failed! + + + 复制失败 + Copy failed + + + 复制成功 + Copy success + + + + KbdSelctLockParaDlg + + 数字量出口 + Digital point exit + + + 模拟量出口 + Analog point exit + + + 在本车站,本专业中挑选具有相同描述的测点 + select the points with the same description at this station and subsystem + + + <<删除 + <<Delete + + + 该测点 +已挑选 + 该测点 +已挑选 + The point has been selected + + + 消息 + Message + + + 请先选中测点 + Please select point first + + + + KbdSelectDevDlg + + 导出前置与后台映射表 + Export Fes and backstage mapping tables + + + 所有设备 + All device + + + 全选 + Select all + + + 车站 + Station + + + 专业 + Subsystem + + + 添加>> + Add>> + + + 删除<< + Delete<< + + + 已选设备 + Devices selected + + + 导出 + Export + + + 取消 + Cancel + + + 警告 + Warnning + + + 导出未完成! + Export not complete! + + + 所有 + All + + + 选择保存路径 + Select save path + + + 消息 + Message + + + 读取数据库不成功,导出设备失败! + Database read failed,export device failed! + + + 无设备需要导出! + No device need export! + + + 预计耗时%1分钟,耗时仅供参考,实际情况可能有偏差! + Expected time consuming %1 minutes,Actual time may be biased! + + + + KbdSplitter + + 添加记录 + Add record + + + 删除记录 + Delete record + + + 修改记录 + Modify record + + + 复制记录 + Copy record + + + Excel导出 + ExcelExport + + + Excel导入 + ExcelImport + + + 消息 + Message + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + + KbdStateTextWidget + + 添加记录 + Add record + + + 删除记录 + Delete record + + + 撤销更改 + Undo change + + + 保存 + Save + + + 请选中要添加的专业 + Please select subsystem to add + + + 请选中要删除的数字量文本 + Please select digital text to delete + + + 删除失败 + Delete failed + + + 删除成功 + Delete success + + + 请选中对应的数字量文本 + Please select the corresponding digital text + + + 消息 + Message + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + + KbdTempGroupInstDlg + + 位置 + Location + + + 专业 + Subsystem + + + 选择设备分组 + Select device group + + + 添加记录 + Add record + + + 请先选择位置和专业 + Please select station and subsystem first + + + 获取车站标签信息失败 + Get station tag name message failed + + + 添加设备组 + Add device group + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + 请选择要实例化的设备组 + Please select the device group to instantiate + + + 消息 + Message + + + + KbdWaitPrgDlg + + 正在处理,请稍后.... + Processing,please waiting... + + + + KbdWidget + + 消息 + Message + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + 回滚事务失败! + Rollback the transaction failed! + + + + LoginDlg + + + + 登录 + Login + + + 用户权限认证库调用失败 + User permission authentication library call failed + + + + 用户 + User + + + + 密码 + Password + + + + IP地址: + IP address: + + + + 端口 + Port + + + + 数据库类型 + Database type + + + + 数据库名称: + Database name: + + + 登录选项: + Login option: + + + 账号 + Account + + + 姓名 + Name + + + Mysql + Mysql + + + OraclSql + OraclSql + + + + 取消 + Cancel + + + 模型提交服务 + Model submit service + + + 直连数据库 + Direct database + + + 用户组 + User group + + + 权限接口错误 + Permission interface error + + + 程序分配内存出错 + Program allocation memory error + + + 无用户登录信息 + No user login message + + + 输入名称不存在 + The name you input not existed + + + 输入名称不唯一 + The name you input not unique + + + 不允许在该节点登录 + Login on this node is not allowed + + + 用户口令错误 + User password error + + + 用户已失效 + User has expired + + + 用户已锁定 + User locked + + + 用户不属于所选用户组 + The user not belong to the user group selected + + + 用户名或者密码错误 + The user name or password error + + + 选择数据库失败 + Select database failed + + + + MySQL + + + + + Oracle + + + + + OpenGauss + + + + + KingBase + + + + + 数据库查询域失败 + Select domain failed + + + + 数据库中不存在任何域 + There isn't any domain in database + + + + 数据库查询位置失败 + Select location failed + + + + 数据库中不存在任何位置 + There isn't any location in database + + + + 数据库查询应用失败 + Select apply failed + + + + 数据库中不存在任何应用 + There isn't any apply in database + + + + 数据库查询专业失败 + Select subsystem failed + + + + 数据库中不存在任何专业 + There isn't any subsystem in database + + + 账号:%1 + account:%1 + + + 用户:%1 + User:%1 + + + + ,可能未进行系统建模! + May not do model system config! + + + 登陆失败 + Login failed + + + + 失败原因: + + Failed reason: + + + + 登录失败 + Login failed! + + + 获取用户组失败 + Get user group failed + + + + MainWindow + + + 建模工具 + Modeling tool + + + + 系统 + System + + + + 帮助 + Help + + + + 设置 + setting + + + + 前置测点检索器 + Fes point filter + + + + 后台测点检索器 + Backstage point filter + + + + 批量修改后台测点 + Batch modify backstage points + + + + 批量修改前置测点 + Batch modify Fes points + + + + 配置检查 + + + + + 退出 + Exit + + + + 版本信息 + Version message + + + + 帮助文档 + Help document + + + + 属性面板主键可编辑 + Attributes panel keys unable to edit + + + + 消息 + Message + + + + 确定退出软件 + Are you sure to exit the software + + + + + 设备建模 + Device Modeling + + + + 读取mainWindow.xml文件错误,请检查xml文件格式是否正确! + Read mainWindow.xml file error,please check if the xml file format is correct! + + + + 数据库错误 + Database error + + + + 数据库错误: + Database error: + + + Model Studio + Model Studio + + + + 版本号:%1 + Version number:%1 + + + + MyAccumlModel + + 描述 + Description + + + 前置分量 + Fes offset + + + 前置实例 + Fes instance + + + 前置RTU + Fes RTU + + + 消息 + Message + + + 查找累积量数据出错 + Search accuml point data error + + + + MyAnalogModel + + 描述 + Description + + + 前置分量 + Fes offset + + + 前置实例 + Fes instance + + + 前置RTU + Fes RTU + + + 输出分量 + Output offset + + + 消息 + Message + + + 查找模拟量数据出错 + Search analog point data error + + + + MyDigitalModel + + 描述 + Description + + + 前置分量1 + Fes offset1 + + + 前置分量2 + Fes offset2 + + + 前置分量3 + Fes offset3 + + + 前置分量4 + Fes offset4 + + + 前置分量5 + Fes offset5 + + + 前置实例 + Fes instance + + + 前置RTU + Fes RTU + + + 输出分量1 + Output offset1 + + + 输出分量2 + Output offset2 + + + 输出分量3 + Output offset3 + + + 输出分量4 + Output offset4 + + + 输出分量5 + Output offset5 + + + 消息 + Message + + + 查找数字量数据出错 + Search digital point data error + + + 查找数字量前置分量2出错 + Search digital point Fes component 2 error + + + 查找数字量前置分量3出错 + Search digital point Fes component 3 error + + + 查找数字量前置分量4出错 + Search digital point Fes component 4 error + + + 查找数字量前置分量5出错 + Search digital point Fes component 5 error + + + 查找数字量输出分量2出错 + Search digital point output component 2 error + + + 查找数字量输出分量3出错 + Search digital point output component 3 error + + + 查找数字量输出分量4出错 + Search digital point output component 4 error + + + 查找数字量输出分量5出错 + Search digital point output component 5 error + + + + MyMixModel + + 描述 + Description + + + 前置分量 + Fes offset + + + 前置实例 + Fes instance + + + 前置RTU + Fes RTU + + + 输出分量 + Output offset + + + 消息 + Message + + + 查找累积量数据出错 + Search accuml point data error + + + + ParsingDevFile + + 打开失败: + open failed + + + 获取%1 信息失败! + Get %1 message failed! + + + 设备点重复: + Device point reoeat! + + + 数据写入失败,已启动回滚! + data write failed! + + + 保存文件失败 + Save file Failed! + + + 添加失败 + Add failed + + + + QObject + + + 消息 + Message + + + + 启动日志服务失败: + Start log service failed: + + + + SampleWidget + + 模拟量 + Analog point + + + 累积量 + Accuml point + + + 数字量 + Digital point + + + 混合量 + Mix point + + + 原始数据与修改数据不一致,保存出错 + Raw data is inconsistent with modified data,save failed + + + + StatLinkInstDlg + + 消息 + Message + + + 是否开始关联统计实例[ %1 ] +这将清空现有的参数组的子参数以及参数的测点绑定 + link [ %1 ]? + + + 关联失败 + Association failed + + + 关联成功 + Association success + + + 当前设备模板 + Current Dev Temp + + + 当前统计关联 + Current Stat Link + + + 开始关联统计实例[ %1 ] +这将清空与[ %2 ]有关的参数组下的子参数和关联 +是否继续 + Link [ %1 ] and [ %2] +this will empty all args and rets in [ %2] +continue? + + + 开始关联统计实例[ %1 ] +这将清空[ %2 ]有关的关联和 +是否继续 + Link [ %1 ] and [ %2] +this will empty all args and rets in [ %2] +continue? + + + 关联列表 + Link List + + + 点绑定信息 + Bind info + + + 开始关联 + link + + + 取消 + Cancel + + + 数据库链接错误 + Database link error + + + 删除 + Delete + + + 添加设备到左侧列表 + add device to left list + + + 关联 + link + + + 输入 + Input + + + 输出 + Output + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + + StaticsWidget + + 添加记录 + Add record + + + 修改记录 + Modify record + + + 删除记录 + Delete record + + + 输入 + Input + + + 输出 + Output + + + 参数编辑 + Parameter editing + + + 保存 + Save + + + 输入生成 + Input generating + + + 输出生成 + Output generating + + + 生成输入/输出并保存 + Generete input/output and save + + + 函数体 + function body + + + 车站 + Location + + + 专业 + Subsystem + + + 禁用所有统计实例 + Disable all statistical instances + + + 输入参数关联 + InputPara Link + + + 输出参数关联 + OutputPara Link + + + 添加 + Add + + + 删除 + Delete + + + 上移 + Move up + + + 下移 + Move down + + + 置顶 + Topping + + + 置底 + bottoming + + + 添加子参数 + Add sub parameter + + + 生成 + Generate + + + 开始关联 + Start Link + + + 复制关联 + Copy Link + + + 添加失败 + Add failed + + + 读取数据库失败 + Read database failed + + + 删除失败 + Delete failed + + + 请先选择要添加的函数模板 + Please select the function template to add + + + 数据库链接不成功 + Database link failed + + + 请选中要修改的条目 + Please select items to modify + + + 请先选择要删除的函数模板 + Please select the function template to delete + + + 复制关联-请输入新的关联名 + copy link - please enter new link name + + + 标签名已存在,请修改 + tag_name exists, please use another + + + 复制失败! + Copy failed! + + + 保存失败: + Save failed: + + + 保存失败 + Save failed + + + 保存成功 + Save success + + + 获取系统信息失败 + Get system message failed + + + 修改失败 + Modify failed + + + 禁用失败 + Disable failed + + + 禁用成功 + Disable success + + + 请先选择前置设备 + Please select Fes device first + + + 添加成功 + Add success + + + 修改成功 + Modify success + + + 删除成功! + delete succeed + + + 无法读取数据库 + Read database failed + + + 数据库链接错误 + Database link error + + + 无法查询该数据类型 + Unable to query this data type + + + 无法查询位置和专业 + Unable to query location and subsystem + + + 请选中函数实例 + Please select function instance + + + 删除失败! + Delete failed! + + + 删除成功 + Delete success + + + 请选中对应函数 + Please select corresponding function + + + 请选中要移动的条目 + Please select the item to move + + + 数据库查询失败! + Database query failed! + + + 上移失败 + Move up failed + + + 下移失败 + Move down failed + + + 置顶失败 + Topping failed + + + 置底失败 + Bottoming failed + + + 统计实例绑定数据异常 + fail to bind + + + 暂无可用统计关联,请创建 + No avail link, please add one + + + 请选择要绑定的计算实例 + Please select the compute instance to bind + + + 数据格式不对 + Data format incorrect + + + 消息 + Message + + + %1 与 %2 进行绑定? + Bind %1 with %2? + + + 绑定失败 + Bind failed + + + 绑定成功 + Bind success + + + 无法识别拖拽数据的格式 + Unable to recognize the format of dragging data + + + 请拖拽到正确的输入参数上 + Please drag to the correct input parameters + + + 请拖拽到正确的输出参数上 + Please drag to the correct output parameters + + + + TempPluginWidget + + 显示模式 + Display mode + + + 套件模式 + Plugin mode + + + 前置模板 + Fes template + + + 后台模板 + Backstage template + + + 添加模板 + Add template + + + 添加至套件中的所有后台设备 + Add to all backstage devices of plugin + + + 实例化模板 + Instantiated template + + + 复制模板 + Copy template + + + 修改模板 + Modify template + + + 删除模板 + Delete template + + + 导入模板 + Import template + + + 导入PCS3000模板 + Import PCS3000 template + + + 从PCS3000配置中读取模板 + Read template from PCS3000 configuration + + + 导出模板 + Export template + + + 刷新 + Refresh + + + 添加套件 + Add plugin + + + 实例化套件 + Instantiated plugin + + + 修改套件 + Modify plugin + + + 复制套件 + Copy plugin + + + 删除套件 + Delete plugin + + + 导入套件 + Import plugin + + + 导出套件 + Export plugin + + + 删除 + Delete + + + 缺失配置目录 + Missing configuration directory + + + 模板套件 + Template plugin + + + 导入 + Import + + + 导出 + Export + + + 检测套件 + Detect plugin + + + 编辑自动关联配置 + Edit auto-association + + + 仅自动生成当前后台设备 + Only generate current backstage devices + + + 全部自动生成 + All generate automatically + + + 保存 + Save + + + 模拟量 + Ana + + + 数字量 + Dig + + + 累积量 + Acc + + + 混合量 + Mix + + + 混合量控制 + Mix control point + + + 保存文件不成功 + Save file failed + + + 导出套件不成功! + Export plugin failed! + + + 导出套件后台设备不成功 + Export plugin's backstage device failed + + + 导出套件前置设备不成功 + Export plugin's Fes device failed + + + 导出套件模板测点ACC不成功 + Export plugin's template point ACC failed + + + 导出套件模板测点ANA不成功 + Export plugin's template point ANA failed + + + 导出套件模板测点DIG不成功 + Export plugin's template point DIG failed + + + 导出套件模板测点MIX不成功 + Export plugin's template point MIX failed + + + 获取后台模板信息失败 + Get backstage template message failed + + + 导出后台模板信息失败 + Export backstage template message failed + + + 导出ACC模板点不成功 + Export ACC template points failed + + + 导出ANA模板点不成功 + Export ANA template points failed + + + 导出DIG模板点不成功 + Export DIG template points failed + + + 导出MIX模板点不成功 + Export MIX template points failed + + + 获取前置模板信息失败 + Get Fes template message failed + + + 导出前置模板不成功 + Export Fes template failed + + + 导出前置设备模板点不成功 + Export Fes device template points failed + + + 导出前置模板定值不成功 + Export Fes template const values failed + + + 导出前置模板数据块不成功 + Export Fes template data block failed + + + 文件打开不成功! + Open file failed! + + + 调用存储过程错误 + Call stored procedure failed + + + 导入失败!事务已回滚!原因: + Import failed!ransaction rolled back!reason: + + + 导入失败!原因:事务开启失败 + Import failed!reason:start transaction failed + + + 缺失套件表xml + Missing plugin table xml + + + excel文件中没有%1表 + No %1 table in excel file + + + 表格%1中没有%2列 + No %2 column in table %1 + + + 套件名为空! + Plugin name is empty! + + + 数据块链接错误 + Database link error + + + 存在同名套件%1,无法导入 + There is a plugin of the same name %1,import failed + + + 缺少xml配置:%1 + Missing xml configuration:%1 + + + 数据库链接错误 + Database link error + + + 后台模板存在同名冲突 + %1 + 后台模板存在同名冲突 + %1 + Backstage template already conflicted with name %1 + + + 前置模板存在同名冲突 + %1 + 前置模板存在同名冲突 + %1 + Fes template already conflicted with name %1 + + + 套件 %1 中的后台模板 %2 + 存在未关联的测点请关联 + 套件 %1 中的后台模板 %2 + 存在未关联的测点请关联 + Backstage template %2 in plugin %1 has unassociated points,please associate first + + + 套件 %1 中的前置模板 %2 + 存在规约参数1的值不为-1的点,请修改为-1 + 套件 %1 中的前置模板 %2 + 存在规约参数1的值不为-1的点,请修改为-1 + The Fes template %2 in plugin %1 has a point where the value of the specification parameter 1 is not -1,please change it to -1 + + + 参数长度有问题 + There is a problem with the parameter length + + + 选择excel表格%1失败 + Select exel table %1 failed + + + excel中不存在%1列 + No %1 column in excel file + + + tree文件夹下缺少autoRelation.json文件 + Missing autoRelation.json file in tree directory + + + json文件格式错误 + Json file format error + + + 添加成功! + Add success! + + + 请选中要修改的套件 + Please select the plugin want to modify + + + 模板有错,请重新打开软件 + The template error,plase reopen the software + + + 修改成功! + Modify success! + + + 标签名已存在,请修改 + Tag name already exists,please modify + + + 复制失败! + Copy failed! + + + 复制成功! + Copy success! + + + 消息 + Message + + + 是否删除套件? + kDo you want to remove the plugin? + + + 请选中套件 + Please select a plugin + + + 删除套件失败! + Delete plugin failed! + + + 删除套件成功! + Delete plugin success! + + + 请先选中要添加的套件 + Please select plugin want to add + + + 套件中已存在 %1 模板 + The plugin already existed %1 template + + + 添加后台模板到套件不成功! + Add backstage template to plugin failed! + + + 添加失败 + Add failed + + + 操作失败! + Operate failed! + + + 是否删除套件中的模板? + Do you want to delete the template in plugin? + + + 关联失败! + Associate failed! + + + 关联成功!多分量测点和控制点,请手动填写多余分量或者控制关联信息 + Associate success!multi-component points and control points,please manually fill in excess components or control associated information + + + 请选中套件控件中要自动关联的后台模板 + Please select the backstage template to be automatically associated in the kit control + + + 检测通过 + Detect finish + + + 套件导入 + Import plugin + + + 导入失败! +失败文件:%1 +失败原因:%2 + + Import failed!failed file:%1 failed reason:%2 + + + 导入成功 + Import success + + + 请选中需要导出的套件 + Please select plugin need to export + + + 保存套件 + Save plugin + + + *.xlsx + *.xlsx + + + 导出%1失败 +失败原因:%2 + Export %1 failed reason:%2 + + + 导出成功!导出路径: + %1 + Export success!exportpath:%1 + + + 请选中要添加的前置模板 + Please select Fes template want to add + + + + TempWidget + + 显示模式 + Display mode + + + 详细模式 + Detail mode + + + 表格模式 + Table mode + + + 添加点模板 + Add template point + + + 复制点模板 + Copy template point + + + 删除点模板 + Delete template point + + + 模板测点 + Template point + + + 属性面板 + Attribute panel + + + 勾选更改 + Check change + + + 修改应用至对应设备 + Modify apply to corresponding device + + + 保存 + Save + + + 属性同步至实例设备 + Synchronize attributes to instance device + + + 从文本库添加 + Add from text library + + + 从前置模板添加 + Add from Fes template + + + 添加应用至对应设备 + Add apply to corresponding device + + + 删除应用至对应设备 + Delete apply to corresponding device + + + 基础属性 + Base attributes + + + 限值属性 + Limit attributes + + + 前置属性 + Fes attributes + + + 控制属性 + Control attributes + + + 未选中设备模板! + Not select any device template! + + + 添加失败 + Add failed + + + 导出模板不成功! + Export template failed! + + + 导出ACC模板点不成功 + Export ACC template point failed + + + 导出ANA模板点不成功 + Export ANA template point failed + + + 导出DIG模板点不成功 + Export DIG template point failed + + + 导出MIX模板点不成功 + Export MIX template point failed + + + 保存文件不成功 + Save file failed + + + 选中表格%1失败 + Select table %1 failed + + + 表格%1中没有%2列 + No column %2 in table %1 + + + 设备模板名为空! + Device template name is empty! + + + 表格写入TAG_NAME不成功 + Table write into TAG_NAME failed + + + 文件打开不成功! + Open file failed! + + + 导入失败!事务已回滚!原因: + Import failed!transaction rolled back!reason: + + + 导入失败!原因:事务开启失败 + Import failed!reason:start transaction failed + + + excel文件中没有%1表 + No %1 table in excel file + + + 消息 + Message + + + 存在同名模板%1,是否修改模板标签名? + There is template %1 of the same name, whether to modify the template tag name? + + + 缺失模板xml配置 + Missing template xml configuration + + + 请输入新的模板名称和描述 + Please input new template name and description + + + 存在同名模板%1,无法导入 + There is template %1 of the same name,unable to import + + + 写入TAG_NAME失败 + Write into TAG_NAME failed + + + 写入设备描述失败 + Write into device description failed + + + 添加成功! + Add success! + + + 查询数据库失败 + Database query failed + + + 查询设备信息失败 + Query device message failed + + + 未选中模板点 + Not select template point + + + 模板点信息有误,请重新打开软件 + Template point message mistaken,please reopen software + + + 复制失败 + Copy failed + + + 复制点失败! + Copy point failed! + + + 是否删除后台模板测点? + Do you want to delete backstage template points? + + + 删除点失败! + Delete point failed! + + + 删除点成功! + Delete point success! + + + 保存失败: + Save failed: + + + 保存失败 + Save failed + + + 保存成功! + Save success! + + + 提示 + Prompt + + + 测点属性已经修改,是否保存? + The point attrubutes modified,are you save? + + + 请选中要生成出口的测点模板 + Please select the point template need to generate exit + + + 累计量无闭锁出口 + Accuml point without interlock exit + + + 数据库链接错误 + Database link error + + + 此测点非控制点,无法生成闭锁出口 + This point not control point,unable generate interlock exit + + + 批量生成闭锁出口 + Batch generate interlock exit + + + 数据库出错 + Database error + + + 添加闭锁出口失败 + Add interlock exit failed + + + 添加闭锁出口成功! + Add interlock exit success! + + + 修改成功 + Modify success + + + 模板导入 + Import template + + + 导入失败! +失败文件:%1 +失败原因:%2 + + Import failed! file:%1 reason:%2 + + + 导入成功! + Import success! + + + 请选中需要导出的设备模板 + Please select device template need to export + + + 保存模板 + Save template + + + *.xlsx + *.xlsx + + + 导出%1失败 +失败原因:%2 + Export %1 failed reason:%2 + + + 导出成功!导出路径: + %1 + Export success!export path:%1 + + + 添加设备模板 + Add device template + + + 请选中要修改的设备模板 + Please select device template want to modify + + + 模板有错,请重新打开软件 + Template error,please reopen software + + + 修改设备模板 + Modify device template + + + 修改成功! + Modify success! + + + 是否删除后台模板? + Do you want to delete backstage template? + + + 请选中设备模板 + Please select device template + + + 该模板 %1 存在已实例化的设备 + 是否强制删除此模板? + The template %1 has an instantiated device Is it mandatory to delete this template? + + + 删除设备模板失败! + Delete device template failed! + + + 删除设备模板成功! + Delete device template success! + + + 请选中模板 + Please select template + + + 模板信息有误,请重新打开软件 + Template message error,please reopen software + + + 复制设备模板 + Copy device template + + + 标签名已存在,请修改 + Tag name existed,please modify + + + 复制失败! + Copy failed! + + + 复制成功! + Copy success! + + + 请先保存添加的测点 + Please save points added first + + + 请选中要修改的模板点 + Please select template points to modify + + + 未勾选任何属性 + Not select any attribute + + + 选中要修改的设备 + Select device want to modify + + + 更新成功! + Update success! + + + 更新失败! + Update failed! + + + 添加点失败! + Add point failed! + + + 添加成功 + Add success + + + 请先保存修改 + Please save modify first + + + 该列不可编辑 + The clumn unable to edit + + + 该列是主键,不可编辑 + The column unable to edit,due to as key + + + 开始执行批量菜单 + Start executing the batch menu + + + 结束执行批量菜单 + Executing the batch menu end + + + 修改失败 + Modify failed + + + + Worker + + 调用%1存储过程失败!参数:%2 + Calling %1 stored procedure failed! Argument: %2 + + + 提交事务失败!启动回滚 + Transaction submit failed,rollback has started + + + 创建设备出错 + Create device error + + + 实例化失败! + Instantiation failed! + + + 批量处理错误! + Batch process error! + + + 提交事务失败,已回滚 + Transaction submit failed,rollback has started + + + 实例化成功 + Instantiation success + + + 关联前置设备成功! + Associated with the Fes device successfully! + + + 缺少配置文件%1 + Missing configuration file%1 + + + 文件写入不成功,导出失败! + Write into file failed,export failed! + + + 导出成功!文件保存在:%1 + Export success!file save at:%1 + + + 文件格式不对! + File format incorrect! + + + 文件打开不成功! + Open file failed! + + + 缺少必要的配置文件! + Missing necessary configuration files! + + + 数据库操作:清空表格失败! + Database operation:clear table failed! + + + 导入失败!事务已回滚!原因: + Import failed!transaction rolled back!reason: + + + 导入失败!原因:事务开启失败 + Import failed! reason:start transaction failed + + + 导入成功! + Import success! + + + 关联失败! +后台设备与前置设备数量不一致 + Association failed!the number of backstage devices and Fes devices inconsistent + + + 关联失败!,失败设备%1 + Association failed!failed device%1 + + + 关联失败!启动回滚,失败设备%1 + Association failed!start roll back,failed device %1 + + + 关联成功! + Association success! + + + 关联失败!失败设备组:%1 + Association failed!failed device group:%1 + + + 关联失败!原因:提交事务失败!启动回滚 + Association failed!reason:transaction submit failed,rollback has started + + + 关联完毕! + Association complete! + + + 批量实例化设备组数据错误 + Batch instantiated device group data error + + + 数据库链接出错 + Database link error + + + 不存在前置设备%1 + No Fes device %1 + + + 获取后台点与前置点的关联sql执行失败 + The sql of relation back point and fes point execute failed + + + 获取一条后台记录失败 + Get one back record failed + + + 获取前置相关信息失败 + Get Fes message failed + + + 获取表%1所有字段名失败 + Get table %1 all columns failed + + + 插入记录失败 + Insert record failed + + + 开始导入数据CSV:%1 RTU:%2 + Start import data CSV:%1 RTU:%2 + + + 未检测到任何设备模板 + No device templates detected + + + 设备 + Device + + + 累积量 + Accuml point + + + 模拟量 + Analog point + + + 数字量 + Digital point + + + 数字量控制 + Digital control point + + + 保护定值 + Protected const value + + + 调用存储过程失败! + Call stored procedure failed! + + + 导入结束CSV:%1 + Import end CSV:%1 + + + %1 中的表的列数和描述数量不一致! + The number of column and description inconsistent in %1 table! + + + 获取%1 信息失败! + Get %1 message failed! + + + 导入失败:没有%1表! + Import failed:no %1 table! + + + 导入失败:数据库导入失败! + Import failed:database import failed! + + + 存储过程实例化设备组失败!%1 + Stored procedure instantiated device group failed!%1 + + + 套件数据格式不对! + Plugin data format is wrong! + + + %1文件打开不成功! + Open file %1 failed! + + + 未选择导入的RTU! + Not select imported RTU! + + + 清空参数表%错误! + Clear parameters table % error! + + + 执行SQL语句失败 + Execution of SQL statement failed + + + 关联失败!数据库链接错误! + Association failed! database link error! + + + 关联失败!不存在相同名称的前置设备%1,请手动关联! + Association failed! there is no fes device %1 of the same name,please associate it manually! + + + 关联失败!存在多个相同名称的前置设备%1,请手动关联 + Association failed! there are multiple Fes device %1 with the same name,please associate it manually + + + 错误:没有%1表! + Error:not table %1! + + + 错误:没有此列%1 + Error:no column %1 + + + 生成前置模板模型失败! + Generate Fes template model failed! + + + 删除前置模板%1失败 + Delete Fes template model %1 failed + + + 模拟量控制 + Analog control point + + + + kbdConfigCheck + + + + + + + + + + + 标签结构错误 + Label structure error + + + + + + + + + 字符'.'的数量异常 + Abnormal number of characters '.' + + + + + + + + + + + + + 标签中有错误字段: + There is an incorrect field in the label: + + + + 含有禁止使用字符'_' + Contains the prohibited character '_' + + + + + 字符'_'的数量异常 + Abnormal number of characters '_' + + + + 不存在 + does not exist + + + + DI点不存在 + DI point does not exist + + + + DI点不可控 + DI point is not controllable + + + + 未关联前置测点 + Unassociated front-end measurement point + + + + 后台测点 %1 不存在 + Back-end measurement point %1 does not exist + + + 用户组所属位置 %1 未配置 + The location of the user group %1 is not configured + + + 特殊功能 %1的子节点%2 未配置 + The child node %2 of special function %1 is not configured + + + 画面权限 %1未配置 + The screen permission for %1 is not configured + + + 报表浏览%1未配置 + The report browsing for %1 is not configured + + + + kbdConfigCheckDlg + + + 配置检查 + Configuration Check + + + + + 开始检查 + Start Check + + + + + + + 完成 + Complete + + + + 检查项目 + Check Item + + + + 异常数量 + Number of Anomalies + + + + 异常详情 + Details of Anomalies + + + + 是否修复 + Repair? + + + + 修复勾选项 + Repair Selected Items + + + + 查看详情 + View Details + + + + 需手动修复 + Manual Repair Required + + + + 未选择检查项目 + No Check Item Selected + + + + 消息 + Message + + + + 修复成功 + Repair Successful + + + + kbdErrorListDlg + + + 全选 + Select all + + + + 反选 + Invert Selection + + + + 清理勾选项 + Clear Selection + + + + 标签名 + Label Name + + + + 描述 + Description + + + + 错误原因 + Reason for Error + + + + 清理 + Clean Up + + + + kbdInst61850DevWizard + + 实例化成功! + Instantiation success! + + + 获取车站信息和专业信息失败 + Get station and subsystem message failed + + + 获取通道号不成功! + Get channel number failed! + + + 数据库链接出错 + Database link error + + + 获取通道号不成功 + Get channel number failed + + + + kbdRcbDialog + + 描述 + Description + + + + kbdSecondInstWizardPage + + 位置: + Location: + + + 专业: + Subsystem: + + + 刷新 + Refresh + + + 添加 + Add + + + 删除 + Delete + + + 保存 + Save + + + 设备组描述 + Device group description + + + 前置设备标签 + Fes device tag name + + + 获取车站信息和专业信息失败 + Get station and subsystem message failed + + + 数据库查询错误 + Database query error + + + diff --git a/resource/fr/model_studio/translate/model_system_config_EN.qm b/resource/fr/model_studio/translate/model_system_config_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..e10d3f739eafb0bcb516210d86ae6d0b60dfaf28 GIT binary patch literal 8382 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 literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/translate/model_system_config_EN.ts b/resource/fr/model_studio/translate/model_system_config_EN.ts new file mode 100644 index 00000000..5c530856 --- /dev/null +++ b/resource/fr/model_studio/translate/model_system_config_EN.ts @@ -0,0 +1,548 @@ + + + + + KbdChainWidget + + + + 消息 + Export failed + + + + 导出配置成功! +导出路径: + Export configuration success! export path: + + + + 导出失败 + Message + + + + KbdNodeWidget + + + 添加失败 + Add failed + + + + + + + + + + 消息 + Message + + + + 部署信息表,数据库部署配置 +中相应的节点的值将被置空, +数据库节点配置中相应节点的配置将删除 +是否删除所选记录? + + + + 部署信息表,数据库部署配置 +中相应的节点的值将被置空, +数据库节点配置中相应节点的配置将删除 +是否删除所选记录? + 部署信息表,数据库部署配置 +中相应的节点的值将被置空, +数据库节点配置中相应节点的配置将删除 +是否删除所选记录? + Deployment information table,the value of the corresponding node is empty in database deployment configuration,the configuration of the corresponding node in the database node configuration will delete do you want to delete the selected record? + + + + 删除失败 + Delete failed + + + + 修改失败 + Modify success + + + 打开文件 + Open File + + + 文件打开失败! + Failed to Open File! + + + 导入成功 + Import Successful + + + + 导出配置成功! +导出路径: + Export configuration success! export path: + + + + 导出失败 + Export failed + + + 导出节点配置失败 + Failed to Export Node Configuration + + + 保存文件不成功 + File Save Unsuccessful + + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + + 回滚事务失败! + Transaction rolled back failed! + + + + KbdRtTableWidget + + + 添加失败 + Add failed + + + + + + + + + + 消息 + Message + + + + 实时库列模式中的表将同时删除 +是否删除? + 实时库列模式中的表将同时删除 +是否删除? + Tables in memory library column mode will be deleted at the same time,do it? + + + + 删除失败 + Delete failed + + + + 修改失败 + Modify failed + + + + 导出配置成功! +导出路径: + Export configuration success! export path: + + + + 导出失败 + Export failed + + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + + 回滚事务失败! + Transaction rolled back failed! + + + + LoginDlg + + + + 登录 + Login + + + + 用户 + User + + + + 密码 + Password + + + + IP地址: + IP address: + + + + 端口 + Port + + + + 数据库类型 + Database type + + + + 数据库名称: + Database name: + + + + MySQL + MySQL + + + + Oracle + Oracle + + + + OpenGauss + OpenGauss + + + + KingBase + KingBase + + + Mysql + Mysql + + + OraclSql + OraclSql + + + + 取消 + Cancel + + + + 用户不能为空 + Username cannot be empty + + + + 密码不能为空 + Password cannot be empty + + + + IP地址不能为空 + IP address cannot be empty + + + + 端口不能为空 + Port cannot be empty + + + + 数据库名称不能为空 + Database name cannot be empty + + + + 登录失败 + 登陆失败 + Login failed + + + + 失败原因: + + Failed reason: + + + + MainWindow + + + 系统配置 + System configuration + + + + 系统 + System + + + + 帮助 + Help + + + + 退出 + Exit + + + + 版本 + Version + + + + 配置向导 + Configuration Wizard + + + + + 系统建模 + System Modeling + + + + + 消息 + Message + + + + 是否导出全部配置? + Whether to export all configurations? + + + + 系统正在运行,无法导出配置 + Unable to export configuration for system is running + + + + 错误提示 + Error Prompt + + + + 错误详情: + Error Details: + + + 数据库错误 + Database error + + + 请检查数据库链接!错误详情: + Please check database link!error detail: + + + Model System Config + Model System Config + + + + 版本号:%1 + Version number:%1 + + + + QObject + + + + 消息 + Message + + + + 启动日志服务失败: + Start log service failed: + + + + 是否进入系统建模配置向导界面? + Would you like to enter the system modeling configuration wizard interface? + + + + SysConfigWidget + + + 添加记录 + Add record + + + + 删除记录 + Delete record + + + + 撤销更改 + Undo change + + + + 保存 + Save + + + + 导出配置 + Export configuration + + + + 导出配置 + 导入EXCL + Export all configuration + + + 重置全部 + Reset All + + + + 重置节点 + Reset node + + + + + + + + + + + + + + + + + + + 消息 + Message + + + + + 此次修改失败,已启动回滚! + This modification failed,rollback has started! + + + + + 部署失败 + Deploy failed + + + 导出节点配置失败 + Failed to export node configuration + + + 保存文件不成功 + File save unsuccessful + + + 导入操作会直接修改数据库,只能添加或者修改数据库,需确保数据正确有效,否则会导致配置错误! + Importing will directly modify the database; you can only add or modify the database. Ensure that the data is correct and valid, otherwise it may cause configuration errors! + + + 已知悉风险 + I acknowledge the risks + + + 取消 + Cancel + + + 打开文件 + Open File + + + 文件打开失败! + Failed to Open File! + + + 导入成功 + Import Successful + + + 控件未加载数据 + Control has not loaded data + + + + + 系统正在运行,无法导出配置 + Unable to export configuration for system is running + + + + 导出完成! +导出路径:系统安装目录下data\sys_model_info + Export completed! +Export path: In the system installation directory, under data\sys_model_info + + + + 导出配置成功! +导出路径: + Export configuration success! export path: + + + + 导出失败 + Export failed + + + + 确定重置所有配置数据? + Are you sure to reset all configure data? + + + + 确定重置节点配置? + Are you sure to reset node configure? + + + + 导出失败,多个数据库节点只能使用同一种数据库类型 + Export failed, multiple database nodes can only use the same type of database + + + + 节点%1,非本机节点,不能配置本地回环地址 + Node %1, not a local node, cannot configure the local loopback address + + + + 导出文件不成功! +不成功表格: + Export file unsuccessful! +Unsuccessful tables: + + + 导出完成! +导出路径: + Export complete! Export path: + + + diff --git a/resource/fr/model_studio/translate/model_table_EN.qm b/resource/fr/model_studio/translate/model_table_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..38e09ecb703b10e04d52d3f8b2a9936841abc700 GIT binary patch literal 31553 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 literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/translate/model_table_EN.ts b/resource/fr/model_studio/translate/model_table_EN.ts new file mode 100644 index 00000000..530be6e3 --- /dev/null +++ b/resource/fr/model_studio/translate/model_table_EN.ts @@ -0,0 +1,1925 @@ + + + + + ColorEdit + + + 颜色选择 + Color Selection + + + + KbdBatchDlg + + + 批量修改 + Batch Modify + + + + 相同值 + Same Value + + + + 按行递增 + Increment by Row + + + + 自定义 + Custom + + + + 确定 + OK + + + + 取消 + Cancel + + + + 设置值 + Set Value + + + + 格式 + Format + + + + 例:dev%1 + Example: dev%1 + + + + 起始值 + Start Value + + + + 输入选项值(每行一个) + Enter Option Values (one per line) + + + + + + 该属性最多只能为%1个字符 + The property can have a maximum of %1 characters + + + + 询问 + Query + + + + 自定义内容和设置的内容行数不一致,请确认是否继续? + The number of rows in the custom content does not match the set content, please confirm if you want to continue? + + + + 消息 + Message + + + + KbdCSVReader + + + + json文件打开不成功 + Failed to open JSON file + + + + + + csv文件打开不成功 + Failed to open CSV file + + + + + xlsx文件打开不成功! + Failed to open XLSX file! + + + + + + csv文件数据错误,有行数据大小小于2 + CSV file data error, some rows have less than 2 data elements + + + + + 临时文件保存失败%1 + Temporary file save failed %1 + + + + + 子设备ID + Sub-device ID + + + + 设备ID + Device ID + + + + 属于的设备ID + Belongs to Device ID + + + + + 数据项列数不够 + Not enough data item columns + + + + + + 无此表单%1 + No such form %1 + + + + + + + 写错误%1:%2 + Write error %1: %2 + + + + 保存CSV文件不成功%1 + Failed to save CSV file %1 + + + + KbdCheckRole + + + + 模型为空! + Model is empty! + + + + 模型为空! +值:%1 + 模型为空!%1, +值:%2 + Model is empty! +Value: %1 + + + + 检查的数据尺寸有问题 + + + + + 检查的数据尺寸有问题%1, +值:%2 + + + + + 不能为空%1, +值:%2 + + + + + + + 不能为空 + + + + + + + 超出取值范围: + + + + + 超出取值范围%1, +值:%2 + + + + + + + 有重复 + + + + + 有重复%1, +值:%2 + + + + + 模型为空! +旧值:%1, +新值:%2 + + + + + 检查的数据尺寸有问题!表名:%1, +旧值:%2, +新值:%3 + + + + + 检查的数据尺寸有问题! + + + + + 不能为空%1, +旧值:%2, +新值:%3 + + + + + 超出取值范围%1, +旧值:%2, +新值:%3 + + + + + 有重复%1, +旧值:%2, +新值:%3 + + + + + 不能为空%1 + Cannot be empty %1 + + + + 超出取值范围%1 + Out of value range %1 + + + + 有重复%1 + Duplicate %1 + + + + KbdExportImportLogic + + + xml文件错误,请检查xml文件格式是否正确! + XML file error, please check if the XML file format is correct! + + + + KbdFindPointWidget + + + 路径 + Path + + + + 输入过滤条件 + Enter filter conditions + + + + root + root + + + + KbdInputDlg + + + + 自定义自增 + Custom Increment + + + + + 字符串格式(占位符%1) + String format (placeholder %1) + + + + + 自增起始数字 + Increment start number + + + + + 示例:dev%1 + Example: dev%1 + + + + 消息 + Message + + + + 字符串格式需要包含占位符%1 + String format must include placeholder %1 + + + + KbdMsgContrl + + + 消息 + Message + + + + KbdPage + + + + 上一页 + Previous Page + + + + + 下一页 + Next Page + + + + 当前总页数是范围是1-%1,%2是非法值 + The current total page range is 1-%1, %2 is an illegal value + + + + 已到达首页 + Reached the first page + + + + 已到达尾页 + Reached the last page + + + + 消息 + Message + + + + KbdPasswordDlg + + + 旧密码: + Old Password: + + + + 请输入新密码: + Please enter a new password: + + + + 请重新确认密码: + 请输入确认密码: + Please enter the confirm password: + + + + 两次输入的密码不一致 + 新密码不允许为空 + The new password cannot be empty + + + 确认密码不允许为空 + The confirm password cannot be empty + + + + 两次输入的密码不一致 + The passwords do not match + + + 密码不允许包含空格 + The password must not contain spaces + + + + 密码不允许为空 + + + + + 密码长度小于安全策略规定的长度:%1 + The password length is less than the security policy requires: %1 + + + + 密码中的字符个数小于安全策略规定的%1个 + The number of characters in the password is less than the %1 required by the security policy + + + + 密码中的数字个数小于安全策略规定的%1个 + The number of digits in the password is less than the %1 required by the security policy + + + + + + 消息 + Message + + + + 旧密码错误 + The old password is incorrect + + + + KbdPropertyDlg + + + 当前属性表未关联相应模型! + The current property table is not associated with the corresponding model! + + + + 写入数据库不成功 + Failed to write to the database + + + + 错误 + Error + + + + KbdPropertyPanel + + + 浏览属性 + Browse Properties + + + + KbdReplaceDlg + + + 单元格内容替换 + Cell Content Replacement + + + + 查找字符 + Find Characters + + + + 替换字符 + Replace Characters + + + + 消息 + Message + + + + 查找内容不能为空 + The search content cannot be empty + + + + KbdSelectDevPointDlg + + + 信息 + Information + + + + 获取%1 信息失败! + Failed to retrieve %1 information! + + + + KbdSelectPointDlg + + + 已选中点 + Selected Points + + + + KbdSplitter + + + 专业: + Specialty: + + + + + 添加记录 + Add Record + + + + + 删除记录 + Delete Record + + + + 多选 + Multi-select + + + + 查询 + Query + + + + 修改记录 + Modify Record + + + + 复制记录 + Copy Record + + + + Excel导出 + Export to Excel + + + + Excel导入 + Import from Excel + + + + 请输入通道描述的关键字 + Please enter the keyword for the channel description + + + 所有 + All + + + + 全选 + Select All + + + + 反选 + Invert Selection + + + + + + 消息 + Message + + + + 此次修改失败,已启动回滚! + The modification failed, a rollback has been initiated! + + + + KbdTable + + + 查找替换 + %1 选中行 查找与替换 + Find and Replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 消息 + Message + + + + 行越界 + Row out of bounds + + + + 列越界 + Column out of bounds + + + + :数据错误 + Data error: + + + + + 请先保存修改 + Please save changes first + + + + + 该列不可编辑 + This column is not editable + + + + + 该列是主键,是否仍然修改? + This column is a primary key, do you still want to modify it? + + + + + 该列是主键,不可编辑 + This column is a primary key and cannot be edited + + + + + 开始执行自增菜单 + Start Executing Auto-increment Menu + + + + 批量修改 + Batch Modify + + + + 删除行 + Delete Row + + + + + 开始执行批量修改 + Start Executing Batch Modify + + + + + + + 提交事务失败! + Transaction Submission Failed! + + + + + 修改失败 + Modification Failed + + + + 确定删除数据? + Are you sure you want to delete the data? + + + + + 开始执行删除菜单 + Starting to execute the delete menu + + + + 开启事务失败! + Failed to start transaction! + + + + 删除失败 + Deletion failed + + + + 保存文件 + Save File + + + + 导出失败 + Export Failed + + + + 导出成功 + Export Successful + + + + 导入操作会直接修改数据库,需确保数据正确有效,否则会导致配置错误! + Importing will directly modify the database; ensure the data is correct and valid, otherwise it may cause configuration errors! + + + + 已知悉风险 + I acknowledge the risks + + + + 取消 + Cancel + + + + 打开文件 + Open File + + + + 文件打开失败! + Failed to Open File! + + + + 导入成功 + Import Successful + + + + 控件未加载数据 + Control has not loaded data + + + + 表格内容未提交,是否提交到数据库? + The table content has not been submitted, would you like to submit it to the database? + + + + 警告 + Warning + + + + 错误 + Error + + + + 保存成功! + Saved Successfully! + + + + KbdTableDataMgr + + + 本用户无编辑权限 + This user has no editing permissions + + + + 开启事务失败 + Failed to start transaction + + + + 系统退出,开始清理KbdTableDataMgr + Exiting system, starting to clean up KbdTableDataMgr + + + + KbdTableModel + + + 非重写提交模式 + Non-overwriting commit mode + + + + 删除数据失败! + Failed to delete data! + + + + 修改数据失败! + Failed to modify data! + + + + 插入数据失败! + Failed to insert data! + + + + KbdWaitPrgDlg + + + 正在处理,请稍候.... + Please wait while processing... + + + + KbdWidget + + + + + + 消息 + Message + + + + 此次修改失败,已启动回滚! + The modification failed, a rollback has been initiated! + + + + 回滚事务失败! + Transaction rollback failed! + + + + QObject + + + + 数据库链接打开失败: + Failed to open database connection: + + + + + 当前数据库地址: + Current database address: + + + + + 数据库: + Database: + + + + + 用户: + User: + + + + + 数据库链接已关闭!请重新打开软件 + The database connection has been closed! Please restart the software. + + + + + 重新打开链接 + Reopen connection + + + + QtBoolEdit + + + + + True + True + + + + + False + False + + + + QtBoolPropertyManager + + + True + True + + + + False + False + + + + QtCharEdit + + + Clear Char + Clear Character + + + + QtColorEditWidget + + + ... + Choose Color... + + + + QtColorPropertyManager + + + Red + Red + + + + Green + Green + + + + Blue + Blue + + + + Alpha + Alpha + + + + QtCursorDatabase + + + Arrow + Arrow + + + + Up Arrow + Up Arrow + + + + Cross + Cross + + + + Wait + Wait + + + + IBeam + IBeam + + + + Size Vertical + Size Vertical + + + + Size Horizontal + Size Horizontal + + + + Size Backslash + Size Backslash + + + + Size Slash + Size Slash + + + + Size All + Size All + + + + Blank + Blank + + + + Split Vertical + Split Vertical + + + + Split Horizontal + Split Horizontal + + + + Pointing Hand + Pointing Hand + + + + Forbidden + Forbidden + + + + Open Hand + Open Hand + + + + Closed Hand + Closed Hand + + + + What's This + What's This + + + + Busy + Busy + + + + QtFontEditWidget + + + ... + ... + + + + Select Font + Select Font + + + + QtFontPropertyManager + + + Family + Family + + + + Point Size + Point Size + + + + Bold + Bold + + + + Italic + Italic + + + + Underline + Underline + + + + Strikeout + Strikeout + + + + Kerning + Kerning + + + + QtKeySequenceEdit + + + Clear Shortcut + Clear Shortcut + + + + QtLocalePropertyManager + + + %1, %2 + %1, %2 + + + + Language + Language + + + + Country + Country + + + + QtPointFPropertyManager + + + (%1, %2) + (%1, %2) + + + + X + X + + + + Y + Y + + + + QtPointPropertyManager + + + (%1, %2) + (%1, %2) + + + + X + X + + + + Y + Y + + + + QtPropertyBrowserUtils + + + [%1, %2, %3] (%4) + [%1, %2, %3] (%4) + + + + [%1, %2] + [%1, %2] + + + + QtRectFPropertyManager + + + [(%1, %2), %3 x %4] + [(%1, %2), %3 x %4] + + + + X + X + + + + Y + Y + + + + Width + Width + + + + Height + Height + + + + QtRectPropertyManager + + + [(%1, %2), %3 x %4] + [(%1, %2), %3 x %4] + + + + X + X + + + + Y + Y + + + + Width + Width + + + + Height + Height + + + + QtSizeFPropertyManager + + + %1 x %2 + %1 x %2 + + + + Width + Width + + + + Height + Height + + + + QtSizePolicyPropertyManager + + + + <Invalid> + <Invalid> + + + + [%1, %2, %3, %4] + [%1, %2, %3, %4] + + + + Horizontal Policy + Horizontal Policy + + + + Vertical Policy + Vertical Policy + + + + Horizontal Stretch + Horizontal Stretch + + + + Vertical Stretch + Vertical Stretch + + + + QtSizePropertyManager + + + %1 x %2 + %1 x %2 + + + + Width + Width + + + + Height + Height + + + + QtTreePropertyBrowser + + + 属性 + Property + + + + 值 + Value + + + + TableXmlRes + + + 车站编号 + Station Number + + + + 描述 + Description + + + + Worker + + + 调用%1存储过程失败!参数:%2 + Failed to call the %1 stored procedure! Parameters: %2 + + + + + + + + 提交事务失败!启动回滚 + Transaction submission failed! Initiating rollback + + + + + 存储过程实例化设备组失败!%1 + Failed to instantiate the device group in the stored procedure! %1 + + + + 套件数据格式不对! + The suite data format is incorrect! + + + + + 文件格式不对! + The file format is incorrect! + + + + %1文件打开不成功! + Failed to open %1 file! + + + + 未选择导入的RTU! + No RTU selected for import! + + + + 开始导入数据CSV:%1 RTU:%2 + Starting data import from CSV: %1 RTU: %2 + + + + + + + + + + 清空参数表%错误! + Error clearing parameter table %! + + + + 设备 + Device + + + + + 累积量 + Accumulative Quantity + + + + + 模拟量 + Analog Quantity + + + + + 数字量 + Digital Quantity + + + + + 数字量控制 + Digital Quantity Control + + + + + 保护定值 + Protection Setting + + + + + 导入失败:数据库导入失败! + Import Failed: Database Import Failed! + + + + 未检测到任何设备模板 + No device templates detected + + + + 调用存储过程失败! + Stored Procedure Call Failed! + + + + + + 导入失败!事务已回滚!原因: + Import Failed! Transaction has been rolled back! Reason: + + + + + + 导入失败!原因:事务开启失败 + Import Failed! Reason: Failed to start transaction + + + + 导入结束CSV:%1 + Import Completed CSV: %1 + + + + 执行SQL语句失败 + SQL Statement Execution Failed + + + + 创建设备出错 + Error creating device + + + + 实例化失败! + Instantiation failed! + + + + 批量处理错误! + Batch processing error! + + + + 提交事务失败,已回滚 + Transaction submission failed, has been rolled back + + + + 实例化成功 + Instantiation successful + + + + 关联前置设备成功! + Successfully associated front-end device! + + + + + + + + 缺少配置文件%1 + Missing configuration file %1 + + + + 文件写入不成功,导出失败! + File write failed, export failed! + + + + 导出成功!文件保存在:%1 + Export successful! File saved in: %1 + + + + + 文件打开不成功! + Failed to open file! + + + + 缺少必要的配置文件! + Missing required configuration file! + + + + + + + + 数据库操作:清空表格失败! + Database operation: Failed to clear table! + + + + 导入成功! + Import successful! + + + + + 关联失败! +后台设备与前置设备数量不一致 + 关联失败! +后台设备与前置设备数量不一致 + Association failed! +The number of backend devices does not match the front-end devices + + + + + 关联失败!,失败设备%1 + Association failed! Failed device %1 + + + + + 关联失败!启动回滚,失败设备%1 + Association failed! Initiating rollback, failed device %1 + + + + 关联成功! + Association successful! + + + + 关联失败!失败设备组:%1 + Association failed! Failed device group: %1 + + + + 关联失败!原因:提交事务失败!启动回滚 + Association failed! Reason: Transaction submission failed! Initiating rollback + + + + 关联完毕! + Association complete! + + + + 批量实例化设备组数据错误 + Batch instantiation of device group data error + + + + 数据库链接出错 + Database connection error + + + + 不存在前置设备%1 + Front-end device %1 does not exist + + + + %1 中的表的列数和描述数量不一致! + The number of columns in the %1 table does not match the number of descriptions! + + + + 获取%1 信息失败! + Failed to retrieve %1 information! + + + + 导入失败:没有%1表! + Import failed: No %1 table! + + + + 关联失败!数据库链接错误! + Association failed! Database connection error! + + + + 关联失败!不存在相同名称的前置设备%1,请手动关联! + Association failed! There is no front-end device with the same name %1, please associate manually! + + + + 关联失败!存在多个相同名称的前置设备%1,请手动关联 + Association failed! There are multiple front-end devices with the same name %1, please associate manually + + + + 错误:没有%1表! + Error: No %1 table! + + + + 错误:没有此列%1 + Error: No such column %1 + + + + 生成前置模板模型失败! + Failed to generate front-end template model! + + + + 删除前置模板%1失败 + Failed to delete front-end template %1 + + + + 模拟量控制 + Analog Control + + + + excel文件中没有%1表 + The excel file does not contain a %1 sheet + + + + + 表格%1中没有%2列 + The %1 sheet does not contain a %2 column + + + + 设备模板名为空! + The device template name is empty! + + + + 存在同名模板%1,无法导入 + A template with the same name %1 exists, cannot import + + + + 写入TAG_NAME失败 + Failed to write TAG_NAME + + + + 写入设备描述失败 + Failed to write device description + + + + 前置设备模板 + Front-end device template + + + + 累积量模板点 + Accumulative quantity template point + + + + 模拟量模板点 + Analog quantity template point + + + + 数字量模板点 + Digital quantity template point + + + + 混合量模板点 + Mixed quantity template point + + + + 模拟量控制点 + Analog control point + + + + 数字量控制点 + Digital Control Point + + + + 混合量控制点 + Mixed Quantity Control Point + + + + 数据块 + Data Block + + + + + + + 间隔信号 + Interval Signal + + + + kbdDevInstWidget + + + 专业 + Professional + + + + 多选 + Multi-select + + + + 查询 + Query + + + + + 全选 + Select All + + + + + 反选 + Invert Selection + + + + 显示位置 + Show Location + + + + 显示设备组 + Show Device Group + + + + 显示设备 + Show Device + + + + kbdDevPointWidget + + + 确定 + OK + + + + 点类型 + Point Type + + + + 点值 + Point Value + + + + 点状态 + Point Status + + + + 标签 + Label + + + + 模拟量 + Analog Quantity + + + + 数字量 + Digital Quantity + + + + 累积量 + Accumulative Quantity + + + + 混合量 + Mixed Quantity + + + + kbdSearchWidget + + + 搜索 + Search + + + + 清除 + Clear + + + + 位置、设备组或设备描述关键字 + Keywords for location, device group, or device description + + + + kbdXlsxRead + + + 打开失败: + Failed to open: + + + + kbdtableproperty + + + + 修改失败 + Modification Failed + + + + 修改成功 + Modification Successful + + + diff --git a/resource/fr/model_studio/translate/model_user_FR.qm b/resource/fr/model_studio/translate/model_user_FR.qm new file mode 100644 index 0000000000000000000000000000000000000000..3f50874834e38ff0b64fccca79da349003d99969 GIT binary patch literal 19277 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 Zh*Ia4)|(bz*kX7#yRCO(cAYZC_5b{P7p?#R literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/translate/model_user_FR.ts b/resource/fr/model_studio/translate/model_user_FR.ts new file mode 100644 index 00000000..1e48b4a2 --- /dev/null +++ b/resource/fr/model_studio/translate/model_user_FR.ts @@ -0,0 +1,971 @@ + + + + + CAcsErrorDlg + + + 下装失败列表 + Liste des échecs du téléchargement + Liste des échecs du téléchargement + + + + 设备标签 + Étiquette de l'équipement + Étiquette de l'équipement + + + + 用户名 + Nom de l'utilisateur + Nom de l'utilisateur + + + + 用户卡 + Carte d'utilisateur + + + + 人脸 + Visage + + + + 失败指纹ID + ID d'empreinte digitale échouée + + + + KbdAcsDevCfg + + + 添加 + Ajouter + + + + 删除 + Supprimer + + + + 修改 + Modifier + + + + 下装到设备 + Télécharger vers l'équipement + Télécharger vers l'équipement + + + + 请选择对应设备 + Veuillez sélectionner l'équipement correspondant + Veuillez sélectionner l'équipement correspondant + + + + 添加<< + Ajouter<< + + + + 删除>> + Supprimer>> + + + + 保存 + Sauvegarder + Sauvegarder + + + + 设备关联节点配置 + Configuration des nœuds associés à l'équipement + Configuration des nœuds associés à l'équipement + + + + + + + 事务已回滚 + La transaction a été annulée + + + + 保存成功! + Sauvegarde réussie ! + Sauvegarde réussie ! + + + + 保存失败 + Échec de la sauvegarde + Échec de la sauvegarde + + + + 添加成功! + Ajout réussi ! + + + + 删除成功! + Suppression réussie ! + + + + 修改成功! + Modification réussie ! + + + + + 消息 + Message + + + + %1已经修改,是否保存? + %1 a été modifié, souhaitez-vous sauvegarder ? + %1 a été modifié, souhaitez-vous sauvegarder ? + + + + KbdRoleView + + + 添加 + Ajouter + + + + 删除 + Supprimer + + + + 修改 + Modifier + + + + 请选择对应角色 + Veuillez sélectionner le rôle correspondant + + + + + 添加<< + Ajouter<< + + + + + 删除>> + Supprimer>> + + + + + 保存 + Sauvegarder + + + + 取消所有责任区 + Annuler toutes les zones de responsabilité + + + + 全选责任区 + Sélectionner toutes les zones de responsabilité + + + + 角色普通功能定义 + Définition des fonctions normales du rôle + + + + 角色特殊功能定义 + Définition des fonctions spéciales du rôle + + + + 角色画面浏览权限定义 + Définition des autorisations de visualisation de l'écran pour le rôle + + + + 角色报表浏览权限定义 + Définition des autorisations de visualisation des rapports du rôle + Définition des autorisations de visualisation des rapports du rôle + + + + 角色数据库表编辑权限定义 + Définition des autorisations d'édition des tables de la base de données du rôle + Définition des autorisations d'édition des tables de la base de données du rôle + + + + + + + + + + + 事务已回滚 + La transaction a été annulée + + + + + + + + 保存成功! + Sauvegarde réussie ! + + + + + + + + 保存失败 + Échec de la sauvegarde + + + + 添加成功! + Ajout réussi ! + + + + 数据库链接错误 + Erreur de connexion à la base de données + + + + 以下用户组引用了编号为 %1的角色,请先修改用户组的所属角色! + + Le groupe d'utilisateurs suivant utilise le rôle numéro %1, veuillez d'abord modifier le rôle associé au groupe d'utilisateurs ! + + + + + 删除成功! + Suppression réussie ! + + + + 修改成功! + Modification réussie ! + + + + + 消息 + Message + + + + %1已经修改,是否保存? + %1 a été modifié, souhaitez-vous sauvegarder ? + + + + KbdUserFuncWidget + + + 通用功能定义 + Définition des fonctions générales + + + + 特殊功能定义 + Définition des fonctions spéciales + + + + + + 事务已回滚 + La transaction a été annulée + + + + 添加成功! + Ajout réussi ! + + + + 请选中要修改的行 + Veuillez sélectionner la ligne à modifier + + + + 修改成功! + Modification réussie ! + + + + 基础数据,禁止删除 + Données de base, suppression interdite + + + + 删除成功! + Suppression réussie ! + + + + + + 消息 + Message + + + + 提交事务失败,已回滚 + Échec de la transaction, elle a été annulée + + + + KbdUserGroupView + + + 添加 + Ajouter + + + + 删除 + Supprimer + + + + 修改 + Modifier + + + + 请选择对应用户组 + Veuillez sélectionner le groupe d'utilisateurs correspondant + + + + 添加<< + Ajouter<< + + + + 删除>> + Supprimer>> + + + + + 保存 + Sauvegarder + Sauvegarder + + + + 取消全选 + Annuler la sélection + + + + 全选 + Tout sélectionner + + + + 所属位置 + Emplacement associé + Emplacement associé + + + + 所属角色 + Rôle associé + + + + 特殊功能 + Fonction spéciale + + + + 画面权限 + Autorisations d'écran + Autorisations d'écran + + + + 报表浏览 + Visualisation des rapports + + + + 数据库表编辑权限 + Autorisations d'édition des tables de la base de données + + + + + + + + + 事务已回滚 + Transaction annulée + + + + + + + + + 保存成功! + Sauvegarde réussie ! + Sauvegarde réussie ! + + + + + + + + + 保存失败 + Échec de la sauvegarde + Échec de la sauvegarde + + + + + + 事务已回滚! + Transaction annulée ! + + + + 添加成功! + Ajout réussi ! + + + + 数据库链接错误 + Erreur de connexion à la base de données + + + + 以下用户引用了编号为 %1的用户组,请先修改用户的所属用户组! + + Les utilisateurs suivants font référence au groupe d'utilisateurs avec l'ID %1, veuillez modifier d'abord leur groupe d'appartenance ! + + + + + 删除成功! + Suppression réussie ! + + + + 修改成功! + Modification réussie ! + + + + + 消息 + Message + + + + %1已经修改,是否保存? + %1 a été modifié, voulez-vous sauvegarder ? + %1 a été modifié, voulez-vous sauvegarder ? + + + + KbdUserView + + + 添加 + Ajouter + + + + 删除 + Supprimer + + + + 修改 + Modifier + + + + 所属用户组 + Groupe d'utilisateurs + + + + 组长所属组 + Groupe du chef d'équipe + + + + 所属部门 + Département + + + + 生物识别 + Biométrie + + + + + + 电子签章 + Signature électronique + + + + + + + + + + + + + 事务已回滚 + Transaction annulée + + + + + + 保存成功! + Sauvegarde réussie ! + Sauvegarde réussie ! + + + + + + + + + + + 保存失败 + Échec de la sauvegarde + + + + 添加<< + Ajouter<< + + + + 删除>> + Supprimer>> + + + + 保存 + Sauvegarder + + + + 采集人脸 + Collecter visage + + + + 采集指纹 + Collecter empreinte + + + + 人脸信息 + Informations de visage + Informations de visage + + + + 指纹信息 + Informations d'empreintes + + + + 导入签章 + Importer signature + + + + 删除签章 + Supprimer signature + + + + (请选择小于5M且背景透明的PNG格式图片) + (Veuillez choisir une image PNG inférieure à 5 Mo avec fond transparent) + + + + 上传人脸照片 + Téléverser photo de visage + Téléverser photo de visage + + + + 设备采集人脸 + Collecter visage avec équipement + + + + + 修改人脸描述 + Modifier la description du visage + Modifier la description du visage + + + + 修改指纹 + Modifier empreinte + + + + 删除指纹 + Supprimer empreinte + + + + 请添加人脸信息 + Veuillez ajouter des informations de visage + Veuillez ajouter des informations de visage + + + + 新增用户信息 + Ajouter des informations utilisateur + + + + + + 提交回滚失败! + Échec de l'annulation de la transaction ! + Échec de l'annulation de la transaction ! + + + + 添加成功! + Ajout réussi ! + Ajout réussi ! + + + + 删除成功! + Suppression réussie ! + Suppression réussie ! + + + + 请选择对应的用户! + Veuillez sélectionner l'utilisateur correspondant ! + Veuillez sélectionner l'utilisateur correspondant ! + + + + 修改用户信息 + Modifier les informations utilisateur + + + + 修改成功! + Modification réussie ! + Modification réussie ! + + + + + 消息 + Message + + + + %1已经修改,是否保存? + %1 a été modifié, voulez-vous sauvegarder ? + %1 a été modifié, voulez-vous sauvegarder ? + + + + + + + + + + + 请选择用户 + Veuillez sélectionner un utilisateur + + + + 选择人脸图片 + Sélectionnez l'image de visage + + + + 描述 + Description + + + + 修改失败 + Échec de la modification + + + + + 删除失败 + Échec de la suppression + + + + 选择电子签章图片 + Sélectionnez l'image de la signature électronique + + + + KbdUserXmlWidget + + + 添加记录 + Ajouter un enregistrement + + + + 修改记录 + Modifier un enregistrement + + + + 删除记录 + Supprimer un enregistrement + + + + + 安全策略有且只允许有一条 + Il ne peut y avoir qu'une seule politique de sécurité + + + + 选择画面文件 + Sélectionner un fichier d'écran + + + + + + + 事务已回滚 + La transaction a été annulée + + + + + 添加成功! + Ajout réussi ! + + + + 请选中要修改的行 + Veuillez sélectionner la ligne à modifier + + + + 修改成功! + Modification réussie ! + + + + + + + + 数据库链接错误 + Erreur de connexion à la base de données + + + + 以下用户属于该部门 %1,请先修改用户所属部门! + + Les utilisateurs suivants appartiennent au département %1, veuillez d'abord modifier leur département ! + + + + + 以下角色引用了画面编号为 %1的画面,请先修改角色的画面浏览权限! + + Les rôles suivants font référence à l'écran numéro %1, veuillez d'abord modifier les autorisations de visualisation des rôles ! + + + + + 以下用户组引用了画面编号为 %1的画面,请先修改用户组的画面浏览权限! + + Les groupes d'utilisateurs suivants font référence à l'écran numéro %1, veuillez d'abord modifier les autorisations de visualisation des groupes d'utilisateurs ! + + + + + 以下角色引用了报表编号为 %1的报表,请先修改角色的报表浏览权限! + + Les rôles suivants font référence au rapport numéro %1, veuillez d'abord modifier les autorisations de visualisation des rapports pour ces rôles ! + + + + + 以下用户组引用了报表编号为 %1的报表,请先修改用户组的报表浏览权限! + + Les groupes d'utilisateurs suivants font référence au rapport numéro %1, veuillez d'abord modifier les autorisations de visualisation des rapports pour ces groupes d'utilisateurs ! + + + + + 删除成功! + Suppression réussie ! + + + + + + 消息 + Message + + + + 提交事务失败,已回滚 + Échec de la transaction, elle a été annulée + Échec de la transaction, elle a été annulée + + + + kbdAcsCollectDlg + + + 开始采集 + Commencer la collecte + + + + 设备 + Équipement + Équipement + + + + 描述 + Description + + + + 获取设备配置信息失败 + Échec de l'obtention des informations de configuration de l'équipement + Échec de l'obtention des informations de configuration de l'équipement + + + + 连接成功 + Connexion réussie + + + + 连接失败 + Échec de la connexion + + + + 采集中,请在设备上按提示操作 + Collecte en cours, veuillez suivre les instructions sur l'équipement + Collecte en cours, veuillez suivre les instructions sur l'équipement + + + + + + 采集失败 + Échec de la collecte + + + + + 采集成功 + Collecte réussie + + + + 消息 + Message + + + + kbdLoadAcsInfoToDevDlg + + + 选择下装设备 + Sélectionner l'équipement de téléchargement + Sélectionner l'équipement de téléchargement + + + + 标签 + Étiquette + + + + 描述 + Description + + + + 启动下装失败: + Échec du démarrage du téléchargement : + + + + 登录失败: + Échec de la connexion : + + + + 下装成功 + Téléchargement réussi + + + + 消息 + Message + + + diff --git a/resource/fr/model_studio/translate/model_waiting_dlg_EN.qm b/resource/fr/model_studio/translate/model_waiting_dlg_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..de8540a69fddca88d01665d10ae98d733f8ffac4 GIT binary patch literal 518 zcmcE7ks@*G{hX<16=n7(EZlq7iGhJZf$iz0M+^*%No@ZN@__sTj+1STK$?Nu=MYH# zb|z5rC^L{{#SqL;%8yZGsx70>!7JlVD6`OMu<_fCDXf8n#n_3!sIvV+vPWG3e1r!#`=vtaN6 zn+!1=d2nQMf@)pcf5KrK?NCD`@RG^gwK5|^Z4NVY) z?hFHl0AOgQLj9t^P!4sJ0?-;rXr_WgAcvt6-KQ_sZ-3D+;pzV7=U^MLTG0UvR3=77 E03@WAvj6}9 literal 0 HcmV?d00001 diff --git a/resource/fr/model_studio/translate/model_waiting_dlg_EN.ts b/resource/fr/model_studio/translate/model_waiting_dlg_EN.ts new file mode 100644 index 00000000..e6833435 --- /dev/null +++ b/resource/fr/model_studio/translate/model_waiting_dlg_EN.ts @@ -0,0 +1,30 @@ + + + + + Dialog + + + + 正在登录数据库... + 正在登陆数据库... + Logging into the database... + + + + 请耐心等待。。。 + Please wait patiently... + + + + 正在提交登录信息! + 正在提交登陆信息! + Submitting login information! + + + + 正在等待数据库回复。。。 + Waiting for the database response... + + + diff --git a/resource/fr/model_studio/translate/plan_curve_EN.qm b/resource/fr/model_studio/translate/plan_curve_EN.qm new file mode 100644 index 0000000000000000000000000000000000000000..f46a5638fae9a8ba759634313728821911c5010e GIT binary patch literal 7796 zcmb_heNa@_6+gSk^0gnhASyDtWK?2XMOn>)Y_U+qc z-`f{c7`gA=chB#hbME=N$L|i;&ilh>y@x+6E*jr_>e|Qah|E1iv;IPqc82KFF+6`v z^zU=Tf7ocLBD%AJ$n?w5$>Z=Hji~Y}-nd`H<;m_8{KhFlQ{EM>O|a7}paO44Sh( zJPG^6VfUs`M@9wo{p%j(ll5;=}o z)^=@&JoT2}t-<<&WtRWGznCazEF*3FdEm5Wl&!X7zAoeUAvgH_X~xv<3DCWe`RI-X zpc~8F9-a-n8<`U>=*wZseq`t@^jep_rt22wy*W!Z;CqHA=SFui^zqxAPwmeT*{ZCT zr|Q6;&AR96UabGf`gxNC{Y+TDs9XbiR@ml0+lBEJ+Y?)F;=IV#nLdE^n{0iXKZhPZ zu}w6YFh5}X(}x8MHHH?i-J?f33}f%EyhgM677(=kGCIlCOD zyW1dVzQa866WGITN7fCTf7*S=ljZk_7PLERzk~Cb^|<3@X*b3_jwwIv#&)p*AKy#E z&a>zl4v9m+Tbgv}Tn5J6iV9!TmUX^em7YdVy*ubJv9(runtbG?T5?k>*bp>Xa!;S! z+ZP&c)24LNi{t^F7k>j<^!v5x?Nm+8I+&@YIfkRbc5g=#wtGAD*!~hfiVl*BrXzD4vAL?!=+cZ9cVn}ss#a$`6rIT} zyoEdpf0oerap_WzKH0n|8MIx8!*8HQ9C|IqbY>GUQvYCNDAk!RR-rMYufZ=169Hg1 z1G$k}XCliThoo2f^wbXVvgrkI*9erDfN4_On7(uc^epyo1Z9v*0v z&7CKcLY@*lv>mclAz(0F`>BPUm!haF>9q^;(Rby`zt-1PCX$$&np7%wD3sEn1L5;m z^yweg<^|kU@Yqtvf}X-z41coyK=|5aeSEJ9pM_VItiZ2{;p0U7-0m9qoC|vfutJ37 zW;}bSlvB(M$^p>9k>k8@siFnJW#shRp=;ye?hB>z(UbB!hlP`-aH8M?GtaU;V~B|m zgg`=6#$+^aM6*Q@BKk4!qMe*(yQ1jg1Q8~C+al+F5k7VV^@e&k85fhg+Her{P11(87cCp$ihAtDy;SJ_G8)Df#%gK2#wu0o+{8 z+P-yl=s|reN@>iuSUHlE7aT`&--_ZJ@h!hf*01JUQS;O@&Yh?ze8>gNG+U?Th-JAV z>FSW+k(=diVVP3<1%xbp`U0E^spDBM4yzrO|P#6vq(L`SYjqbZ0U5=1ymcGc0( zYjb1{m=N0ZnTp|S`jf(N6#uLEkxSv98zbb@K;xmT0?G(TjI)ir=JO&Zu`H}Eil;e?Ts|dr{8B#ltMEvQ z0Gy;CQPgE5XqJkIF!K<&+IU__qQE)I9>#UJ($G%H!gS(p#>^mUT-s*fU{V;ifvqs3 zt#G&KZIcD_sD6UN!0=6!QDUCWmcsB@P9zqmKfbE zS_eMhW=P5gHY=p3;QFk2;X|j*#kmhcqGpN}GY%FeJNqX0bxHe1q^>jix?=9cvn0@} zs8Z2GrU+QNttH+nO1xuR1)-6AR-oEDSuUA|G7`@0v>u9K?Zt$mS!p5at07mRpHVPJ z5mFb-P6Z@Mu{;fvs#vZ@o5=^uWt~^igB4jS+H0-l&M0yab3`xBp4l+FP4C3JXm+YG z%2jQ$lE|r7SGmw|4GkZ}<7Z=UE-7~*b>J?5b_(lZj-LpRUP_UmHYq#`4x_4P{NSzu zPU8E+ET^)@o#+LNt}wd@uri7Pqp%=TdY^Q&>2?WVp4EBv+8oHOEx2h z>cXvob^cUUAlOc3vT@Kx4A-eZ&n$hdf=?s$>Sm?jVI_=Eajazde-=8+)J%PiDrXZH zJXUO}4MJUFCHB7RU^MLh=A!R$Ih(l|wc@=DCKgl~`vMeSq0xh7a&Jc&sxx6ShAOZP z3A`op!%Uo|4Q9BFcxLTfmK&S+e}%9%)??r%X3lfLiP#u + + + + CCombBoxDelegate + + + 星期日 + Sunday + + + + 星期一 + Monday + + + + 星期二 + Tuesday + + + + 星期三 + Wednesday + + + + 星期四 + Thursday + + + + 星期五 + Friday + + + + 星期六 + Saturday + + + + 否 + No + + + + 是 + Yes + + + + CPlanCurvesConfigure + + + CPlanCurvesConfigure + + + + + 类型配置 + Type Config + + + + 年时段配置 + Year Interval Config + + + + 周时段配置 + Week Interval Config + + + + 日时段模板配置 + Day Interval Temp Config + + + + 计划曲线配置 + PlanCurve Config + + + + 新建类型 + New Type + + + + + + + + + + 保存 + Save + + + + + + + 计划类型 + Plan Type + + + + + + + + + + 删除 + Delete + + + + 新建模板类型 + New Temp Type + + + + 日时段模板类型 + Day Interval Temp Type + + + + 新建年时段配置 + New Year Interval + + + + 新建周时段配置 + New Week Interval + + + + 新建日时段配置 + New Day Interval + + + + + 日模板类型 + Day Temp Type + + + + 新建计划曲线 + New PlanCurve + + + + 关联标签 + Related Tag + + + + 计划曲线名称 + Name + + + + 类型ID + Type ID + + + + 所属位置 + Location + + + + 所属专业 + Subsystem + + + + 时段曲线配置 + Interval Curve Config + + + + 导入模板 + Import Temp + + + + 新建 + New + + + + 预览 + Preview + + + + + 否 + No + + + + 是 + Yes + + + + 星期日 + Sunday + + + + 星期一 + Monday + + + + 星期二 + Tuesday + + + + 星期三 + Wednesday + + + + 星期四 + Thursday + + + + 星期五 + Friday + + + + 星期六 + Saturday + + + + + + + ID + + + + + + 类型名称 + Name + + + + 年时段名称 + Name + + + + 是否例外 + isException + + + + 开始月 + Start Month + + + + 开始日 + Start Day + + + + 结束月 + End Month + + + + 结束日 + End Day + + + + 周时段名称 + Name + + + + 星期 + Week + + + + 年时段 + Year Interval + + + + 周时段 + Week Interval + + + + valueId + + + + + + + 日时段名称 + Name + + + + + 开始时间 + Start Time + + + + + 结束时间 + End Time + + + + + 值 + Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 提示 + Prompt + + + + + + + + + 保存成功! + Save Successfully! + + + + + + + + + 保存失败! + Save failed! + + + + 行: %1 结束时间不能小于开始时间! + Row:%1 End time cannot less than start time! + + + + 行: %1 与行:%2 时间段不连续! + Row: %1 is not discontinuous with Row: %2! + + + + 周时段配置需覆盖一整周 + Week interval configuration needs to cover the entire week + + + + %1 : 开始月不能大于结束月! + %1 : Begin month cannot be bigger than the end month! + + + + %1 : 开始日不能大于结束日! + %1 : Begin day cannot be bigger than the end day! + + + + + 年配置需要覆盖全年! + Year interval configuration need to cover the whole year! + + + + 请从1月1日开始配置! + Please start configuration from January 1st! + + + + 请配置到12月31日! + Please configure until December 31! + + + + 模拟量出口 + Analog output + + + + 是否删除曲线'%1'? + Delete curve '%1' ? + + + + 删除成功! + Delete successfully! + + + + 删除失败! + Delete failed! + + + + + + 计划类型为空,请检查类型配置! + The plan type is empty,please check type config! + + + + 周时段配置被使用,无法保存! + Week interval configuration is in use, cannot be saved! + + + + 日模板类型为空,请检查类型配置! + The day temp type is empty,please check type config! + + + + 未找到年描述 + No year description found + + + + 未找到周描述 + No week description found + + + + 导入失败 + Import failed + + + + 导入成功 + Import successfully + + + diff --git a/resource/fr/model_studio/translate/tableName.json b/resource/fr/model_studio/translate/tableName.json new file mode 100644 index 00000000..9410df9a --- /dev/null +++ b/resource/fr/model_studio/translate/tableName.json @@ -0,0 +1,42 @@ +{ +"ALARM_ACTION_DEFINE": "报警动作", +"ALARM_KEYWORD_DEFINE": "报警关键字", +"ALARM_TYPE_DEFINE": "报警类型", +"ALARM_STATUS_DEFINE": "报警状态", +"ALARM_LEVEL_DEFINE":"报警优先级定义", +"ALARM_MANNER_DEFINE": "报警方式定义", +"ALARM_LEVEL_SOUND_DEF":"责任区语音定义", +"DEV_TYPE_DEF":"设备类型表", +"DEV_GROUP":"设备分组", +"OPT_HANDOVER_GRP":"权限移交组", +"OPT_TOKEN_DEFINE":"标志牌", +"OPT_SHIELD_DEFINE":"屏蔽表定义", +"OPT_CTRL_ACT_DEFINE":"控制动作组", +"DICT_STATE_TEXT_INFO":"数字量文本", +"DICT_VOL_LEVEL":"电压等级", +"DICT_UNIT_INFO":"单位定义", +"ATS_FES_LOCATION_INFO":"ATS车站配置表", +"ATS_FES_PLATFORM_INFO":"前置站台配置表", +"BAS_CRAFT_DEF":"工艺定义", +"BAS_MODE_TYPE":"模式类型", +"BAS_MODE_DEF":"模式定义", +"BAS_TIMETABLE_CTRL_PARAM":"时间表控制参数配置", +"BAS_TIMETABLE_DEF":"时间表定义", +"BAS_TIMETABLE_INFO":"时间表信息表", +"BAS_TIMETABLE_SCHEDULE":"时间表计划", +"PA_AREA_INFO":"PA广播区列表", +"PA_LOCATION_AREA_DEF":"车站广播区定义", +"PA_LOCATION_SEQ_DEF":"PA系统车站序号定义", +"PA_AUDIO_INFO":"预录语音信息", +"PA_BROADCAST_GROUP":"广播组", +"PA_CTRL_PARAM":"PA控制参数配置", +"PA_OPERATOR_DEF":"PA操作员定义", +"PA_OPERATOR_MAP":"操作员与PA操作员映射", +"PA_TIMED_AUDIO":"定时广播", +"PIS_FES_LOCATION_INFO":"前置PIS乘客信息配置表", +"PIS_AREA_INFO":"PIS区域信息", +"PIS_LOCATION_AREA_DEF":"PIS车站发布区定义表", +"PIS_DISPLAY_INFO":"PIS发布记录表", +"PIS_MESSAGE_INFO":"PIS信息表", +"PIS_CTRL_PARAM":"PIS控制参数配置" +} \ No newline at end of file diff --git a/resource/fr/operate_server/translate/operate_server_en.mo b/resource/fr/operate_server/translate/operate_server_en.mo new file mode 100644 index 0000000000000000000000000000000000000000..b2d49a6569002ad175d06c45d19bc49b7eb99357 GIT binary patch literal 11629 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 gBHiz(;#{t<*Tsg@>~&d#k5HVybrgZF?GFwA45)错误,请检查控制动作组配置!" +msgstr "" +"Control action group[Number of Remote Control Component](<1 or >5)error," +"please check the configuration of control action group!" + +#: OptControl.cpp:309 +msgid "控制动作组中[遥控点索引](<1 or >5)错误,请检查控制动作组配置!" +msgstr "" +"Control action group[Index of Remote Control Point](<1 or >5)error,please " +"check the configuration of control action group!" + +#: OptControl.cpp:316 +msgid "控制动作组中[遥控点索引]>[遥控分量数]错误,请检查控制动作组配置!" +msgstr "" +"Control action group[Index of Remote Control Point]>[Number of Remote " +"Control Component]error,please check the configuration of control action " +"group!" + +#: OptControl.cpp:337 +msgid "JSON KeyIdTag 格式错误 !" +msgstr "JSON Tag format error!" + +#: OptControl.cpp:350 +msgid "获得测点基本参数信息错误 !" +msgstr "Error in obtaining basic parameter information of measuring point!" + +#: OptControl.cpp:385 +msgid "获取设备当前值与状态错误!" +msgstr "Error in obtaining current value and status of deviec!" + +#: OptControl.cpp:454 +msgid "获取数字量控制信息表失败,请重试 !" +msgstr "Failed to get digital control infomation table,please try again!" + +#: OptControl.cpp:474 +msgid "没有配置控制动作组,请检查配置 !" +msgstr "No control action group is configured,please check the configuration!" + +#: OptControl.cpp:502 +msgid "获取混合量控制信息表失败,请重试 !" +msgstr "Failed to get mix control infomation table,please try again!" + +#: OptControl.cpp:551 +msgid "获取模拟量控制信息表失败,请重试 !" +msgstr "Failed to get analog control infomation table,please try again!" + +#: OptControl.cpp:668 OptControl.cpp:690 +#, fuzzy +#| msgid "遥控请求失败:" +msgid "" +"\n" +"遥控请求失败:" +msgstr "Remote control request failed:" + +#: OptControl.cpp:774 +msgid "遥控请求失败!!!" +msgstr "Remote control request failed!!!" + +#: OptControl.cpp:779 +msgid "遥控请求成功!" +msgstr "Remote control request success!" + +#: OptControl.cpp:833 +msgid "控制类型为直接控制不需要遥控选择!" +msgstr "Control type is direct control, no remote control selection required!" + +#: OptControl.cpp:845 +msgid "设备操作正忙,请稍后重试 !" +msgstr "Equipment operation is busy,please try again later!" + +#: OptControl.cpp:857 +msgid "只有数字量和混合量支持遥控选择 !" +msgstr "Only digital and mixed support remote control selection!" + +#: OptControl.cpp:870 +msgid "关联前置遥控号为空,请检查配置!" +msgstr "" +"The associated prepositive remote control number is empty,please check the " +"configuration!" + +#: OptControl.cpp:882 +msgid "设备当前值不允许控制到目标值!" +msgstr "" +"The current value of the device is not allowed to control to the target " +"value!" + +#: OptControl.cpp:902 +msgid "当前值与目标值一致,遥控选择失败!" +msgstr "" +"The current value is consistent with the target value,remote control " +"selection failed!" + +#: OptControl.cpp:1139 OptControl.cpp:1152 +msgid "遥控选择失败:" +msgstr "Remote control selection failed:" + +#: OptControl.cpp:1184 +msgid "遥控选择失败:选择命令发送失败!" +msgstr "Remote control selection failed: send selection command failed!" + +#: OptControl.cpp:1195 +msgid "遥控选择失败:控制信息表中插入记录失败!" +msgstr "" +"Remote control selection failed: insert record to control infomation table " +"failed!" + +#: OptControl.cpp:1377 OptControl.cpp:1531 OptControl.cpp:2520 +msgid "遥控执行失败 \n" +msgstr "Remote control execution failed \n" + +#: OptControl.cpp:1688 +#, fuzzy +#| msgid "遥控选择失败 !\n" +msgid "" +"遥控选择失败 !\n" +" " +msgstr "Remote control selection failed!\n" + +#: OptControl.cpp:1695 +msgid "遥控选择成功 !" +msgstr "Remote control selection success!" + +#: OptControl.cpp:1770 +msgid "遥控关闭失败:" +msgstr "Remote control close failed:" + +#: OptControl.cpp:1837 OptControl.cpp:1847 +msgid "命令执行失败:" +msgstr "Command execution failed:" + +#: OptControl.cpp:1860 +msgid "命令执行失败:命令发送失败!" +msgstr "Command execution failed: send command failed!" + +#: OptControl.cpp:1879 +msgid "命令执行失败:控制信息表中插入记录失败!" +msgstr "" +"Command execution failed: insert record to control infomation table failed!" + +#: OptControl.cpp:2015 +msgid "命令执行失败" +msgstr "Command execution failed" + +#: OptControl.cpp:2021 +msgid "命令执行成功" +msgstr "Command execution success" + +#: OptControl.cpp:2199 OptControl.cpp:2212 +msgid "控制执行失败:" +msgstr "Remote control execution failed:" + +#: OptControl.cpp:2245 +msgid "遥控执行失败:控制命令发送失败!" +msgstr "Remote control execution failed: send control command failed!" + +#: OptControl.cpp:2258 +msgid "遥控执行失败:控制信息表中插入记录错误!" +msgstr "" +"Remote control execution failed: insert record to control infomation table " +"failed!" + +#: OptControl.cpp:2785 OptControl.cpp:2798 +msgid "控制取消失败:" +msgstr "Remote control revoke failed:" + +#: OptControl.cpp:2839 +msgid "遥控取消指令发送失败!" +msgstr "Send remote control revoke instruction failed!" + +#: OptControl.cpp:3099 OptControl.cpp:3429 +msgid "遥控选择超时!" +msgstr "Remote control selection timeout!" + +#: OptControl.cpp:3107 OptControl.cpp:3433 +msgid "遥控执行超时!" +msgstr "Remote control execution timeout!" + +#: OptControl.cpp:3113 +msgid "遥控取消超时!" +msgstr "Remote control revoke timeout!" + +#: OptControl.cpp:3119 +msgid "命令执行超时!" +msgstr "Command execution timeout!" + +#: OptControl.cpp:3261 +msgid "遥控请求失败!" +msgstr "Remote control request failed!" + +#: OptControl.cpp:3313 OptControl.cpp:3339 +msgid "遥控选择失败!" +msgstr "Remote control selection failed! " + +#: OptControl.cpp:3366 OptControl.cpp:3394 +msgid "遥控执行失败!" +msgstr "Remote control execution failed!" + +#: OptControl.cpp:3408 +msgid "遥控执行成功!" +msgstr "Remote control execution success!" + +#: OptControl.cpp:3707 OptControl.cpp:3731 +msgid "控制点设置" +msgstr "Control point setting" + +#: OptControl.cpp:3710 OptControl.cpp:3734 +msgid "[人工置数]" +msgstr "[Manual Setting]" + +#: OptControl.cpp:3714 OptControl.cpp:3738 +msgid "[禁止刷新]" +msgstr "[Prohibit to refresh]" + +#: OptControl.cpp:3718 OptControl.cpp:3742 +msgid "[禁止控制]" +msgstr "[Prohibit to control]" + +#: OptControl.cpp:3720 OptControl.cpp:3744 OptShieldSet.cpp:117 OptToken.cpp:56 +msgid ",禁止控制!" +msgstr ",prohibit to control!" + +#: OptHandover.cpp:322 +msgid "获取测点权限移交组参数失败!" +msgstr "" +"Failed to get permission transfer group parameters of measurement point!" + +#: OptHandover.cpp:338 +msgid "获取设备控制权参数失败!" +msgstr "Failed to get the device control permission parameters!" + +#: OptHandover.cpp:343 +msgid "设备控制权不在本系统!" +msgstr "The device control permisson not in this system!" + +#: OptHandover.cpp:451 +msgid " 请求控制权限移交 等待接收" +msgstr "Request control permisson transfer. Waiting to receive" + +#: OptHandover.cpp:456 +msgid " 请求控制权限移交 超时" +msgstr "Request control permisson transfer. Timeout" + +#: OptHandover.cpp:464 +msgid " 接收控制权限 成功" +msgstr "Receive control permisson. Success" + +#: OptHandover.cpp:470 +msgid " 强制收回控制权限 成功" +msgstr "Enforce the recall of control permission. Success" + +#: OptHandover.cpp:476 +msgid " 控制权限移交 拒绝接收" +msgstr "Control permission transfer. Refuse to accept" + +#: OptHandover.cpp:570 +msgid "移交中" +msgstr "In the transfer" + +#: OptHandover.cpp:575 +msgid "移交超时" +msgstr "Transfer timeout" + +#: OptHandover.cpp:584 +msgid "移交成功" +msgstr "Transfer success" + +#: OptHandover.cpp:591 +msgid "拒绝接收" +msgstr "Refuse to accept" + +#: OptShieldSet.cpp:100 +msgid "设备设置" +msgstr "Device settings" + +#: OptShieldSet.cpp:434 +msgid "全站" +msgstr "Total station" + +#: OptShieldSet.cpp:437 +msgid "按责任区" +msgstr "According to the area" + +#: OptShieldSet.cpp:440 +msgid "按电压等级" +msgstr "According to the voltage grade" + +#: OptShieldSet.cpp:443 +msgid "按设备组" +msgstr "According to the device group" + +#: OptShieldSet.cpp:446 +msgid "单设备" +msgstr "Single device" + +#: OptShieldSet.cpp:449 +msgid "UNKOWN" +msgstr "UNKOWN" + +#: OptShieldSet.cpp:507 +msgid "屏蔽ID" +msgstr "Shield ID" + +#: OptShieldSet.cpp:514 +msgid "设置操作 " +msgstr "Set operation" + +#: OptShieldSet.cpp:514 +msgid "取消操作 " +msgstr "Cancel operation" + +#: OptShieldSet.cpp:520 OptToken.cpp:563 +msgid "注释:" +msgstr "Annotation:" + +#: OptShieldSet.cpp:523 +msgid "操作成功" +msgstr "Operation success" + +#: OptShieldSet.cpp:523 +msgid "操作失败" +msgstr "Operation failed" + +#: OptTagSet.cpp:230 +msgid "点标签操作成功" +msgstr "Point Tags operation success" + +#: OptTagSet.cpp:611 +msgid "限值设置成功" +msgstr "Set limit value successful" + +#: OptTagSet.cpp:616 +msgid "限值设置失败" +msgstr "Set limit value failed" + +#: OptToken.cpp:21 +msgid "挂牌检查错误" +msgstr "Error in listing inspection" + +#: OptToken.cpp:36 +msgid "设备挂" +msgstr "Device listed" + +#: OptToken.cpp:420 OptToken.cpp:421 +msgid "标志牌同步" +msgstr "Denoter synchronization" + +#: OptToken.cpp:453 +msgid "挂牌成功" +msgstr "Listing success" + +#: OptToken.cpp:457 +msgid "摘牌成功" +msgstr "Delisting success" + +#: OptToken.cpp:461 +msgid "改牌成功" +msgstr "Change the placard success" + +#: OptToken.cpp:465 +msgid "移牌成功" +msgstr "Move the placard success" + +#: OptToken.cpp:497 +msgid " 挂" +msgstr " Hang " + +#: OptToken.cpp:502 +msgid " 摘" +msgstr " Pick " + +#: OptToken.cpp:507 +msgid " 移动" +msgstr "Move" + +#: OptToken.cpp:512 +msgid " 修改" +msgstr "Modify" + +#: OptToken.cpp:551 +msgid "挂牌ID" +msgstr "Listing ID" + +#: OptToken.cpp:595 +msgid "成功" +msgstr "success" + +#~ msgid " 用户组:" +#~ msgstr "User group:" + +#~ msgid " 操作用户:" +#~ msgstr "Operation user:" + +#~ msgid " 操作主机名:" +#~ msgstr "Operation hostname:" + +#~ msgid "遥控操作失败:获得测点控制信息错误 !" +#~ msgstr "" +#~ "Remote control operation failed: error in obtaining control information!" diff --git a/resource/fr/pub_widget/translate/pub_widget_fr.qm b/resource/fr/pub_widget/translate/pub_widget_fr.qm new file mode 100644 index 0000000000000000000000000000000000000000..52a7500d3bdd6f2bea9b43e918932d750928de97 GIT binary patch literal 1259 zcma)4L1@!p7=3MLYNaG@h?FtMh8{$4!cIF3#8o|rtqMagf<~Kmfi%@7onxos7#kwA zf^KyTMzz#k+6sb{p?DHR5Cm_6h=+8|#p+GAgMNQn+OA8Pg!XIy{O`T*z3&?@hkPGv zt4}@+54^jXefwa6j9i-!q6C3r?y%?iHZF{)pMfzPwV9u!9A z)~J3EM!%G)ZVO|<6{-s|&@<{HCLVVXhlD6(`i}3XBXIQD7nb9i?xtUd{0U8uMg5{8 zsUb0bO%6pQ-BHJe7zSzwwnq{7f_ib@f<||Ua>o2CbGg7&d+VxaWl@PmCS_fbEXh4_ zo`5K;t@}Luh*5(Y>Bvx;_P9zay_wr!N*#z3xJrlw6hh46B&Mx@8isI}PG#uyFw;Xg z-DDFgnUayto5`fHuu*%nW<%SD07T3X0ZW>-)5_XYSxp+b7skV-El7DT4;DOwtI(UWT(yul9zC!p@ZubS s+1wIso5h)rpH@p1l?Ru4|wUo@|qWLVdTWOKz?sPf+0f%rUaR2}S literal 0 HcmV?d00001 diff --git a/resource/fr/pub_widget/translate/pub_widget_fr.ts b/resource/fr/pub_widget/translate/pub_widget_fr.ts new file mode 100644 index 00000000..0e7a6be2 --- /dev/null +++ b/resource/fr/pub_widget/translate/pub_widget_fr.ts @@ -0,0 +1,112 @@ + + + + + CustomCalendarWidget + + + first + premier + + + + last + dernier + + + + CustomDialogTitle + + + 关闭 + Fermer + + + + MainTitle + + + 最小化 + Minimiser + + + + + 最大化 + Maximiser + + + + 关闭 + Fermer + + + + 正常 + Normal + + + + 提示 + Conseil + + + + 是否退出? + Voulez-vous quitter ? + + + + N_MessageBox + + + 警告 + Avertissement + + + + 错误 + Erreur + + + + 提示 + Conseil + + + + 问题 + Problème + + + + 全部是 + Tout accepter + + + + 全部否 + Tout refuser + + + + 确定 + Confirmer + + + + 取消 + Annuler + + + + 是 + Oui + + + + 否 + Non + + + diff --git a/resource/fr/report/translate/report.qm b/resource/fr/report/translate/report.qm new file mode 100644 index 0000000000000000000000000000000000000000..c47581ceba304485937b8a9bd122a6c7abdc8cc9 GIT binary patch literal 319 zcmcE7ks@*G{hX<16=n7(EZlq7iGhJZfrDX92avYrd?>ULNblu*xxfNQm-2h+`vGZ& zOa=x8l%a?rj{_vd2Es4)PkB0f9y^dJ;vAG(kY7|1T#}faothG! znUbDb!U)mo%22^jz>p8rS_0R~^K|{5r|r9*buE3da0SQ!UZ?>`I;FstLUl4IFgO8C v$Y&^LC}v1Sm;*84+1CCS%R7iP#|7w>VxZsBk-WkKG3WW7X)pFo#9|Hr + + + + CReportStackedWidget + + + 返回 + Return + + + + CReportWidget + + + 报表浏览 + Report Browse + + + + 报表编辑 + Report Design + + + + 导出报表 + Export + + + diff --git a/resource/fr/sequence_server/translate/sequence_server_en.mo b/resource/fr/sequence_server/translate/sequence_server_en.mo new file mode 100644 index 0000000000000000000000000000000000000000..ee45f9c8530e9639e392bb132968d51202c28000 GIT binary patch literal 5627 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/ + alternate-background-color: #001d46; + background: #032448; + border: 1px solid #0070a2; +} + + diff --git a/resource/fr/style/dark/AlarmStatisWidget.qss b/resource/fr/style/dark/AlarmStatisWidget.qss new file mode 100644 index 00000000..9deccdae --- /dev/null +++ b/resource/fr/style/dark/AlarmStatisWidget.qss @@ -0,0 +1,98 @@ +QFrame#frame{ + border:0px solid #0a5b93; +} + +QComboBox#m_contrasComb{ + min-width:60px; +} + +QDateEdit#m_contrastTime{ + min-width:100px; +} + +QTableView QTableCornerButton::section { + background-color:transparent; +} + +QListView::item, +QTreeWidget::item{ + height:30px; +} +QListView::item:hover, +QListView::item:selected, +QTreeWidget::item:hover, +QTreeWidget::item:selected{ + background-color:#134a72; + color:#02efef; +} + +QTabWidget QWidget{ + background:#0b2a51; +} +QTabWidget::pane { + border: 1px solid #0669af; + padding: 0px; +} +QTabBar:tab { + width : 113px; + height: 35px; + color: #01a6ec; + background:#0669af; + font-size:16px; + font-weight:Bold; + border:none; +} +QTabBar:tab:selected { + color: #02efef; + background-color: #134a72; + border-bottom:none; +} +CToolTip{ + background:#0669af; +} +QLabel#tipLabel{ + background:#0669af; + color:#01a6ec; + padding:6px; +} +CSWitchButton { + qproperty-backgroundColor: #01a6ec; + qproperty-checkedColor: #01a6ec; + qproperty-handleColor: #12568B;; + qproperty-textColor: white; + qproperty-borderColor:#0a5b93; +} +ContrastWidget, +CDrillDownChart{ + qproperty-labelColor: #333333; + qproperty-gridLineColor: #1A384C; + qproperty-labelsColor: #01a6ec; + qproperty-titleColor: #01a6ec; + qproperty-legendColor: #01a6ec; + qproperty-backgroundColor: #022644; +} +CCurveChartView{ + qproperty-plotTickColor: #017fb7; + qproperty-plotLinePen: #023F63; + qproperty-plotGridColor: #1A384C; + qproperty-plotLegendColor: #01a6ec; + qproperty-plotBackgroundColor:#022644; +} + +QToolButton{ + border: 0px solid #0669af; + border-radius: 0px; + background-color: #0b2a51; + min-height:26px; + width:80px; + color:#01a6ec; +} + +QDateEdit::drop-down{ + width:11px; + height:7px; + border-image: url(../../resource/zh/public/dark/icon/box-down-select.png); + margin-right: 10px; + subcontrol-origin: margin; + subcontrol-position: center right; +} diff --git a/resource/fr/style/dark/BriefReport.qss b/resource/fr/style/dark/BriefReport.qss new file mode 100644 index 00000000..7133ea6e --- /dev/null +++ b/resource/fr/style/dark/BriefReport.qss @@ -0,0 +1,212 @@ +QFrame#frame{ + border:none; + background-color: #0b2a51; +} +QFrame#frame_event{ + background-color: #0c3569; +} + +QLineEdit#iconLineEdit{ +color:#027bb3; +background:#072d48; +border:1px solid #0669af; +height:22px; +} + +QPushButton#ok{ +width:80px; +height:26px; +} + +QPushButton#iconButton{ +background:#001529; +image:url(../../resource/zh/public/dark/icon/calendar.png); +} + +QPushButton#iconButton:hover{ +background:#027bec; +} + +QFrame#MainFrame{ + border:none; + background-color: rgba(3,22,36,1); +} +QFrame#Frame{ + border:none; + background-color: rgba(3,22,36,1); +} +QTabWidget::pane{ + border:none; +} +QTabWidget QStackedWidget{ + background:transparent; +} + +QPushButton#DayButton, +QPushButton#WeekButton, +QPushButton#MonthButton, +QPushButton#QuarterButton, +QPushButton#YearButton{ + width:30px; + border-radius:0px; + color: #027bb3; + background:#0d3756; +} +QPushButton#DayButton:pressed, +QPushButton#WeekButton:pressed, +QPushButton#MonthButton:pressed, +QPushButton#QuarterButton:pressed, +QPushButton#YearButton:pressed{ +color:#02efef; +background:#0069eb; +} +QPushButton#DayButton:hover, +QPushButton#WeekButton:hover, +QPushButton#MonthButton:hover, +QPushButton#QuarterButton:hover, +QPushButton#YearButton:hover{ +color:#02efef; +background-color: #0069eb; +} + +QPushButton#DayButton:checked, +QPushButton#WeekButton:checked, +QPushButton#MonthButton:checked, +QPushButton#QuarterButton:checked, +QPushButton#YearButton:checked{ + color:#02efef; + background-color: #0069eb; +} + +QPushButton#ExportButton{ + border-radius:0px; + color: #027bb3; + background:#0d3756; +} +QPushButton#ExportButton:pressed{ + color:#02efef; + background:#0069eb; +} +QPushButton#ExportButton:hover{ + color:#02efef; + background-color: #0069eb; +} + +QPushButton#QueryButton{ + border-radius:0px; + color: #027bb3; + background:#0d3756; +} +QPushButton#QueryButton:pressed{ + color:#02efef; + background:#0069eb; +} +QPushButton#QueryButton:hover{ + color:#02efef; + background-color: #0069eb; +} + +QPushButton#PushButton1{ + border-radius:0px; + min-width:200px; + color: #027bb3; + background:#0d3756; +} +QPushButton#PushButton1:pressed{ + color: #02efef; +background:#0069eb; +} +QPushButton#PushButton1:hover{ + color: #02efef; +background-color: #0069eb; +} +QPushButton#PushButton2{ + border-radius:0px; + min-width:200px; + color: #027bb3; + background:#0d3756; +} +QPushButton#PushButton2:pressed{ + color: #02efef; + background:#0069eb; +} +QPushButton#PushButton2:hover{ + color: #02efef; + background-color: #0069eb; +} + +QPushButton#PushButton3{ + border-radius:0px; + min-width:200px; + color: #027bb3; + background:#0d3756; +} +QPushButton#PushButton3:pressed{ + color: #02efef; +background:#0069eb; +} +QPushButton#PushButton3:hover{ + color: #02efef; +background-color: #0069eb; +} +QPushButton#PushButton4{ + border-radius:0px; + min-width:200px; + color: #027bb3; + background:#0d3756; +} +QPushButton#PushButton4:pressed{ + color: #02efef; + background:#0069eb; +} +QPushButton#PushButton4:hover{ + color: #02efef; + background-color: #0069eb; +} + +QPushButton#PushButton1:checked, +QPushButton#PushButton2:checked, +QPushButton#PushButton3:checked, +QPushButton#PushButton4:checked{ + color:#02efef; + background-color: #0069eb; +} + +QTableView#TableWidget1{ + border:1px solid #024376; + background:transparent; + color: rgba(1,139,219,1); +} +QTableView#TableWidget2{ + border:1px solid #024376; + background:transparent; + color: rgba(1,139,219,1); +} +QTableView#TableWidget3{ + border:1px solid #024376; + background:transparent; + color: rgba(1,139,219,1); +} +QTableView#TableWidget4{ + border:1px solid #024376; + background:transparent; + color: rgba(1,139,219,1); +} + +QHeaderView::section{ + border:1px; + height:30px; + color: rgba(1,139,219,1); + background-color:rgba(13,55,86,1); +} +QHeaderView{ + background-color:rgba(13,55,86,1); +} +QToolButton{ + border: 0px solid #0669af; + border-radius: 0px; + background-color: #0b2a51; + min-height:26px; + width:80px; + color:#01a6ec; +} \ No newline at end of file diff --git a/resource/fr/style/dark/DeviceNavWidget.qss b/resource/fr/style/dark/DeviceNavWidget.qss new file mode 100644 index 00000000..fb01c325 --- /dev/null +++ b/resource/fr/style/dark/DeviceNavWidget.qss @@ -0,0 +1,25 @@ +CDeviceNavWidget{ + /*min-width: 2000px;*/ + /*min-height: 48px;*/ + /*max-height: 48px;*/ + border: 1px solid #0a2a6b; + background: qlineargradient(x1:0, y1:0,x2:1,y2:0, + stop: 0 #125cb5, + stop: 0.26 #0e428d, + stop: 1 #0a2864); + opacity: 0.4; +} + +QPushButton{ + font-size: 16px; + font-family: Microsoft YaHei; + border: none; + color: #a7bee3; +} +QPushButton:hover{ + font-size: 16px; + font-family: Microsoft YaHei; + font-weight: bold; + border: none; + color: #e6c72e; +} diff --git a/resource/fr/style/dark/SecondButtonGroupWidget.qss b/resource/fr/style/dark/SecondButtonGroupWidget.qss new file mode 100644 index 00000000..b9a0dd16 --- /dev/null +++ b/resource/fr/style/dark/SecondButtonGroupWidget.qss @@ -0,0 +1,19 @@ +QPushButton { + border: 2px solid black; + background-color: #00000000; + font-size: 17px; + font-weight: bold; + font-family: "Microsoft YaHei"; + color: #00D3FF; + width: 222px; + height: 46px; + border-image:url(../../data/back_pixmap/unselect.png); +} +QPushButton:hover { + background-color: #00000000; + border-image:url(../../data/back_pixmap/selected.png); +} +QPushButton:checked { + background-color: #00000000; + border-image:url(../../data/back_pixmap/selected.png); +} \ No newline at end of file diff --git a/resource/fr/style/dark/StationNavWidget.qss b/resource/fr/style/dark/StationNavWidget.qss new file mode 100644 index 00000000..50f99267 --- /dev/null +++ b/resource/fr/style/dark/StationNavWidget.qss @@ -0,0 +1,19 @@ +CStationNavWidget{ + background-color:#0a2355; + font: 14pt "Microsoft YaHei"; + /*min-width: 1000px;*/ + /*max-width:1000px;*/ + /*min-height: 100px;*/ + /*max-height: 100px;*/ +} + +QPushButton{ + border: none; + color: #FFFFFF; + font-size: 14px; +} +QPushButton:hover{ + border: none; + color: #38e8fd; + font-size: 14px; +} diff --git a/resource/fr/style/dark/SysParamWidget.qss b/resource/fr/style/dark/SysParamWidget.qss new file mode 100644 index 00000000..d3845192 --- /dev/null +++ b/resource/fr/style/dark/SysParamWidget.qss @@ -0,0 +1,15 @@ +QWidget#widget_bk { + background:rgba(94, 116, 138,0.20); +} +QWidget#widget_time1 { + background:rgba(94, 116, 138, 0.20); +} +QWidget#widget_ip1 { + background:rgba(94, 116, 138, 0.20) +} + +QLabel#label,QLabel#label_4,QLabel#lab_ipSetTitle +{ + font-weight: bold; + color:rgba(0, 211, 255, 1) +} diff --git a/resource/fr/style/dark/WebBrowserWidget.qss b/resource/fr/style/dark/WebBrowserWidget.qss new file mode 100644 index 00000000..4795d269 --- /dev/null +++ b/resource/fr/style/dark/WebBrowserWidget.qss @@ -0,0 +1,4 @@ +QTabWidget::pane{ + padding:0px; + border:0px; +} \ No newline at end of file diff --git a/resource/fr/style/dark/alarm.qss b/resource/fr/style/dark/alarm.qss new file mode 100644 index 00000000..0dc5f84a --- /dev/null +++ b/resource/fr/style/dark/alarm.qss @@ -0,0 +1,134 @@ +QAbstractItemView::item:selected:focus { + background: #FFC14E; + color: #FFFFFF; +} + +QAbstractItemView::item:selected:!focus { + background: #FFC14E; + color: #FFFFFF; +} + +QAbstractItemView::item:selected:active { + background: #FFC14E; + color: #FFFFFF; +} +/* + +margin: +QFrame#frame{ + border:none; + background-color: #0b2a51; +} +QFrame#frame_alarm{ + background-color: #0b2a51; +} +QTreeWidget#area::item { + height:23px; +} +QTreeWidget#area{ + border:1px solid #0669af; + background-color:#0b2a51; +} +QLineEdit#searchTextEdit { +border:none; +color:#01a6ec; +background:#0b2a51; +} + +QLineEdit#iconLineEdit{ +color:#01a6ec; +background:#0b2a51; +border:1px solid #0669af; +} +QLineEdit#lineEdit,QLineEdit#lineEdit_2 { +color:#01a6ec; +background:#0b2a51; +border:1px solid #0669af; +} + +QPushButton#searchButton{ +background:#0b2a51; +image:url(../../resource/zh/public/dark/icon/search.png); +} +QPushButton#iconButton{ +background:#0b2a51; +image:url(../../resource/zh/public/dark/icon/calendar.png); +} +QPushButton#searchButton:hover{ +color:#02efef; +background:#134a72; +} +QPushButton#iconButton:hover{ +color:#02efef; +background:#134a72; +} +QLabel#filterRow,QLabel#label, +QLabel#label_2,QLabel#label_3,QLabel#label_4,QLabel#label_5,QLabel#label_6,QLabel#showRow{ +color:#01a6ec; +} + +QPushButton#ok{ +height:26px; +width:80px; +} + +QDialog#alarm_dialog{ + background-color:#0b2a51; +} +QLineEdit#keyWord{ + color:#01a6ec; + border:1px solid #0669af; + background-color:#0b2a51; +} +QCheckBox#checkBox{ + color:#01a6ec; + background:#0b2a51; +} + +QCheckBox#checkLevel,QCheckBox#checkLocation, +QCheckBox#checkStatus,QCheckBox#checkRegion{ + color:#01a6ec; +} +QRadioButton#confirm,QRadioButton#unConfirm{ + color:#01a6ec; +} + +QDateTimeEdit#startTime,QDateTimeEdit#endTime{ + color:#01a6ec; + border:1px solid #0669af; + background-color:#0b2a51; +} +QDialog#CAlarmInhibitDialog{ + background-color:#0b2a51; +} +QDialog#CAlarmSetDlg{ + background-color:#0b2a51; +} + +QTreeView#aiAlarmTreeView { + show-decoration-selected:1; + border:0px solid #0669af; + color:#01a6ec; + background-color:#0b2a51; + alternate-background-color: #09314d; +} + +QTableView#alarmView { + color:#01a6ec; + border:0px solid #0669af; + gridline-color:#09304c; + alternate-background-color: #09314d; + selection-background-color:#d1e3f8; + background-color:#0b2a51; +} + +/* +QToolButton{ + border: 0px solid #0669af; + border-radius: 0px; + background-color: #0b2a51; + min-height:26px; + width:80px; + color:#01a6ec; +} +*/ \ No newline at end of file diff --git a/resource/fr/style/dark/alarmForm.qss b/resource/fr/style/dark/alarmForm.qss new file mode 100644 index 00000000..55a6e95b --- /dev/null +++ b/resource/fr/style/dark/alarmForm.qss @@ -0,0 +1,43 @@ +QComboBox +{ + min-width:180px; +} + +QComboBox QLineEdit +{ + padding: 0px; + border: 0px; + font-size: 14px; +} +QLabel +{ + font-size: 18px; +} + +QLineEdit#iconLineEdit { + min-height: 10px; + padding: -9px; + padding-left: 5px; +} + +#filter,#inhibit,#print,#inhiAlarm,#remove,#confirm +{ + background:transparent; + margin:3px; + min-width: 80px; + margin-top:0px; + font-size: 16px; + padding-left: 5px; + padding-right: 5px; +} +QLineEdit#iconLineEdit QPushButton +{ + background:transparent; + margin:-20px; + margin-right:-15px; + image:url(../../resource/zh/public/dark/icon/calendar.png); +} + +QFrame#frame{ + border: 0px; +} diff --git a/resource/fr/style/dark/alarmShield.qss b/resource/fr/style/dark/alarmShield.qss new file mode 100644 index 00000000..d5fa056b --- /dev/null +++ b/resource/fr/style/dark/alarmShield.qss @@ -0,0 +1,19 @@ +QFrame#frame{ + border:0px solid #0669af; +} + +QFrame#frame_2, +QFrame#frame_3{ + border:1px solid #0669af; +} + +QComboBox#interval{ + min-width:60; +} +QComboBox QLineEdit{ + border:none; +} +CAlarmShield{ + qproperty-buttonBackground:#072d48; + qproperty-buttonColor:#027bb3; +} \ No newline at end of file diff --git a/resource/fr/style/dark/alarm_statistics.qss b/resource/fr/style/dark/alarm_statistics.qss new file mode 100644 index 00000000..7de93c4c --- /dev/null +++ b/resource/fr/style/dark/alarm_statistics.qss @@ -0,0 +1,155 @@ +QCheckBox::indicator:unchecked +{ + width:14px; + height:14px; + /*border-radius: 7px;*/ + background-color: rgb(191,191,191); +} + +QCheckBox::indicator:checked +{ + width:14px; + height:14px; + /*border-radius: 7px;*/ + background-color: rgb(0,255,0); +} + +QWidget +{ + background-color:rgb(3,22,36); +} + +QLabel,QCheckBox +{ + color:rgb(0,180,255); +} + +QFrame#frame_bar,QFrame#frame_alarm,QFrame#frame_location,QListWidget,QComboBox, +QDateEdit,QPushButton,QLineEdit,QTableWidget,QTableView,QTreeWidget,QGroupBox, +QToolBox::tab,QToolBox,QTextEdit +{ + border-style:solid; + border-width:1px; + border-color:rgb(10,91,147); + color:rgb(0,180,255); + font-size: 12px; +} + +QRadioButton +{ + color:rgb(0,180,255); +} + +QFrame#frame_location QFrame +{ + border-style:solid; + border-width:1px; + border-color:rgb(10,91,147); + color:rgb(0,180,255); + padding-left:10px; +} + +QPushButton:hover +{ + background-color: rgb(41,115,163); +} + +QLabel#value,QLabel#value2 +{ + background-color:rgb(41,115,163); + color:rgb(33,248,250); + border-style:outset; + border-width:1px; + border-color:rgb(33,184,250); + border-radius:5px; + padding:5px; +} + +QListView +{ + color:rgb(0,180,255); +} + +QComboBox::drop-down,QDateEdit::drop-down +{ + width: 20px; + border-width: 1px; + border-style: solid; + border-color: rgb(10,91,147); +} + +QComboBox QAbstractItemView +{ + border-width: 1px; + border-style: solid; + border-color: rgb(10,91,147); +} + +QCalendarWidget QWidget +{ + border-width: 1px; + border-style: solid; + border-color: rgb(10,91,147); + color: rgb(0,180,255); +} + +QCalendarWidget QWidget#qt_calendar_navigationbar +{ + border-bottom-width: 0px; +} + +QCalendarWidget QTableView +{ + border-top-width: 0px; +} + +QToolButton#qt_calendar_monthbutton,#qt_calendar_yearbutton +{ + border-width: 0px; + border-top-width: 1px; +} + +QHeaderView::section +{ + background: rgb(3,22,36); + border-style:solid; + border-width:1px; + border-color:rgb(10,91,147); + color:rgb(0,180,255); + height: 24px; +} + +QTableView#alarm +{ + border-width: 0px; +} + +QToolBoxButton +{ + min-height: 32px; +} + +CAlarmStatistics, +CAlarmCompare{ + qproperty-chartLabelColor: rgb(0,180,255); + qproperty-chartLineColor: rgb(0,180,255); +} + + + + + + + + + + + + + + + + + + + diff --git a/resource/fr/style/dark/alarmmng.qss b/resource/fr/style/dark/alarmmng.qss new file mode 100644 index 00000000..9e5f6e36 --- /dev/null +++ b/resource/fr/style/dark/alarmmng.qss @@ -0,0 +1,46 @@ +QFrame#frame{ + border:none; + background-color: #0b2a51; +} +QFrame#frame_2,QFrame#frame_3{ + border:0px solid #0669af; +} +QFrame#frame_head{ + background-color: #0b2a51; + border:0px solid #0669af; + border-top:0px solid #0669af; + border-left:0px solid #0669af; + border-right:0px solid #0669af; + border-bottom: 1px solid #0669af; +} +QFrame#frame_stackWidget{ + background:#0b2a51; + border:0px solid #0669af; +} +QStackedWidget#stackedWidget{ + border: 1px solid #0669af; + border-top: 0px solid #0669af; +} +QPushButton#aibt,QPushButton#dibt,QPushButton#pibt{ + background-color:#0b2a51; + height: 31px; + color:#01a6ec; + border-radius: 0px; + border:1px solid #0669af; + border-right:0px solid #0669af; +} +QPushButton#dibt,QPushButton#pibt,QPushButton#mibt{ + background-color:#0b2a51; + height: 31px; + color:#01a6ec; + border-radius: 0px; + border:1px solid #0669af; +} + +QPushButton#aibt::disabled,QPushButton#dibt::disabled,QPushButton#pibt::disabled,QPushButton#mibt::disabled { + border-bottom:1px solid #0669af; +} +QPushButton#aibt::checked,QPushButton#dibt::checked,QPushButton#pibt::checked,QPushButton#mibt::checked { + color:#02efef; + border-bottom:0px solid #0669af; +} \ No newline at end of file diff --git a/resource/fr/style/dark/asset.qss b/resource/fr/style/dark/asset.qss new file mode 100644 index 00000000..6c66c129 --- /dev/null +++ b/resource/fr/style/dark/asset.qss @@ -0,0 +1,14 @@ + + +QLabel#title { + color:#01a6ec; + font-size:24px; + margin-bottom:5px; + font-family:Microsoft YaHei; +} + +QTextEdit#tBackup{ + color:#01a6ec; + border:1px solid #0669af; + background:#0b2a51; +} diff --git a/resource/fr/style/dark/breadcrumbNav.qss b/resource/fr/style/dark/breadcrumbNav.qss new file mode 100644 index 00000000..f8abe92b --- /dev/null +++ b/resource/fr/style/dark/breadcrumbNav.qss @@ -0,0 +1,60 @@ +QWidget +{ + font: 10pt "Microsoft YaHei"; + color:#B9B9B9; + background:#032448; + outline:none; +} +QWidget:disabled +{ + color:#5783ae; + border-color: #325371; +} +QToolButton +{ + background:transparent; + border:none; + color:#B9B9B9; +} +QToolButton:hover +{ + color: #FFFFFF; +} +QToolButton::menu-indicator +{ + background:transparent; + subcontrol-position:right center; +} +QPushButton +{ + image:url(../../resource/zh/public/dark/icon/arrowRight.png); + background:transparent; + border:none; + max-width:20px; +} +QMenu +{ + background:#1E3D5A; + border: 1px solid #0070a2; + color:#B9B9B9; +} +QMenu::item{ + height:30px; + color:#B9B9B9; + background:#1E3D5A; + border: 1px solid transparent; + padding: 0px 20px 0px 20px; +} +QMenu::item:hover,QMenu::item:selected{ + color: #FFFFFF; + background:#4F8ACE; +} +QMenu::item:disabled,QMenu::item:disabled:selected,QMenu::item:disabled:pressed +{ + color: #5783ae; + background: #032448; +} +QMenu::item:pressed { + color: #FFFFFF; + background:#4F8ACE; +} \ No newline at end of file diff --git a/resource/fr/style/dark/cButtonGroupWidget.qss b/resource/fr/style/dark/cButtonGroupWidget.qss new file mode 100644 index 00000000..f065d651 --- /dev/null +++ b/resource/fr/style/dark/cButtonGroupWidget.qss @@ -0,0 +1,15 @@ +QPushButton { + border: 2px solid black; + background-color: #00000000; + font-size: 24px; + font-weight: bold; + font-family: "Microsoft YaHei"; + color: #00D3FF; + width: 222px; + height: 46px; + border-image:url(../../data/back_pixmap/unselect.png); +} +QPushButton:hover { + background-color: #00000000; + border-image:url(../../data/back_pixmap/selected.png); +} diff --git a/resource/fr/style/dark/constCurves.qss b/resource/fr/style/dark/constCurves.qss new file mode 100644 index 00000000..5db84bfb --- /dev/null +++ b/resource/fr/style/dark/constCurves.qss @@ -0,0 +1,7 @@ +CCurveChartView{ + qproperty-plotBackgroundColor : #072d48; + qproperty-plotTickColor : #017fb7; + qproperty-plotLinePen: #023F63; + qproperty-plotGridColor: #1A384C; + qproperty-plotLegendColor: #01a6ec; +} diff --git a/resource/fr/style/dark/curveColor.cfg b/resource/fr/style/dark/curveColor.cfg new file mode 100644 index 00000000..863b614a --- /dev/null +++ b/resource/fr/style/dark/curveColor.cfg @@ -0,0 +1,16 @@ +#EF3829 +#EFD752 +#6BA2D6 +#DEAECE +#EFA700 +#18A28C +#8C3C39 +#63498C +#6B4531 +#8757EF +#BD6DA5 +#C6D729 +#195B84 +#51FF1C +#85CE5E +#3CACF7 \ No newline at end of file diff --git a/resource/fr/style/dark/debug_tool.qss b/resource/fr/style/dark/debug_tool.qss new file mode 100644 index 00000000..f6e53ad1 --- /dev/null +++ b/resource/fr/style/dark/debug_tool.qss @@ -0,0 +1,130 @@ +QWidget#CDebugTool,QWidget#tab{ + background:white; +} + + +QTabBar::tab { + border: 1px solid #E8E8E8; + min-width:80px; + height:25px; + background: #F2F5FA; + color:black; + font-family:Microsoft YaHei; + font-size:14px; +} +QTabBar::tab:selected, QTabBar::tab:hover { + background: white; + color:#3482F4; + border-bottom-color: white; +} + +QGroupBox{ + font-size:14px; + + font-family:Microsoft YaHei; +} +QListView::item{ + height:23px; +} + +QComboBox{ + border:1px solid #CACACA; + font-family:Microsoft YaHei; + +} +QComboBox QAbstractItemView::item{ + height: 23px; +} +QComboBox::drop-down { + width: 20px; + border-width: 0px; +} +QComboBox::down-arrow { + background:white; + image: url(../../resource/en/debug_tool/image/down.png); + border:0px solid; + +} +QPushButton#searchButton{ + border:1px solid #CACACA; + background:#F5F5F5; + image:url(../../resource/en/debug_tool/image/search.png); +} + +QPushButton#searchButton:hover{ + border:1px solid #99d1ff; + background:#cde8ff; +} +QPushButton#pushBtn_delPoint{ + width:100px; + height:23px; + border:1px solid rgba(251,80,80,1); + border-radius:4px; + font-family:Microsoft YaHei; + font-size:14px; +} + +QPushButton{ + width:100px; + height:23px; + border:1px solid #3482F4; + border-radius:4px; + font-family:Microsoft YaHei; + font-size:14px; + color:#3482F4; +} +QPushButton:hover{ + border:1px solid #99d1ff; + background:#cde8ff; +} + +QLineEdit#lineEdit,QLineEdit#lineEdit_content{ + font-family:Microsoft YaHei; + border:1px solid #CACACA; +} +QLabel#location,QLabel#sub,QLabel#devGroup,QLabel#device,QLabel#point,QLabel#label,QLabel#label_2,QLabel#label_3, +QLabel#label_4,QLabel#label_5,QLabel#label_6,QLabel#label_7,QLabel#label_8{ + font-family:Microsoft YaHei; + +} +QLabel#label_netStatus,QLabel#netStatus{ + font-family:Microsoft YaHei; + + font-size:14px; +} +QCheckBox#checkBox_all,QCheckBox#checkBox_analog,QCheckBox#checkBox_digital, +QCheckBox#checkBox_accuml,QCheckBox#checkBox_mix,QCheckBox#checkBox_const,QCheckBox#checkBox_allColmn{ + font-family:Microsoft YaHei; + + font-size:14px; +} + +QCheckBox::indicator:checked { + image: url(../../resource/en/debug_tool/image/check.png); +} +QCheckBox::indicator:!checked { + image: url(../../resource/en/debug_tool/image/uncheck.png); +} +QHeaderView::section { + font-family:Microsoft YaHei; + text-align:center; + height:23px; + +} +QSplitter{ + background:white; +} +QRadioButton::indicator::unchecked { + image: url(../../resource/en/debug_tool/image/uncheck1.png); +} +QRadioButton::indicator::checked { + image: url(../../resource/en/debug_tool/image/check1.png); +} + +QSplitter::handle { + background:transparent; +} + +QSplitter::handle:horizontal { + width: 5px; +} \ No newline at end of file diff --git a/resource/fr/style/dark/deviceRealData.qss b/resource/fr/style/dark/deviceRealData.qss new file mode 100644 index 00000000..a3e94d5c --- /dev/null +++ b/resource/fr/style/dark/deviceRealData.qss @@ -0,0 +1,9 @@ +QFrame#frame_2{ + background-color: transparent; + border:0px solid #5DA5FB; +} +QFrame#frame_3, +QFrame#frame_4, +QFrame#frame_5{ + border:none; +} \ No newline at end of file diff --git a/resource/fr/style/dark/duty_setting.qss b/resource/fr/style/dark/duty_setting.qss new file mode 100644 index 00000000..c19601cd --- /dev/null +++ b/resource/fr/style/dark/duty_setting.qss @@ -0,0 +1,69 @@ + +QListView,QComboBox,QPushButton,QTableWidget,QLineEdit,QLabel,QListWidget:item +{ + border-style:solid; + border:1px solid #0669af; + color:#01a6ec; +} + +QLabel +{ + padding: 5px; +} + +QLabel#label_0 +{ + min-width: 80px; +} + +QLabel#label_0,QLabel#label_1,QLabel#label_2,QLabel#label_3,QLabel#label_4,QLabel#label_5,QLabel#label_6,QLabel#label_7 +{ + background-color: #0b2a51; +} + + +QPushButton +{ + width: 80px; + height: 28px; +} + +QPushButton#pushButton_del +{ + width: 120px; + height: 28px; +} + +QListWidget +{ + padding: 0px; +} + +QListWidget::item +{ + min-height: 28px; + padding-left: 0px; +} + +QListWidget::item:hover, +QListView::item:selected +{ + background-color: #134a72; + color:#01a6ec; +} + +QListWidget#dropWidget::item:selected +{ + background-color: #134a72; + color:#01a6ec; +} +QListWidget#dropWidget:hover, +QListWidget#dropWidget:focus{ + background-color: #134a72; + color:#01a6ec; +} + +QComboBox +{ + height: 28px; +} \ No newline at end of file diff --git a/resource/fr/style/dark/event.qss b/resource/fr/style/dark/event.qss new file mode 100644 index 00000000..95c9f35a --- /dev/null +++ b/resource/fr/style/dark/event.qss @@ -0,0 +1,93 @@ +QAbstractItemView::item:selected:focus { + background: #FFC14E; + color: #FFFFFF; +} + +QAbstractItemView::item:selected:!focus { + background: #FFC14E; + color: #FFFFFF; +} + +QAbstractItemView::item:selected:active { + background: #FFC14E; + color: #FFFFFF; +} + +QComboBox +{ + font-size: 14px; +} + +QComboBox QLineEdit +{ + padding: 0px; + border: 0px; + font-size: 14px; +} +QLabel +{ + font-size: 16px; +} + +QPushButton +{ + font-size: 16px; +} + + +/* =============================================== */ +/* searchButton搜索框 */ +/* =============================================== */ +QPushButton#hisSearchButton{ + background:transparent; + min-height:22px; + max-width:22px; + border:none; + margin-left:0px; + padding: 0 5 0 5px; + image:url(../../resource/zh/public/dark/icon/search.png); +} + +QLineEdit#hisSearchButton { + border:none; + background:transparent; +} +QPushButton#realSearchButton{ + background:transparent; + min-height:22px; + max-width:22px; + border:none; + margin-left:0px; + padding: 0 5 0 5px; + image:url(../../resource/zh/public/dark/icon/search.png); +} + +QLineEdit#realSearchButton { + border:none; + background:transparent; +} + +QLineEdit#iconLineEdit { + padding: -9px; + padding-left: 5px; + font-size: 14px; +} + +QLineEdit#iconLineEdit QPushButton +{ + background:transparent; + margin:-15px; + margin-right:-15px; + image:url(../../resource/zh/public/dark/icon/calendar.png); +} + +QFrame#frame{ + border: 0px; +} + +QPushButton#closebtn, +QPushButton#clear, +QPushButton#filter, +QPushButton#print{ + min-width: 65px; +} \ No newline at end of file diff --git a/resource/fr/style/dark/explorerWnd.qss b/resource/fr/style/dark/explorerWnd.qss new file mode 100644 index 00000000..579f5ebc --- /dev/null +++ b/resource/fr/style/dark/explorerWnd.qss @@ -0,0 +1,22 @@ +/* 整个滚动条区域样式 */ +QScrollBar:vertical { + border: 0px solid grey; + width: 15px; +} + +/* 滑块区域样式 */ +QScrollBar::handle:vertical { + background: grey; +} + + +/* 整个滚动条区域样式 */ +QScrollBar:horizontal { + border: 0px solid grey; + height: 15px; +} + +/* 滑块区域样式 */ +QScrollBar::handle:horizontal { + background: grey; +} \ No newline at end of file diff --git a/resource/fr/style/dark/faultRecord.qss b/resource/fr/style/dark/faultRecord.qss new file mode 100644 index 00000000..bd40eca5 --- /dev/null +++ b/resource/fr/style/dark/faultRecord.qss @@ -0,0 +1,8 @@ +QToolButton{ + border: 0px solid #0669af; + border-radius: 0px; + background-color: #0b2a51; + min-height:26px; + width:80px; + color:#01a6ec; +} \ No newline at end of file diff --git a/resource/fr/style/dark/fbd_designer.qss b/resource/fr/style/dark/fbd_designer.qss new file mode 100644 index 00000000..46709b7c --- /dev/null +++ b/resource/fr/style/dark/fbd_designer.qss @@ -0,0 +1,160 @@ +/* === QToolBox ========================================================== */ + + +QDockWidget::title{ + background-color: #4b6d97; + padding: 6px; +} +QDockWidget#dockWidgetBlock,QDockWidget#dockWidgetCheck,QDockWidget#dockWidgetDiagram,QDockWidget#dockWidgetTemplate +{ + min-width: 320px; +} +QDockWidget#dockWidgetProperty +{ + min-width: 450px; +} + +QWidget#fbdEditorWindow +{ + background-color:transparent; +} + +QWidget#centralWidget +{ + background-color:transparent; +} + +QWidget#groupWidget +{ + background-color:transparent; +} + + +QLabel#CellWidget_item:hover,QLabel#TemplateWidget_item:hover{ + background-color: #5da5fb; +} +QPushButton#pTableFilter,QPushButton#pTagNameFilter,QPushButton#pDeviceFilter +{ + background:transparent; + min-height:22px; + max-width:22px; + border:none; + margin-left:0px; + padding: 0 5 0 5px; + image:url(../../resource/zh/public/dark/icon/search.png); +} + +QFrame#frame_6,QFrame#frame_4,QFrame#frame_5,QFrame#frame_2,QFrame#frame_1,QFrame#frame_3,QFrame#frame_7,QFrame#frame_8,QFrame#frame_8,QFrame#frame_10 +{ + border: 1px solid #6088BA; +} + +CFBDRetriever +{ + min-height: 600px; +} + +CFBDRetriever +{ + min-height: 600px; +} + + +QToolButton +{ + border: 0px; + padding: 5px; +} + +CGraphicsView +{ + qproperty-backgroundColor: rgba(81, 100, 120,95); +} + +CFBDMainWindow +{ + qproperty-itemSelectBorderColor: #FFFFFF; + qproperty-itemNormalBorderColor: transparent; + qproperty-itemDefaultBackgroundColor: transparent; + qproperty-itemErrorBackgroundColor: red; + qproperty-itemTextBackgroundColor: #FFFFFF; + qproperty-errorStateTextColor: red; + qproperty-normalStateTextColor: #FFFFFF; +} + +/* QPushButton{ background:#F0F0F0; \ + border:1px solid transparent; \ + border-left-color: darkgray;\ + padding-left: -1px; padding-top: -1px; \ + image:url(:/resource/search.png);} \ + QPushButton:hover{background:#E0E0E0;} \ + QPushButton:pressed{background:#E0E0E0;padding:0px; } */ + +/* +QToolBox::tab{ + background-color: transparent; + border-radius: 0px; + color: #FFFFFF; +} + +QToolBox::tab:selected,QToolBox::tab:hover{ + background-color: #0078D7; + color: #FFFFFF; +} +QToolBoxButton{ + min-width: 199px; + min-height: 32px; +} + + +*/ + + +/* === QWidget ========================================================== */ +/* +QWidget#scrollAreaWidgetContents{ + background-color: #FFFFFF; +} + +QWidget#widgetTemplateBack{ + border: 1px solid #A4A9AD; +} + +QWidget#widgetTemplate{ + border: 1px solid #A4A9AD; + background-color: #FFFFFF; +} +*/ +#E6ECF2 + +/* === QTabBar ========================================================== */ +/* +QTabBar::tab{ + background-color: #FFFFFF; + padding: 6px 12px 6px 12px; + border-style: solid; + border-width: 0px 1px 1px 1px; + border-color: #A4A9AD; +} + +QTabBar::tab:hover{ +} + +QTabBar::tab:selected{ + background-color: #0078D7; + color: #FFFFFF; +} + +QTabBar::tab#CenterTabWidget{ + border-width: 1px 1px 0px 1px; + background-color: #CED3D9; + color: #000000; +} + +QTabBar::tab#CenterTabWidget:selected{ + background-color: #FFFFFF; + color: #0078D7; +} + +*/ + diff --git a/resource/fr/style/dark/hmiRoll.qss b/resource/fr/style/dark/hmiRoll.qss new file mode 100644 index 00000000..2a06e131 --- /dev/null +++ b/resource/fr/style/dark/hmiRoll.qss @@ -0,0 +1,3 @@ +QLabel#autoTime{ + background-color: transparent; +} \ No newline at end of file diff --git a/resource/fr/style/dark/ipcPlus.qss b/resource/fr/style/dark/ipcPlus.qss new file mode 100644 index 00000000..c5369541 --- /dev/null +++ b/resource/fr/style/dark/ipcPlus.qss @@ -0,0 +1,97 @@ +QPushButton#play,QPushButton#pause, +QPushButton#cap,QPushButton#voiceOpen,QPushButton#voiceClose{ + border:1px; +} + +QPushButton#play{ + image:url(../../resource/zh/gui/icon/robot/play.png); +} + +QPushButton#pause{ + image:url(../../resource/zh/gui/icon/robot/pause.png); +} + +QPushButton#cap{ + image:url(../../resource/zh/gui/icon/robot/cut.png); +} + +QPushButton#voiceOpen{ + image:url(../../resource/zh/gui/icon/robot/voiceOpen.png); +} +QPushButton#voiceClose{ + image:url(../../resource/zh/gui/icon/robot/voiceClose.png); +} + +QPushButton#left{ + border-image:url(../../resource/zh/gui/icon/ipc/left.png); +} +QPushButton#left:hover{ + border-image:url(../../resource/zh/gui/icon/ipc/left-hovered.png); +} +QPushButton#left:pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/left-clicked.png); +} + +QPushButton#down{ + border-image:url(../../resource/zh/gui/icon/ipc/down.png); +} +QPushButton#down:hover{ + border-image:url(../../resource/zh/gui/icon/ipc/down-hovered.png); +} +QPushButton#down:pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/down-clicked.png); +} + +QPushButton#up{ + border-image:url(../../resource/zh/gui/icon/ipc/up.png); +} +QPushButton#up:hover{ + border-image:url(../../resource/zh/gui/icon/ipc/up-hovered.png); +} +QPushButton#up:pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/up-clicked.png); +} + +QPushButton#right{ + border-image:url(../../resource/zh/gui/icon/ipc/right.png); +} +QPushButton#right:hover{ + border-image:url(../../resource/zh/gui/icon/ipc/right-hovered.png); +} +QPushButton#right:pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/right-clicked.png); +} + +QPushButton#cap:pressed,QPushButton#play:pressed,QPushButton#pause:pressed,QPushButton#voiceOpen:pressed,QPushButton#voiceClose:pressed{ + color:#02efef; + background:#134a72; + border:0px; +} + +QPushButton#draw,QPushButton#tretch,QPushButton#near,QPushButton#far,QPushButton#big,QPushButton#small,QPushButton#allot{ + color:#01a6ec; + background:#0b2a51; + border:1px solid #0669af; +} + +QPushButton#draw:hover,QPushButton#tretch:hover,QPushButton#near:hover,QPushButton#far:hover,QPushButton#big:hover,QPushButton#small:hover,QPushButton#allot:hover{ +color:#02efef; +background:#134a72; +} + +QPushButton#draw:pressed,QPushButton#tretch:pressed,QPushButton#near:pressed,QPushButton#far:pressed,QPushButton#big:pressed,QPushButton#small:pressed,QPushButton#allot:pressed{ +color:#02efef; +background:#134a72; +} + +QWidget#widget,QWidget#widget_2,QWidget#widget_3{ + border:1px solid #0669af; +} +QWidget#IpcPlusWidget,QWidget#control_1,QWidget#control_2{ + border:1px solid #0669af; + color:#01a6ec; +} +QWidget#IpcPlusWidget{ + background-color: #0b2a51); + color:#01a6ec; +} \ No newline at end of file diff --git a/resource/fr/style/dark/ipcViewer.qss b/resource/fr/style/dark/ipcViewer.qss new file mode 100644 index 00000000..5b6230fa --- /dev/null +++ b/resource/fr/style/dark/ipcViewer.qss @@ -0,0 +1,125 @@ +QTabWidget#tabWidget +{ + border:0px solid #0669af; +} + +QPushButton#btn_vol, +QPushButton#btn_cam, +QPushButton#btn_fullScreen, +QPushButton#btn_play, +QPushButton#btn_play_r, +QPushButton#btn_cam_r, +QPushButton#btn_vol_r, +QPushButton#up, +QPushButton#left, +QPushButton#right, +QPushButton#down{ + border:none; + border-radius:0px; + background:transparent; +} +QPushButton#btn_play, +QPushButton#btn_play_r{ + border-image:url(../../resource/zh/gui/icon/ipc/play.png); +} +QPushButton#btn_play::hover, +QPushButton#btn_play_r::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/play-hovered.png); +} +QPushButton#btn_play::checked, +QPushButton#btn_play_r::checked{ + border-image:url(../../resource/zh/gui/icon/ipc/pause.png); +} +QPushButton#btn_cam, +QPushButton#btn_cam_r{ + border-image:url(../../resource/zh/gui/icon/ipc/camera.svg); +} +QPushButton#btn_cam::hover, +QPushButton#btn_cam_r::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/camera-hovered.svg); +} +QPushButton#btn_vol, +QPushButton#btn_vol_r{ + border-image:url(../../resource/zh/gui/icon/ipc/vol.svg); +} +QPushButton#btn_vol::hover, +QPushButton#btn_vol_r::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/vol-hovered.svg); +} +QPushButton#btn_vol::checked, +QPushButton#btn_vol_r::checked{ + border-image:url(../../resource/zh/gui/icon/ipc/vol-mute.svg); +} +QPushButton#up{ + border-image:url(../../resource/zh/gui/icon/ipc/up.png); +} +QPushButton#up::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/up-hovered.png); +} +QPushButton#up::pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/up-clicked.png); +} +QPushButton#left{ + border-image:url(../../resource/zh/gui/icon/ipc/left.png); +} +QPushButton#left::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/left-hovered.png); +} +QPushButton#left::pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/left-clicked.png); +} +QPushButton#right{ + border-image:url(../../resource/zh/gui/icon/ipc/right.png); +} +QPushButton#right::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/right-hovered.png); +} +QPushButton#right::pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/right-clicked.png); +} +QPushButton#down{ + border-image:url(../../resource/zh/gui/icon/ipc/down.png); +} +QPushButton#down::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/down-hovered.png); +} +QPushButton#down::pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/down-clicked.png); +} + +QPushButton#btn_zoomin, +QPushButton#btn_zoomout, +QPushButton#btn_far, +QPushButton#btn_close, +QPushButton#btn_big, +QPushButton#btn_small +{ + background:#0b2a51; + color:#01a6ec; + border:1px solid #0669af; + width:50px; + height:20px; +} + + +QPushButton#btn_zoomin:hover, +QPushButton#btn_zoomout:hover, +QPushButton#btn_far:hover, +QPushButton#btn_close:hover, +QPushButton#btn_big:hover, +QPushButton#btn_small:hover, +QPushButton#btn_record_query:hover, +QPushButton#btn_gotopreset:hover +{ + background-color: #134a72; + color:#02efef; +} + + +QPushButton#btn_record_query +{ + background:#0b2a51; + color:#01a6ec; + border:1px solid #0669af; + height:20px; +} diff --git a/resource/fr/style/dark/linkCtrl.qss b/resource/fr/style/dark/linkCtrl.qss new file mode 100644 index 00000000..4d547c3b --- /dev/null +++ b/resource/fr/style/dark/linkCtrl.qss @@ -0,0 +1,40 @@ +QFrame#frame, +QFrame#frame_2, +QFrame#frame_3, +QFrame#frame_4{ + border:1px solid #0669af; + background-color: #0b2a51; +} +QFrame#frame_5{ + border:1px solid #0669af; +} +QFrame#line,QFrame#line_2{ + border:solid 1px #0669af; +} +QPushButton#allLinkCtrlButton{ + margin-left:10px; +} + +QLineEdit#searchLineEdit { +color:#01a6ec; +background:#0b2a51; +border:1px solid #0669af; +height:26px; +} + +CLinkCtrlTreeView#actionTreeView +{ + border:none; + color:#027bb3; + gridline-color:#024376; + alternate-background-color: transparent; + background-color:transparent; +} + +QListWidget#linkCtrlList,QListWidget#linkReportList{ + margin-top:10px; +} + +QTreeView#actionTreeView{ + margin-left:5px; +} \ No newline at end of file diff --git a/resource/fr/style/dark/media.qss b/resource/fr/style/dark/media.qss new file mode 100644 index 00000000..9379ae17 --- /dev/null +++ b/resource/fr/style/dark/media.qss @@ -0,0 +1,34 @@ +QPushButton{ + height:20px; + width:40px; + color:#027bb3; + border-radius:2px; + border:1px solid #0669af; +} + +QPushButton#play,QPushButton#pause, +QToolButton#m_cap,QPushButton#m_voiceOpen,QPushButton#m_voiceClose{ + border:0px; +} + +QPushButton#play{ + image:url(../../resource/zh/public/light/icon/play.png); +} + +QPushButton#pause{ + image:url(../../resource/zh/public/light/icon/pause.png); +} + +QToolButton#m_cap{ + image:url(../../resource/zh/public/light/icon/cut.png); +} + +QPushButton#m_voiceOpen{ + image:url(../../resource/zh/public/light/icon/voiceOpen.png); +} +QPushButton#m_voiceClose{ + image:url(../../resource/zh/public/light/icon/voiceClose.png); +} + + + diff --git a/resource/fr/style/dark/modelStudio.qss b/resource/fr/style/dark/modelStudio.qss new file mode 100644 index 00000000..f7d2bf6f --- /dev/null +++ b/resource/fr/style/dark/modelStudio.qss @@ -0,0 +1,303 @@ +QMainWindow{ + background: #E6ECF2; + border-style: outset; + border-radius: 5px; +} + +QToolBar#mainToolBar{ + background: #e9edf1; + spacing: 3px; /* spacing between items in the tool bar */ + } + + QStatusBar { + background: #d7dbdf; + } + + QMenuBar{ + background-color: #FFFFFF; + } + + QMenu { + background-color: white; /* 设置整个菜单区域的背景色*/ + border: 1px solid #E6ECF2;/*整个菜单区域的边框粗细、样式、颜色*/ + } + + QMenu::item { + background-color: transparent; + padding:4px 20px;/*设置菜单项文字上下和左右的内边距,效果就是菜单中的条目左右上下有了间隔*/ + } + + QMenu::item:selected { /* when user selects item using mouse or keyboard */ + background-color: #2dabf9;/*这一句是设置菜单项鼠标经过选中的样式*/ + } + + QSplitterHandle{ + background-color:#E6ECF2; + } + +QTabBar::tab {/*切换按钮设置*/ + background: #E6ECF2; + border: 1px solid #acb1b4; + padding: 4px; +} + +QTabBar::tab:hover { + color:#2080F7;/*选中高亮*/ +} + +QTabBar::tab:selected { + background: white; +} + +QTabWidget{ + background: #eff3f5; +} + +QHeaderView +{ + background:#E6ECF2; +} + +QHeaderView#tableHorizHeader::section +{ + border:0px; + min-height:25px; + border-bottom:1px solid #DCDCDC; + border-right:1px solid #DCDCDC; + background:#B6C6D6; +} + +QHeaderView#tableVertiHeader::section +{ + background:white; + min-width:25px; + border:0px; + border-right:1px solid #DCDCDC; +} + +QTreeView{ + alternate-background-color: #E6ECF2; + selection-background-color: #2dabf9; +} + +QTableView{ + alternate-background-color: #E6ECF2; + selection-background-color: #2dabf9; +} + +QTableView QTableCornerButton::section{ + border:0px; + background:white; + border-right:1px solid #DCDCDC; +} + +QTableView > QHeaderView::section +{ + border:0px; + min-height:25px; + border-bottom:1px solid #DCDCDC; + border-right:1px solid #DCDCDC; + background:#B6C6D6; +} + +QTreeView > QHeaderView::section +{ + background:#B6C6D6; + border:0px; + min-height:25px; +} + +QTreeView > QHeaderView::section:first +{ + background:#B6C6D6; + border:0px; + border-right:1px solid white; + min-height:25px; +} + +QTreeView > QHeaderView::section:middle +{ + background:#B6C6D6; + border:0px; + border-right:1px solid white; + min-height:25px; +} + +QTreeView > QHeaderView::section:last +{ + background:#B6C6D6; + border:0px; + border-left:1px solid white; + min-height:25px; +} + +QDialog{ + background-color:#E6ECF2; +} + +QPushButton{ + border: 1px solid #b1bac7; + border-radius: 4px; + background-color: #f5f8fa; + min-width:50px; + min-height:20px; +} +QPushButton:hover{ + border-color:#2dabf9; + background-color: #e5f2fd; +} +QPushButton:pressed{ + border:2px solid #2dabf9; + background-color: #f4f8fb; +} + +QComboBox{ + border:1px solid #b1bac7; + background:white; + min-width:60px; + font-family:Microsoft YaHei; +} + +QComboBox::drop-down { + border-width: 0px; + width:20; +} +QComboBox::down-arrow { + background:white; + image:url(:/icons/icons/down.png); + border:0px solid; +} + +QLineEdit{ + border: 1px solid #b1bac7; + background-color: white; + max-height:25px; +} + +QStatusBar::item{ + border: 0px; + background: none; +} + +/* 垂直滚动条 */ +QScrollBar:vertical { + border: 0px solid; + background: #E6ECF2; + width: 9px; + margin: 9px 0 9px 0; +} +QScrollBar::handle:vertical { + background: #ADBDCD; + min-height: 20px; +} +QScrollBar::handle:vertical:hover +{ + background:#759EC8; /* 鼠标放到滚动条上的时候,颜色变深 */ +} +QScrollBar::add-line:vertical { + border: 0px solid; + background: #E6ECF2; + border-image:url(:/icons/icons/arrowBottom.png); + height: 9px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical { + border: 0px solid; + background: #E6ECF2; + border-image:url(:/icons/icons/arrowTop.png); + height: 9px; + subcontrol-position: top; + subcontrol-origin: margin; +} +QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical { + border: 0px solid grey; + width: 0px; + height: 0px; +} + +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { + background: none; +} +/* 水平滚动条 */ +QScrollBar:horizontal { + border: 0px solid grey; + background: #E6ECF2; + height: 9px; + margin: 0px 9px 0 9px; +} +QScrollBar::handle:horizontal { + background: #ADBDCD; + min-width: 20px; +} +QScrollBar::handle:horizontal:hover +{ + background:#759EC8; /* 鼠标放到滚动条上的时候,颜色变深 */ +} + +QScrollBar::add-line:horizontal { + border: 0px solid; + background: #E6ECF2; + width: 9px; + border-image:url(:/icons/icons/arrowRight.png); + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal { + border: 0px solid; + background: #E6ECF2; + width: 9px; + border-image:url(:/icons/icons/arrowLeft.png); + subcontrol-position: left; + subcontrol-origin: margin; +} +QScrollBar::left-arrow:horizontal, QScrollBar::right-arrow:horizontal { + border: 0px solid; + width: 0px; + height: 0px; +} + +QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { + background: none; +} + +QPushButton#TablePropertyBtnHide{ + border: 0px solid ; + background-color: #ADBDCD; + border-image:url(:/icons/icons/hideRight.png); + min-width:4px; + max-width:6px; + min-height:60px; +} + +QPushButton#TablePropertyBtnHide:checked{ + border: 0px solid ; + background-color: #ADBDCD; + border-image:url(:/icons/icons/hideLeft.png); + min-width:4px; + max-width:6px; + min-height:60px; +} + +QPushButton#TablePropertyBtnHide:hover{ + background-color: #759EC8; +} + +QLineEdit#kbdSearchWidget{ + border: 1px solid #b1bac7; + border-radius: 6px; + background-color: white; + max-height:20px; +} + +QListView::item{ + min-height:23px; +} + +QSpinBox { + min-height: 25px; +} + + \ No newline at end of file diff --git a/resource/fr/style/dark/orderManage.qss b/resource/fr/style/dark/orderManage.qss new file mode 100644 index 00000000..35dc9328 --- /dev/null +++ b/resource/fr/style/dark/orderManage.qss @@ -0,0 +1,178 @@ +QWidget { + background:#022644; + color:#01a6ec; +} +QWidget#m_toolWidget{ + max-width:40px; +} +QWidget::separator{ + background-color:#01a0e7; + height:1px; + margin-bottom: 5px; +} +QToolButton{ + color: #00b3fd; + background-color: #0d3756; + border:1px solid #075993; + width: 30px; + height: 30px; + margin-bottom: 2px; +} +QPushButton { + color: #00b3fd; + background-color: transparent; + border:1px solid #075993; + width:40px; + height:20px; +} +QPushButton#m_editBtn, +QPushButton#m_delBtn{ + width: 80px; + height:30px; +} +QPushButton:hover,QToolButton:hover { + border: none; + background-color: #134a72; + color: #02efef; +} +QPushButton:pressed,QToolButton:pressed { + padding: 2px 0px 0px 2px; +} +QPushButton:disabled,QToolButton:disabled { + color: gray; + border-color:gray; + background: transparent; +} +QLineEdit,QTextEdit,QDateTimeEdit,QComboBox{ + height:25px; + font-size:13px; + background:#0d3756; + border: 1px solid #406587; + color:#406587; +} +QLineEdit#m_editName{ + font-size:20px; +} +QLineEdit:enabled,QTextEdit:enabled,QDateTimeEdit:enabled,QComboBox:enabled{ + color:rgb(0, 228, 249); + border: 1px solid; + border-color:rgb(7, 89, 147); +} +QTextEdit{ + min-height:50px; +} +QComboBox:drop-down{ + border:none; + padding-right:10px; +} +QComboBox:down-arrow,QDateTimeEdit:down-arrow{ + border-image:url(../../data/back_pixmap/arrowDown.png); +} +QDateTimeEdit:up-arrow{ + border-image:url(../../data/back_pixmap/arrowUp.png); +} +QComboBox QAbstractItemView{ + color:rgb(3, 116, 169); + selection-color:rgb(1, 166, 235); + background-color:rgb(13, 55, 86); + selection-background-color:rgb(16, 67, 102); + outLine: 0px; +} +QTreeWidget { + font: 14px; + border: 1px solid #0a5b93; + color:#01a6ec; + background:#072d48; +} + +QTreeWidget::item { + height:28px; +} + +QTreeWidget::item:hover, QTreeView::branch:hover { + background: rgba(255, 255, 255, 40); +} + +QTreeWidget::item:selected, QTreeView::branch:selected { + background: #134a72; + color:#02efef; +} + +QTreeWidget::branch { + background: transparent; +} + +QTreeWidget::indicator{ + image:url(../../resource/zh/public/dark/icon/unchecked.png); + width: 13px; + height: 13px; +} + +QTreeWidget::indicator:checked, QTableView::indicator:checked { + image:url(../../resource/zh/public/dark/icon/checked.png); +} + +QTreeWidget::branch:closed:has-children{ + border-image: none; + image:url(../../resource/zh/public/dark/icon/arrowRight.png); +} + +QTreeWidget::branch:open:has-children{ + border-image: none; + image:url(../../resource/zh/public/dark/icon/arrowBottom.png); +} +QHeaderView{ + background-color: #022b4b; + border:none; +} +QHeaderView::section { + height: 25px; + color: #01a6ec; + padding:0px 0px 0px 5px; + background: #072d48; + border:1px solid #0a5b93; +} +QTableView{ + border: 1px solid #0a5b93; + color: #027bb3; + gridline-color: #024376; + alternate-background-color: transparent; + background-color: transparent; +} +QTableView::item:selected{ + background-color: #134a72; + color: #02efef; +} +QScrollBar:vertical { + background:rgb(16, 67, 102); + width: 8px; + margin: 0px; +} + +QScrollBar:horizontal { + height: 8px; + background:rgb(16, 67, 102); +} + +QScrollBar::handle:vertical, +QScrollBar::handle:horizontal { + background:rgb(23, 94, 143); +} + +QScrollBar::handle:vertical:hover, +QScrollBar::handle:horizontal:hover { + background: #175e7e; +} + +QScrollBar::sub-line:vertical, QScrollBar::add-line:vertical, +QScrollBar::sub-line:horizontal, QScrollBar::add-line:horizontal { + width: 0; + height: 0; +} + +QScrollBar::sub-page:vertical, +QScrollBar::add-page:vertical, +QScrollBar::sub-page:horizontal, +QScrollBar::add-page:horizontal{ + background:rgb(16, 67, 102); +} diff --git a/resource/fr/style/dark/planCurvesConfigure.qss b/resource/fr/style/dark/planCurvesConfigure.qss new file mode 100644 index 00000000..a3059907 --- /dev/null +++ b/resource/fr/style/dark/planCurvesConfigure.qss @@ -0,0 +1,14 @@ +CurveChartView{ + qproperty-plotBackgroundColor : transparent; + qproperty-plotTickColor : #A2D4E6; + qproperty-plotCurveColor : rgba(0,180,255,1); + qproperty-plotLinePen: rgba(0,191,255,0.3); + qproperty-plotTickTitleColor: #A2D4E6; + qproperty-plotAxisXText: "h"; +} +QPushButton { + width:110px; +} +QDialog QPushButton{ + width:50px; +} \ No newline at end of file diff --git a/resource/fr/style/dark/public.qss b/resource/fr/style/dark/public.qss new file mode 100644 index 00000000..a304af11 --- /dev/null +++ b/resource/fr/style/dark/public.qss @@ -0,0 +1,1714 @@ +/*深色*/ + +QWidget +{ + font: 17px "Microsoft YaHei"; + color: #FFFFFF; + background:transparent; + outline:none; +} + +QWidget:disabled +{ + color:#ABABAB; + border-color: #ABABAB; +} + +QFrame{ + color: #FFFFFF; + background-color: transparent;/*不能设置为transparent*/ +} + +QDialog { + background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgba(42, 66, 99, 1), stop:1 rgba(68, 105, 155, 1)); + border-radius: 0px; + box-shadow: none !important; +} + +QMainWindow +{ + background-color: #1D2E57; +} + +QMainWindow::separator{ + border: 0px solid #6088BA; + border-style: outset; + width: 5px; + height: 5px; +} +QMainWindow::separator:hover{ + background: #5DA5FB; +} +QSplitter::handle{ + border: 0px solid #6088BA; + width: 5px; + height: 5px; +} +QSplitter::handle:hover{ +/*splitter->handle(1)->setAttribute(Qt::WA_Hover, true);才生效*/ + border-color: #5DA5FB; + background-color: #5DA5FB; +} +QSplitter::handle:pressed{ + border-color: #5DA5FB; + background-color: #033d67; +} +QSizeGrip{ + background-color: none; +} + +/* =============================================== */ +/* Label */ +/* =============================================== */ +QLabel { + background: transparent; + border: 0px solid transparent; + padding: 1px; +} + + +/* A QLabel is a QFrame ... */ +/* A QToolTip is a QLabel ... */ +QToolTip { + border: 2px solid #6088BA; + border-radius: 3px; + opacity:210; +} + + + + /* =============================================== */ +/* QComboBox */ +/* =============================================== */ +QComboBox{ + background: transparent; + selection-background-color:#5DA5FB; + selection-color:#FFFFFF; + border: 2px solid #6088BA; + border-radius: 0px; + padding: -2 10 -2 10px; + height:40px; +} + +QComboBox:hover +{ + border-color: #5DA5FB; +} + +QComboBox:focus { + border-color: #5DA5FB; +} + +QComboBox QAbstractItemView +{ + min-width: 200px; + background:#4E709A; + selection-background-color: #5DA5FB; + selection-color:#FFFFFF; + /*alternate-background-color: #0E1D41;*/ + border: 2px solid #6088BA; + padding: 10px 0px 10px 0px; +} + +QComboBox QAbstractItemView::item:selected:active { + background: transparent; + color: #FFFFFF; +} + +QComboBox::drop-down { + border-image:url(../../resource/zh/public/dark/icon/box-down-normal.png); + margin-right: 10px; + height:9px; + width:14px; + subcontrol-origin: margin; + subcontrol-position: center right; +} + +QComboBox::drop-down:hover{ + border-image:url(../../resource/zh/public/dark/icon/box-down-select.png); +} + +QComboBox::drop-down:open:!hover { + border-image:url(../../resource/zh/public/dark/icon/box-down-normal.png); +} + +QComboBox::drop-down:open:hover { + border-image:url(../../resource/zh/public/dark/icon/box-down-select.png); +} + +QComboBox::drop-down:disabled { + border-image:url(../../resource/zh/public/dark/icon/box-down-disable.png); +} + +/* =============================================== */ +/* QMenu */ +/* =============================================== */ +QMenu +{ + min-width: 200px; + background:#4E709A; + padding: 10px 0px 10px 0px; +} + +QAction { + min-width: 240px; + height:40px; + color:#FFFFFF; + background:#4E709A; + padding: 0px 20px 0px 20px; +} + +QAction:hover { + font-weight: bold; + color:#FFFFFF; + background-color: #5DA5FB; +} + +QMenu::item{ + min-width: 200px; + height:40px; + color:#FFFFFF; + background:transparent; + border: 2px solid transparent; + padding: 0px 20px 0px 20px; +} +QMenu::item:hover{ + font-weight: bold; + color:#FFFFFF; + background:#5DA5FB; +} + +QMenu::item:disabled,QMenu::item:disabled:selected,QMenu::item:disabled:pressed{ + + color: #ABABAB; + background: transparent; +} + +QMenu::item#editBatch{ + min-width: 150px; +} + +QMenu::item:selected{ + color:#FFFFFF; + background:#5DA5FB; +} + +QMenu::item:pressed { + font-weight: bold; + color:#FFFFFF; + background:#5DA5FB; +} + +QMenu#contextMenu{ + min-width:240px; +} + + +/* =============================================== */ +/* TextBox */ +/* =============================================== */ +QLineEdit { + background: transparent;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color: #5DA5FB; + selection-color:#FFFFFF; + border: 2px solid #6088BA; + border-radius: 0px; + padding: 3px 10px 4px 10px; + max-height:40px; +} + +QLineEdit:hover{ + border-color: #5DA5FB; +} + +QLineEdit:focus{ + border-color: #5DA5FB; +} +/*QLineEdit[readOnly="true"] { color: gray }*/ +QLineEdit[echoMode="2"]{ + lineedit-password-character: 9679;/*字符的ascii码35 88等 */ +} + +QLineEdit:read-only { + color: #FFFFFF; +} + +QLineEdit:disabled{ + color:#ABABAB; +} + +QLineEdit[placeholderText] +{ + color: #ACB3BF; + font-size: 20px; +} + +QTextEdit{ + selection-background-color:#5DA5FB; + selection-color:#FFFFFF; + border: 2px solid #6088BA; + +} +QTextEdit:hover{ + border-color: #5DA5FB; +} +QTextEdit:focus{ + border-color: #5DA5FB; +} +/* =============================================== */ +/* Button */ +/* =============================================== */ +QPushButton { + border: 2px solid #6088BA; + background-color:transparent; + radius:0px; + padding: -2px 10px -2px 10px; + min-height: 40px; +} + +QPushButton:hover{ + background-color: #5DA5FB; + border-color: #5DA5FB; +} + +QPushButton:pressed +{ + font-weight: bold; + background-color: #5DA5FB; +} + +QPushButton:focus,QPushButton:default { + + border-color: #5DA5FB; /* make the default button prominent */ +} + +QPushButton:checked{ + + background-color: #5DA5FB; +} + +QToolBar{ + border: 1px solid #6088BA; + spacing: 0px; +} + +QToolBar::separator:horizontal { + background:#6088BA; + width: 1px; +} + +QToolBar::separator:vertical { + background:#6088BA; + height: 1px; +} + +QToolButton,QToolButton:unchecked { /* ToolBar里的按钮和带下拉菜单的按钮 */ + border: 2px solid #6088BA; + background-color:transparent; + radius:0px; + padding: 3px 2px 3px 3px; +} +QToolButton:checked{ + font-weight: bold; + background-color: #5DA5FB; +} +QToolButton:hover{ + background-color: #5DA5FB; + border-color: #5DA5FB; +} + +QToolButton:pressed,QToolButton:checked:hover{ + font-weight: bold; + background-color: #5DA5FB; +} +QToolButton:checked:pressed{ + font-weight: bold; + background-color: #5DA5FB; +} + + +/* only for MenuButtonPopup */ +QToolButton[popupMode="1"]{ + padding-left: 1px; + padding-right: 15px; /* make way for the popup button */ + border: 2px solid #6088BA; + min-height: 15px; + /*background: qlineargradient(x1:0, y1:0 ,x2:0, y2:1 + stop: 0 #39495C, stop: 0.05 #0d3756, stop: 0.5 #0d3756 + stop: 0.95 #39495C stop: 1#39495C)*/ +} +QToolButton[popupMode="1"]:hover{ + border-width: 1px; + background-color: #5DA5FB; + border-color: #5DA5FB; +} + +QToolButton::menu-button { + border: 2px solid #6088BA; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + width: 16px; +} + +QToolButton::menu-button:hover { + border: 2px solid #5DA5FB; +} + +QToolButton::menu-button:pressed { + border: 2px solid #6088BA; +} + +QToolButton QMenu +{ + selection-background-color: #5DA5FB; + selection-color:#001220; + background: transparent; + border: 2px solid #6088BA; + padding: 10px 0px 10px 0px; +} + +QToolButton QMenu::item +{ + height:30px; + background: transparent; + border: 2px solid transparent; + padding: 0px 20px 0px 20px; +} + +/* =============================================== */ +/* QRadioButton */ +/* =============================================== */ +QRadioButton { + height: 28px; +} + +QRadioButton:hover{ + color:#5DA5FB; +} + + +QRadioButton::indicator{ + width: 14px; + height: 14px; +} + +QRadioButton::indicator::unchecked{ + border-image:url(../../resource/zh/public/dark/icon/rkb-normal.png); +} + +QRadioButton::indicator:unchecked:hover { + border-image:url(../../resource/zh/public/dark/icon/rkb-hover.png); +} + +QRadioButton::indicator:unchecked:pressed { + border-image:url(../../resource/zh/public/dark/icon/rkb-hover.png); +} + +QRadioButton::indicator:unchecked:disabled { + border-image:url(../../resource/zh/public/dark/icon/rkb-disable.png); +} + +QRadioButton::indicator::checked{ + border-image:url(../../resource/zh/public/dark/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:hover { + border-image:url(../../resource/zh/public/dark/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:pressed { + border-image:url(../../resource/zh/public/dark/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:disabled { + border-image:url(../../resource/zh/public/dark/icon/rkb-select-disable.png); +} + +/* =============================================== */ +/* QCheckBox */ +/* =============================================== */ +QCheckBox{ + color:#FFFFFF; +} + +QCheckBox::hover { + color:#5DA5FB; +} + +QCheckBox::indicator{ + width: 14px; + height: 14px; +} + + +QCheckBox::indicator::unchecked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-normal.png); +} + +QCheckBox::indicator:unchecked:hover { + border-image:url(../../resource/zh/public/dark/icon/ckb-uncheck-hover.png); +} + +QCheckBox::indicator:unchecked:pressed { + border-image:url(../../resource/zh/public/dark/icon/ckb-uncheck-hover.png); +} + +QCheckBox::indicator:unchecked:disabled { + border-image:url(../../resource/zh/public/dark/icon/ckb-disable.png); +} + +QCheckBox::indicator::checked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:hover { + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:pressed { + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:disabled { + border-image:url(../../resource/zh/public/dark/icon/ckb-select-disable.png); +} + +QCheckBox::indicator:indeterminate { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck.png); +} + +QCheckBox::indicator:indeterminate:hover { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck-hover.png); +} + +QCheckBox::indicator:indeterminate:pressed { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck-hover.png); +} + +QCheckBox::indicator:indeterminate:disabled { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck-disable.png); +} + +/* =============================================== */ +/* Slider ProgressBar */ +/* =============================================== */ +QProgressBar { + border: 2px solid #6088BA; + border-radius: 4px; + text-align: center; +} + +QProgressBar::chunk { + background-color: #b3d7f9; + width: 4px; + margin: 1px; +} + +QSlider{ + border: 2px solid transparent; +} + +QSlider::disabled{ + border: 2px solid transparent; +} + +QSlider::groove{ + border: 1px solid #6088BA; + /*background: transparent;*/ +} +QSlider::handle {/*设置中间的那个滑动的键*/ + border: 1px solid #6088BA; + background: #5DA5FB; +} +QSlider::groove:horizontal { + height: 3px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */ + left:5px; right: 5px; +} +QSlider::groove:vertical{ + width: 3px; + top: 5px; bottom: 5px; +} +QSlider::handle:horizontal{ + width: 6px; + margin: -7px; /* height */ +} +QSlider::handle:vertical{ + height: 6px; + margin: -7px; /* height */ +} +QSlider::add-page{/*还没有滑上去的地方*/ + border: 2px solid #6088BA; + background:#4B6D97; +} +QSlider::sub-page{/*已经划过的从地方*/ + background: #5DA5FB; +} + +/* =============================================== */ +/* ScrollBar */ +/* =============================================== */ +QScrollBar{ + background-color: transparent; + border: 1px solid #6088BA; + border-radius: 0px; + padding: 1px; + margin:0px; + height: 15px; + width: 15px; +} + +QScrollBar::handle{ + border-color:#6088BA; + radius: 0px; + background: #6088BA; + min-width: 10px; + min-height: 10px; +} +QScrollBar::handle:hover { + background: #5DA5FB; +} +QScrollBar::add-line, QScrollBar::sub-line, +QScrollBar::add-page, QScrollBar::sub-page { + width: 0px; + background: transparent; +} +QScrollArea{ + border: none; +} +/*QScrollArea QAbstractSlider{ + border-radius: 0px; +}*/ + + + +/* =============================================== */ +/* GroupBox */ +/* + left: 6px; + top:-30px; + background-color: transparent; +/* =============================================== */ +QGroupBox { + background-color: transparent; + border: 1px solid #6088BA; + padding:0px 0px 0px 0px; + margin-top: 30px; +} + +QGroupBox:disabled{ + border: 2px solid #ABABAB; +} + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + left:20px; + background-color: transparent; +} +QGroupBox::indicator::unchecked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-normal.png); +} +QGroupBox::indicator::checked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} +QGroupBox::indicator:indeterminate { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck.png); +} + + +/* =============================================== */ +/* ToolBox */ +/* =============================================== */ +QToolBox{ + border: 2px solid #6088BA; +} +QToolBox::tab { + background: transparent; + border: 1px solid #6088BA; +} +QToolBox::tab:hover { + background-color: #4B6D97; + border-color: #5DA5FB; +} +QToolBox::tab:pressed { + font-weight: bold; + color:#FFFFFF; + background-color: #4B6D97; + border: 2px solid #5DA5FB; +} +QToolBox::tab:selected { + font-weight: bold; + color:#FFFFFF; + background-color: #4B6D97; + border: 2px solid #5DA5FB; +} + +/* =============================================== */ +/* QTabBar */ +/* =============================================== */ +QTabWidget{ + /*margin-top:10px;*/ + +} +QTabWidget::pane{ + border: 2px solid #6088BA; +} +QTabWidget::tab-bar { + left: 0px; +} +QTabBar::tab { + color:#FFFFFF; + background: transparent; + border: 0px solid #6088BA; + padding: 0px 10px 0px 10px; + min-height:38px; +} +QTabBar::tab:hover { + background: #5DA5FB; + border-color: transparent; +} +QTabBar::tab:selected { + background: #5DA5FB; + color:#FFFFFF; +} +QTabBar::tab:pressed { + font-weight: bold; + background: #5DA5FB; + border-color: #5DA5FB; + color:#FFFFFF; +} +QTabBar::tab:disabled { + color:#ABABAB; +} + +QTabBar::tab:focus { + border-color: #5DA5FB; +} +QTabBar::tab:top{ + border-top:0px; + border-left:0px; + border-right:0px; + border-bottom:0px solid transparent; +} + +QTabBar::tab:top:selected{ + border-top:0px; + border-left:0px; + border-right:0px; + border-bottom:2px solid #5DA5FB; +} + +QTabBar::tab:bottom{ + width:80px; + height:30px; + border-top:2px solid transparent; + border-left:0px; + border-right:0px; + border-bottom:0px; + +} + +QTabBar::tab:bottom:selected{ + border-top:2px solid #5DA5FB; + border-left:0px; + border-right:0px; + border-bottom:0px; +} + +QTabBar::tab:right{ + height:80px; + border-top:0px; + border-bottom:0px; + border-right:0px; + border-left:2px solid transparent; + +} + +QTabBar::tab:right:selected{ + height:80px; + border-top:0px; + border-bottom:0px; + border-right:0px; + border-left:2px solid #5DA5FB; + +} +QTabBar::tab:left{ + height:80px; + border-top:0px; + border-bottom:0px; + border-left:0px; + border-right:2px solid transparent; + +} + +QTabBar::tab:left:selected{ + height:80px; + border-top:0px; + border-bottom:0px; + border-left:0px; + border-right:2px solid #5DA5FB; +} + + +QTabWidget::pane +{ + border:1px solid #6088BA; + padding:6px; +} + + +/* =============================================== */ +/* QHeaderView for list table */ +/* =============================================== */ +QHeaderView { + background-color: #4B6D97; + border: none; + margin: -2px; + padding: 0px; + height:40px; +} +QHeaderView::section, QTableCornerButton::section {/*设置表头属性*//*左上角*/ + background-color: #4B6D97; + padding: 0px 10px 0px 10px; + min-height: 40px; + border-top: 0px solid #6088BA; + border-left: 0px solid #6088BA; + border-right: 2px solid #6088BA; + border-bottom: 2px solid #6088BA; + border-radius: 0px; +} +QHeaderView::section:hover, QTableCornerButton::section:hover{ + /*background-color: #033d67;*/ +} +QHeaderView::section:pressed{ + background-color: #5DA5FB; + color:#FFFFFF; +} +QHeaderView::section:checked { + background-color: #4B6D97; + color:#FFFFFF; +} + +QHeaderView::down-arrow +{ + subcontrol-position:center right; + padding-right:10px; + image:url(../../resource/zh/public/dark/icon/box-down-normal.png); +} + +QHeaderView::up-arrow +{ + subcontrol-position:center right; + padding-right:10px; + image:url(../../resource/zh/public/dark/icon/box-up-normal.png); +} + +/* =============================================== */ +/* QAbstractItemView */ +/* =============================================== */ +QAbstractItemView +{ + show-decoration-selected:1; + selection-background-color:#5DA5FB; /*鼠标选中时背景色*/ + selection-color:#FFFFFF; /*鼠标选中时前景色:文字颜色*/ + /*设置交替颜色,需要在函数属性中设置:tableWidget->setAlternatingRowColors(true)*/ + alternate-background-color: transparent; + background: transparent; + color:#FFFFFF; + border: 2px solid #6088BA; +} + +QAbstractItemView::item +{ + background: transparent; + radius:0px; + min-height:30px; + border: 0px; + padding: 0px; +} + +QAbstractItemView::item:hover{ + color: #00d3ff; +} + +QAbstractItemView::item:pressed{ + color: #FFFFFF; + background:#5DA5FB; +} + +QAbstractItemView::item:selected:focus { + background: #5DA5FB; + color: #FFFFFF; +} + +QAbstractItemView::item:selected:!focus { + background: #5DA5FB; + color: #FFFFFF; +} + +QAbstractItemView::item:selected:active { + background: #5DA5FB; + color: #FFFFFF; +} + +QAbstractItemView QCheckBox::hover{ + + background: #5DA5FB; +} + +QAbstractItemView QCheckBox::pressed{ + color: #FFFFFF; + background:#5DA5FB; +} + +QAbstractItemView QCheckBox::focus{ + color:#FFFFFF; + background: #5DA5FB; +} + +QAbstractItemView QCheckBox::selected:focus { + background: #5DA5FB; + color: #FFFFFF; +} + +QAbstractItemView QCheckBox::selected:!focus { + background: #5DA5FB; + color: #FFFFFF; +} + +QAbstractItemView QCheckBox::selected:active { + background: #5DA5FB; + color: #FFFFFF; +} + +QAbstractItemView::indicator::unchecked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-normal.png); +} + + +QAbstractItemView::indicator::checked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} + +QAbstractItemView::indicator:indeterminate { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck.png); +} + +QAbstractItemView::branch{ + background-color: transparent; +} + +QAbstractItemView::branch:alternate +{ + alternate-background-color: #5DA5FB; +} + + +QAbstractItemView::branch:hover{ + background: #5DA5FB; +} + +QAbstractItemView::branch:pressed{ + color: #FFFFFF; + background:#5DA5FB; +} + +QAbstractItemView::branch:focus{ + color:#FFFFFF; + background: #5DA5FB; +} + +QAbstractItemView::branch:selected:focus { + background: #5DA5FB; + color: #FFFFFF; +} + +QAbstractItemView::branch:selected:!focus{ + background: #5DA5FB; + color: #FFFFFF; +} + +QAbstractItemView::branch:selected:active { + background: #5DA5FB; + color: #FFFFFF; +} + + +/* =============================================== */ +/* QListView QListWidget */ +/* =============================================== */ +QListWidget, QListView +{ + gridline-color: #6088BA; /*表格中的网格线条颜色*/ + border:2px solid #6088BA; /*边框线的宽度、颜色*/ + /*border:none;*/ /*去除边界线*/ + /*border-radius:5px;*/ + /*padding:10px 10px;*/ /*表格与边框的间距*/ +} + +QListView::item, QListWidget::item{ + background: transparent; + outline-style: none; + border: none; + padding: 0px 10px 0px 10px; +} + +/* =============================================== */ +/* QTableWidget */ +/* =============================================== */ +QTableWidget, QTableView +{ + gridline-color: #39495C; /*表格中的网格线条颜色*/ + border:2px solid #6088BA; /*边框线的宽度、颜色*/ + /*border:none;*/ /*去除边界线*/ + /*border-radius:5px;*/ + /*padding:10px 10px;*/ /*表格与边框的间距*/ +} +QTableView::item, QTabWidget::item{ + background: transparent; + outline-style: none; + border: none; +} + +QTableView QLineEdit, +QTableWidget QLineEdit, +QTreeWidget QLineEdit, +QTreeView QLineEdit +{ + background: #4B6D97; + border-radius: 0px; + padding: 0px; +} + +QTableWidget QComboBox , +QTableView QComboBox, +QTreeWidget QComboBox, +QTreeView QComboBox +{ + background: #4B6D97; + border: 0px; + border-radius: 0px; + margin: 0px; + height:30px; +} + +QTableWidget QPushButton , +QTableView QPushButton, +QTreeWidget QPushButton, +QTreeView QPushButton +{ + min-height: 30px; +} + + + +/* =============================================== */ +/* QTreeWidget QTreeView */ +/* =============================================== */ +QTreeWidget, QTreeView +{ + background:transparent; +} +QTreeWidget::item, QTreeView::item{ + background: transparent; + outline-style: none; + border: none; +} + + +QTreeWidget::branch,QTreeView::branch { + background: transparent; +} + +QTreeWidget::branch:hover,QTreeView::branch:hover{ + background: transparent; +} + +QTreeWidget::branch:pressed,QTreeView::branch:pressed{ + color: #FFFFFF; + background:#5DA5FB; +} + +QTreeWidget::branch:focus,QTreeView::branch:focus{ + color:#FFFFFF; + border-color: #5DA5FB; +} + +QTreeWidget::branch:selected:focus,QTreeView::branch:selected:focus { + background: #5DA5FB; + color: #FFFFFF; +} + +QTreeWidget::branch:selected:!focus,QTreeView::branch:selected:!focus{ + background: #5DA5FB; + color: #FFFFFF; +} + +QTreeWidget::branch:selected:active,QTreeView::branch:selected:active { + background: #5DA5FB; + color: #FFFFFF; +} + +QTreeView::branch { + width:9px; + height:9px; + background-repeat: no-repeat; + background-position: center; +} + +QTreeView::branch:closed:has-children { + image:url(../../resource/zh/public/dark/icon/arrowRight.png); +} + +QTreeView::branch:closed:has-children:hover { + image:url(../../resource/zh/public/dark/icon/arrowRight.png); +} + +QTreeView::branch:open:has-children { + image:url(../../resource/zh/public/dark/icon/arrowBottom.png); +} + +QTreeView::branch:open:has-children:hover { + image:url(../../resource/zh/public/dark/icon/arrowBottom.png); +} + +/* =============================================== */ +/* QAbstractSpinBox spinbox QDateTimeEdit */ +/* =============================================== */ +QAbstractSpinBox { + background: transparent;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color:#5DA5FB; + selection-color:#FFFFFF; + border: 2px solid #6088BA; + border-radius: 0px; + padding: 0 0 0 0px; + height:40px; +} + +QAbstractSpinBox:hover { + border-color: #5DA5FB; +} + +QAbstractSpinBox:focus { + border-color: #5DA5FB; + +} + +/*SpinBox向上按钮样式*/ +QAbstractSpinBox::up-button { +margin: 5px 5px 5px 5px; + height:9px; + width:14px; + image:url(../../resource/zh/public/dark/icon/box-up-normal.png); + } + +QAbstractSpinBox::up-button:hover { + image:url(../../resource/zh/public/dark/icon/box-up-select.png); + } + +QAbstractSpinBox::up-button:pressed { + image:url(../../resource/zh/public/dark/icon/box-up-select.png); + + } + +QAbstractSpinBox::up-button:disabled{ + image:url(../../resource/zh/public/dark/icon/box-up-disable.png); + + } + +/*SpinBox向下按钮样式*/ +QAbstractSpinBox::down-button { + margin: 5px 5px 5px 5px; + height:9px; + width:14px; + image:url(../../resource/zh/public/dark/icon/box-down-normal.png); + } + +QAbstractSpinBox::down-button:hover{ + image:url(../../resource/zh/public/dark/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:pressed{ + image:url(../../resource/zh/public/dark/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:disabled{ + image:url(../../resource/zh/public/dark/icon/box-down-disable.png); + +} + +QDateTimeEdit::drop-down { + subcontrol-origin: padding; + subcontrol-position: right center; + width: 30px; + background-color: transparent; + image:url(../../resource/zh/public/dark/icon/calendar.png); +} + + +/* =============================================== */ +/* QCalendarWidget */ +/* =============================================== */ +QCalendarWidget QWidget{ + border: none; + background-color: #4E709A; + color:#FFFFFF; +} + +QCalendarWidget QWidget#qt_calendar_calendarview{ + border-left: 1px solid #6088BA; + border-right: 1px solid #6088BA; + border-bottom: 1px solid #6088BA; + background-color: #4E709A; +} + +QCalendarWidget QWidget#qt_calendar_navigationbar { + background-color: #4B6D97; + border: 2px solid #6088BA; +} + + +QCalendarWidget QMenu{ + width: 80px; + background-color: #4E709A; + border: 0px; + color:#5DA5FB; +} + + +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: transparent; +} + +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: transparent; +} + + +QCalendarWidget QAbstractSpinBox { + background: transparent; + selection-background-color: #5DA5FB; + border: 2px solid #6088BA; + border-radius: 0px; + padding: 0 10 0 10px; + height:30px; +} + +QCalendarWidget QAbstractSpinBox:hover { + background-color: #5DA5FB; +} + +QCalendarWidget QAbstractSpinBox:focus { + background-color: #5DA5FB; +} + +QCalendarWidget QToolButton:pressed,QCalendarWidget QToolButton:checked:hover{ + color:#5DA5FB; +} + + +QCalendarWidget QToolButton#qt_calendar_prevmonth{ + width: 40px; + qproperty-icon: url(../../resource/zh/public/dark/icon/arrowLeft.png); + background-color: transparent; +} + +QCalendarWidget QToolButton#qt_calendar_nextmonth { + width: 40px; + qproperty-icon: url(../../resource/zh/public/dark/icon/arrowRight.png); + background-color: transparent; +} + +QCalendarWidget QToolButton#qt_calendar_monthbutton { + background-color: transparent; +} + +QCalendarWidget QAbstractItemView +{ + selection-background-color:#5DA5FB; /*鼠标选中时背景色*/ + selection-color:#FFFFFF; /*鼠标选中时前景色:文字颜色*/ + /*设置交替颜色,需要在函数属性中设置:tableWidget->setAlternatingRowColors(true)*/ + alternate-background-color: #4B6D97; + background: transparent; + border: 2px solid #6088BA; +} + +/* =============================================== */ +/* searchButton搜索框 */ +/* =============================================== */ +QPushButton#searchButton{ + background:transparent; + min-height:22px; + max-width:22px; + border:none; + margin-left:0px; + padding: 0 5 0 5px; + image:url(../../resource/zh/public/dark/icon/search.png); +} + +QLineEdit#searchTextEdit { + border:none; + background:transparent; +} + +QWidget#searchWidget { + border:2px solid #5DA5FB; + background:#4B6D97; + max-height: 40px; +} + +/* =============================================== */ +/* 主窗口 */ +/* =============================================== */ + +QWidget#centralwidget +{ + background:#1d2e57; +} + +WorkFrame +{ + background-color: #1d2e57; +} + +MenuFrame +{ + min-width: 90px; + max-width: 90px; + background-color: #0e1d42; +} + +/* =============================================== */ +/* 自定义控件部分- 标题头 */ +/* =============================================== */ +MainMenu QLabel#MainMenu_BG { + background:#0E1D42; + min-height: 42px; + max-height: 42px; +} + +MainTitle QLabel#icon { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + background:transparent; + border-image: url(../../resource/zh/public/dark/icon/min-logo.png); +} + +MainTitle QLabel#title { + color:#00D3FF; + font-weight: bold; +} + +MainTitle QPushButton#min_btn { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/dark/icon/btn_min.png) 0 96 0 0 ; +} + +MainTitle QPushButton#min_btn:hover { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_min.png) 0 64 0 32; +} + +MainTitle QPushButton#min_btn:pressed { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_min.png) 0 32 0 64 ; + +} + +MainTitle QPushButton#min_btn:disabled { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/dark/icon/btn_min.png) 0 0 0 96 ; + +} + + +MainTitle QPushButton#max_btn[buttonStatus="max"]{ + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/dark/icon/btn_max.png) 0 96 0 0 ; +} + +MainTitle QPushButton#max_btn:hover[buttonStatus="max"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_max.png) 0 64 0 32; +} + +MainTitle QPushButton#max_btn:pressed[buttonStatus="max"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_max.png) 0 32 0 64 ; + +} + +MainTitle QPushButton#max_btn:disabled[buttonStatus="max"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/dark/icon/btn_max.png) 0 0 0 96 ; + +} + + + +MainTitle QPushButton#max_btn[buttonStatus="normal"]{ + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/dark/icon/btn_normal.png) 0 96 0 0 ; +} + +MainTitle QPushButton#max_btn:hover[buttonStatus="normal"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_normal.png) 0 64 0 32; +} + +MainTitle QPushButton#max_btn:pressed[buttonStatus="normal"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_normal.png) 0 32 0 64 ; + +} + +MainTitle QPushButton#max_btn:disabled[buttonStatus="normal"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/dark/icon/btn_normal.png) 0 0 0 96 ; + +} + +MainTitle QPushButton#close_btn { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/dark/icon/btn_close.png) 0 96 0 0 ; +} + +MainTitle QPushButton#close_btn:hover { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_close.png) 0 64 0 32; +} + +MainTitle QPushButton#close_btn:pressed { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_close.png) 0 32 0 64 ; + +} + +MainTitle QPushButton#close_btn:disabled { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/dark/icon/btn_close.png) 0 0 0 96 ; + +} + + + +/* =============================================== */ +/* 自定义控件部分- 弹出窗 */ +/* =============================================== */ +QWidget#CustomDialogCentralWidget +{ + background-color: #fdfdfd; + border-left:1px solid #adbdcd; + border-right:1px solid #adbdcd; + border-bottom:1px solid #B2B9C3; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + border-style: solid; +} + +CustomDialogTitle{ + border-top:2px solid #5da5fb; + border-left:2px solid #5da5fb; + border-right:2px solid #5da5fb; + border-bottom:1px solid #6088BA; + background:#6088BA; + min-height: 42px; + max-height: 42px; +} + +CustomDialogTitle QLabel#icon { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + background:transparent; + border-image: url(../../resource/zh/public/dark/icon/min_logo.png); +} + +CustomDialogTitle QLabel#title { + color:#FFFFFF; + font-weight: bold; +} + + +CustomDialogTitle QPushButton#close_btn { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/dark/icon/btn_close.png) 0 96 0 0 ; +} + +CustomDialogTitle QPushButton#close_btn:hover { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_close.png) 0 64 0 32; +} + +CustomDialogTitle QPushButton#close_btn:pressed { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/dark/icon/btn_close.png) 0 32 0 64 ; + +} + +CustomDialogTitle QPushButton#close_btn:disabled { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/dark/icon/btn_close.png) 0 0 0 96 ; +} + +CustomDialog,CustomUiDialog +{ + background:#1D2E57; + border: 2px solid #5da5fb; +} + +/* =============================================== */ +/* 自定义控件部分- 主菜单 */ +/* =============================================== */ +MenuFrame QPushButton{ + background-color:transparent; + background-position:top; + background-repeat:no-repeat; + background-origin:content; + height:45px; + width:60px; + padding:18px 0px -10px 0px; + margin: 0px -1px 1px 5px; + border:1px solid transparent; + + background-image:url(../../resource/zh/public/light/icon/main_common.png); + border-width: 1px; +} + +MenuFrame QPushButton:hover{ + + border-top-left-radius:8px; + border-bottom-left-radius:8px; + border-top-right-radius:8px; + border-bottom-right-radius:8px; + background-color:transparent; + color: #FFFFFF; + border-top:1px solid #6088ba; + border-left:1px solid #6088ba; + border-right:1px solid #6088ba; + border-bottom:1px solid #6088ba; + + background-image:url(../../resource/zh/public/light/icon/main_common.png); +} + + + +MenuFrame QPushButton:pressed, MenuFrame QPushButton:checked,MenuFrame QPushButton:focus{ + border-top-left-radius:8px; + border-bottom-left-radius:8px; + border-top-right-radius:0px; + border-bottom-right-radius:0px; + background-color: #1d2e57; + font-weight: bold; + color: #FFFFFF; + border-top:1px solid #6088ba; + border-left:1px solid #6088ba; + border-right:1px solid transparent; + border-bottom:1px solid #6088ba; + background-image:url(../../resource/zh/public/light/icon/main_common.png) ; +} + +MenuFrame QWidget#centralWidget,MenuFrame QWidget#scrollAreaWidget,MenuFrame QWidget#toolBtnWidget,QScrollArea +{ + background:transparent; +} + + +QPushButton#upButton { + background-position:top; + background-repeat:no-repeat; + background-origin:content; + + text-align:bottom; + padding:0px; + margin: 0px; + border:0px solid transparent; + border-radius:0px; + + color: transparent; + height: 32px; + width: 32px; + background:transparent; + + border-image: url(../../resource/zh/public/dark/icon/btn_up.png) 0 96 0 0 ; + +} + +QPushButton#upButton:hover { + background-color: #d9e8fd; + border: 0px; + border-image: url(../../resource/zh/public/dark/icon/btn_up.png) 0 64 0 32; +} + +QPushButton#upButton:pressed { + background-color: #096ae4; + border: 0px; + border-image: url(../../resource/zh/public/dark/icon/btn_up.png) 0 32 0 64 ; +} + +QPushButton#upButton:disabled { + background:transparent; + border: 0px; + border-image: url(../../resource/zh/public/dark/icon/btn_up.png) 0 0 0 96 ; +} + + +QPushButton#downButton { + background-position:top; + background-repeat:no-repeat; + background-origin:content; + + text-align:bottom; + padding:0px; + margin: 0px; + border:1px solid #B2B9C3; + border-radius:0px; + + color: transparent; + height: 32px; + width: 32px; + background:transparent; + + border-image: url(../../resource/zh/public/light/icon/btn_down.png) 0 96 0 0 ; +} + +QPushButton#downButton:hover { + background-color: #d9e8fd; + border: 0px; + border-image: url(../../resource/zh/public/light/icon/btn_down.png) 0 64 0 32; +} + +QPushButton#downButton:pressed { + background-color: #096ae4; + border: 0px; + border-image: url(../../resource/zh/public/light/icon/btn_down.png) 0 32 0 64 ; +} + +QPushButton#downButton:disabled { + background:transparent; + border: 0px; + border-image: url(../../resource/zh/public/light/icon/btn_down.png) 0 0 0 96 ; +} + + +/* =============================================== */ +/* 自定义控件部分- 消息窗 */ +/* =============================================== */ +N_MessageBox +{ + min-height:250px; + min-width:360px; +} +N_MessageBox CustomButton +{ + min-width: 80px; + padding: 0px 1px; +} + +AdaptImage[MSG_TYPE="ICON_DEFAULT"] +{ + height:180px; + width:180px; +} + + +AdaptImage[MSG_TYPE="ICON_WARNING"] +{ + background: transparent; image:url(../../resource/zh/public/dark/icon/Warning.png); +} + + +AdaptImage[MSG_TYPE="ICON_ERROR"] +{ + background: transparent; image:url(../../resource/zh/public/dark/icon/Error.png); +} + + +AdaptImage[MSG_TYPE="ICON_INFORMATION"] +{ + background: transparent; image:url(../../resource/zh/public/dark/icon/Information.png); +} + + +AdaptImage[MSG_TYPE="ICON_QUESTION"] +{ + background: transparent; image:url(../../resource/zh/public/dark/icon/Question.png); +} + +AlertMessageBox +{ + min-height:160px; + min-width:300px; + background:#6088ba; +} + +AlertMessageBox QLabel +{ + color: #fdfdfd; + font-weight: bold; +} \ No newline at end of file diff --git a/resource/fr/style/dark/relaySetting.qss b/resource/fr/style/dark/relaySetting.qss new file mode 100644 index 00000000..407e5ae2 --- /dev/null +++ b/resource/fr/style/dark/relaySetting.qss @@ -0,0 +1,24 @@ +QWidget,QFrame#frame,QFrame#frame_2{ + color:#01a6ec; + background-color: #0b2a51; +} + +QDialog#CLoginDlg{ + background:#022644; + color:#01a6ec; +} + +QTableWidget{ + background-color:#072d48; + alternate-background-color:red; + selection-color:#00e7fc; + selection-background-color:#134a72; + gridline-color:#09304c; + color:#027bb3; + border:1px solid #0a5b93; + outline:none; +} + +QTableWidget QTableCornerButton::section{ + background-color:rgb(13, 55, 86); +} \ No newline at end of file diff --git a/resource/fr/style/dark/robot.qss b/resource/fr/style/dark/robot.qss new file mode 100644 index 00000000..7323a557 --- /dev/null +++ b/resource/fr/style/dark/robot.qss @@ -0,0 +1,83 @@ +QPushButton#exetask{ + + height:26px; +} +QPushButton#searchButton,QPushButton#play,QPushButton#pause, +QToolButton#m_cap,QPushButton#m_voiceOpen,QPushButton#m_voiceClose{ + border:0px; +} + +QPushButton#searchButton{ +background:#0d3756; +image:url(../../resource/zh/gui/icon/robot/search.png); +} + +QPushButton#play{ + image:url(../../resource/zh/gui/icon/robot/play.png); +} + +QPushButton#pause{ + image:url(../../resource/zh/gui/icon/robot/pause.png); +} + +QToolButton#m_cap{ + image:url(../../resource/zh/gui/icon/robot/cut.png); +} + +QPushButton#m_voiceOpen{ + image:url(../../resource/zh/gui/icon/robot/voiceOpen.png); +} +QPushButton#m_voiceClose{ + image:url(../../resource/zh/gui/icon/robot/voiceClose.png); +} + +QWidget#ccdVideoWidget,QWidget#ctrlWidget{ + border:1px solid #0669af; +} +QWidget#widget_12{ + background-color:#041c3a; +} +QFrame#frame_free{ + border-image: url(../../resource/zh/gui/icon/robot/robotbottom.png); +} +QFrame#frame_overlook{ + border-image: url(../../resource/zh/gui/icon/robot/robotbottom.png); +} +QFrame#frame_charge{ + border-image: url(../../resource/zh/gui/icon/robot/robotbottom.png); +} +QFrame#frame_overhaul{ + border-image: url(../../resource/zh/gui/icon/robot/robotbottom.png); +} +QWidget#widget_12{ + border:1px solid #0669af; +} +QTableView#ccdVideoView{ + border-top: 0px; + border:1px solid #0669af; +} + +QLabel#label_head +{ + font: 18pt "宋体"; +} +QLabel#label_free_font +{ + font: 20pt "宋体"; + color: rgb(0, 170, 255); +} +QLabel#label_overlook_font +{ + font: 20pt "宋体"; + color: rgb(255, 255, 0); +} +QLabel#label_charge_font +{ + font: 20pt "宋体"; + color: rgb(85, 255, 127); +} +QLabel#label_overhaul_font +{ + font: 20pt "宋体"; + color: rgb(255, 127, 0); +} \ No newline at end of file diff --git a/resource/fr/style/dark/secondNavigation.qss b/resource/fr/style/dark/secondNavigation.qss new file mode 100644 index 00000000..6cbf97f5 --- /dev/null +++ b/resource/fr/style/dark/secondNavigation.qss @@ -0,0 +1,15 @@ +CSecondNavigationWidget { + border: none; + background:rgba(66,91,128,0.4); + font-size: 16px; + font-family: "Microsoft YaHei"; + +} + +QTreeWidget::item { + color: #B9B9B9; +} + + + + diff --git a/resource/fr/style/dark/sequence.qss b/resource/fr/style/dark/sequence.qss new file mode 100644 index 00000000..2d729471 --- /dev/null +++ b/resource/fr/style/dark/sequence.qss @@ -0,0 +1,71 @@ +QFrame#mainFrame{ + background-color: #022644; + border:1px solid #0669af; +} +QFrame#frame_2,QFrame#frame_3,QFrame#frame,QFrame#frame_4,QFrame#frame_5,QFrame#sequenceTitle,QFrame#m_optFrame,QFrame#m_guardFrame{ + border:1px solid #0669af; +} + +QListWidget#listWidget,QListWidget#resultListWidget, +QListWidget#locationListWidget,QListWidget#userListWidget, +QListWidget#m_list,QListWidget#listAction,QListWidget#listFunc{ + background-color:#072d48; + border:1px solid #0669af; + color:#0096d7; +} +QListWidget#listWidget::item +{ + color:#0394d5; +} + +QDialog{ +background:#022644; +} +KbdPropertyDlg{ +background:#0c3569; +} + +QDialog#CRunSequenceFilterDialog,QDialog#CHistorySequenceFilterDialog{ + background-color: #022644; +} + +QRadioButton#autoRadio,QRadioButton#singleRadio,QRadioButton#standardSequence,QRadioButton#customSequence{ + color:#01a6ec; + border:0px; +} + +QLineEdit#sequenceName,QLineEdit#leSearchAct,QLineEdit#leSearchFunc,QLineEdit#leSearchOrder,QLineEdit#m_le{ + color:#0096d7; + border:1px solid #024376; + background-color:#0b2a51; +} +QLineEdit#m_optUserAlias,QLineEdit#m_optPassword,QLineEdit#m_guardUserAlias,QLineEdit#m_guardPassword{ + border:1px solid #0669af; + height:26px; + color:#0096d7; + background:#0d3756; +} + +QTabWidget::pane#tab { /* The tab widget frame */ + background-color: #022644; + border:1px solid #0669af; +} +QTabWidget#tab{ + background-color: #0c3569; + border:1px solid #0669af; +} + +QLabel#label_2,QLabel#label,QLabel#excuteLabel,QLabel#label2,QLabel#label1, +QLabel#toolTipsLabel,QLabel#station_label,QLabel#m_labelSelect{ + color:#0394d5; +} +QLabel#labelFuncName,QLabel#labelFuncDesc{ + color:#0394d5; + border:1px solid #0669af; +} +QTreeView QAbstractSpinBox::up-button { + height:3px; +} +QTreeView QAbstractSpinBox::down-button { + height:3px; +} \ No newline at end of file diff --git a/resource/fr/style/dark/shift.qss b/resource/fr/style/dark/shift.qss new file mode 100644 index 00000000..d1cfbc54 --- /dev/null +++ b/resource/fr/style/dark/shift.qss @@ -0,0 +1,34 @@ +QFrame#MainFrame{ + border:none; + background-color: #031624; +} +HandoverWidget QFrame#MainFrame{ + background-color: #0d3756; +} + +QFrame#Frame{ + border:none; + background-color: transparent; +} + +QFrame#frame_2{ + border:none; + background-color: transparent; +} +QPushButton#iconButton{ +background:#001529; +image:url(../../resource/zh/public/dark/icon/calendar.png); +} + +QPushButton#iconButton:hover{ +background:#027bec; +} +QToolButton{ + border: 0px solid #0669af; + border-radius: 0px; + background-color: #0b2a51; + min-height:26px; + width:80px; + color:#01a6ec; +} + diff --git a/resource/fr/style/dark/sys_startup.qss b/resource/fr/style/dark/sys_startup.qss new file mode 100644 index 00000000..3573a9c3 --- /dev/null +++ b/resource/fr/style/dark/sys_startup.qss @@ -0,0 +1,66 @@ +QFrame#startUpFrame,QFrame#frame_page3 +{ + border:1px solid #e8e8e8; +} + +QFrame#frame_page1,QFrame#appFrame +{ + border:0px solid ; +} +QTabWidget#tabWidget +{ + border:0px solid #e8e8e8; +} + + +QWidget#versionWidget +{ + border:1px solid #e8e8e8; + background-color:white; +} +QToolButton +{ + border :none; + background-color: white; +} +QToolButton::hover +{ + background-color:#72B2FF; +} +QTabBar::tab +{ + height:40px; +} +QTabBar::tab:selected, QTabBar::tab:hover { + color:#0394d5; + background-color:white; +} +QTabBar::tab:!selected{ + color:#027bb3; + background-color:#f2f5fa; +} + +QTreeView,QTableWidget{ + border:1px solid #e8e8e8; +} + +QLabel#label +{ + border-top:none; + border-left:none; + border-right:none; + border-bottom:1px solid #e8e8e8; +} +QPushButton#sys_start_btn,QPushButton#sys_start_btn_false +{ + border:none; + background:#00ca21; + color:white; +} +QPushButton#sys_stop_btn,QPushButton#sys_stop_btn_false +{ + border:1px solid #ff6840; + border-radius: 6px; + background:white; + color:#ff6840; +} diff --git a/resource/fr/style/dark/trendCurves.qss b/resource/fr/style/dark/trendCurves.qss new file mode 100644 index 00000000..54be76d2 --- /dev/null +++ b/resource/fr/style/dark/trendCurves.qss @@ -0,0 +1,199 @@ + +QLabel#m_tipLabel{ + font: 20px "Microsoft YaHei"; +} + +QLabel#title { + font: 26px "Microsoft YaHei"; +} +CPlotWidget { + qproperty-plotBackgroundColor: transparent; + qproperty-plotTickColor: #D5DBE4; + qproperty-plotGridColor: #516b8998; + qproperty-plotZeroLineColor: #516B89; + qproperty-plotTickPen: #516B89; +} + +CSWitchButton { + min-width:120px; + max-height:40px; + font-size: 14px; + qproperty-backgroundColor: #5DA5FB; + qproperty-checkedColor: #5DA5FB; + qproperty-handleColor: #0f1e43; + qproperty-textColor: #FFFFFF; + qproperty-radius: 0; + qproperty-borderColor:#5DA5FB; +} + +CPlotWidget QHeaderView +{ + min-height: 60px; + min-width: 200px; +} + +QPushButton +{ + font-size: 14px; +} + +/* +QFrame#adaptFrame, +QFrame#frame_3{ + border:1px solid #0669af; +} +QFrame#titleFrame, +QFrame#pageFrame, +QFrame#toolFrame{ + border:none; +} +QLabel#m_tipLabel{ + background:#0b2a51; +} +QLabel#adaptLlabel { + color:#01a6ec; +} +QLabel#title { + color:#01a6ec; +} +CPlotWidget { + qproperty-plotBackgroundColor: #072d48; + qproperty-plotTickColor: #017fb7; + qproperty-plotGridColor: #1A384C; + qproperty-plotZeroLineColor: #4F6878; + qproperty-plotTickPen: #023F63; +} +CSWitchButton { + min-width:60px; + max-height:27px; + qproperty-backgroundColor: #01a6ec; + qproperty-checkedColor: #01a6ec; + qproperty-handleColor: #12568B; + qproperty-textColor: white; + qproperty-radius: 10; + qproperty-borderColor:#0a5b93; +} +CToolTip{ + background:#0b2a51; + border: 1px solid #0669af; + border-radius: 0px; +} +QSlider{ + background:transparent; + min-width:5px; + max-width:15px; +} +QSlider::handle{ + width:15px; + height:15px; + background: #096ae4; +} +QSlider::groove{ + background:transparent; + border:1px solid #0669af; +} +QSlider::add-page, +QSlider::sub-page{ + background: transparent; +} +QPushButton#realTime, +QPushButton#sec, +QPushButton#day, +QPushButton#week, +QPushButton#month, +QPushButton#quarter, +QPushButton#year, +QPushButton#custom{ + width:60px; +} +QPushButton#collectCurve, +QPushButton#plotPrint, +QPushButton#plotExport { + width: 48px; + height:30px; +} +QPushButton#searchButton { + color: #01a6ec; + border: 1px solid #0669af; + border-radius: 0px; + width:20; + height:20; + image: url(../../resource/zh/public/dark/icon/search.png); + background-color: #0b2a51; +} +QPushButton#searchButton:hover { + background-color: #134a72; +} +QPushButton#searchButton:pressed { + background-color: #134a72; + padding: 2px -1px -2px 1px; +} +QTabWidget::pane { + border: 0px; + padding: 0px; +} +QTabBar:tab { + width : 72px; + height: 28px; + color: #01a6ec; + background:#0b2a51; + border-bottom: 1px solid #0669af; +} +QTabBar:tab:selected { + color: #02efef; + background-color: #134a72; + border-bottom-color: #0669af; +} +QTabBar:tab:hover { + color: #02efef; +} +CTrendEditDialog{ + background-color: #0b2a51; +} +CRetriever QLabel{ + color: #01a6ed; +} +CRetriever QWidget{ + background:#0b2a51; + color:#01a6ec; +} +CRetriever QRadioButton{ + color: #01a6ec; +} +CRetriever QFrame#frame_2, +CRetriever QFrame#frame_4, +CRetriever QFrame#frame_5, +CRetriever QFrame#frame_6, +CRetriever QFrame#frame_7, +CRetriever QFrame#frame_8, +CRetriever QFrame#frame_9, +CRetriever QFrame#frame_10, +CRetriever QFrame#frame_11, +CRetriever QFrame#frame_12 +{ + border: 1px solid #0669af; +} +CRetriever QLineEdit{ + color: #0378ae; + border: 1px solid #075d99; +} +CRetriever QPushButton{ + image: url(../../resource/zh/public/dark/icon/search.png); +} +QComboBox#interval{ + min-width:60; +} +QComboBox QLineEdit{ + border:none; +} +QTableView::item#trendView{ + border:1px solid #072d48; + border-top-color:transparent; +} +QDateTimeEdit:drop-down{ + image: url(../../resource/zh/public/dark/icon/arrowBottom.png); + padding-right: 4px; + padding-top: 10px; +} + +*/ \ No newline at end of file diff --git a/resource/fr/style/dark/usermng.qss b/resource/fr/style/dark/usermng.qss new file mode 100644 index 00000000..68a953bc --- /dev/null +++ b/resource/fr/style/dark/usermng.qss @@ -0,0 +1,146 @@ +QFrame#mainFrame{ + background-color: transparent; + border:0px; +} + +QWidget#UserListFrame +{ + min-width: 180px; +} + +/* KbdPropertyDlg{ +background:#0b2a51; +} */ + +/* QTableView QTableCornerButton::section { + background-color:red; +} */ + +QTreeView:!enabled{ + color:#acb3bf; +} + +QToolBar{ + border: 0px solid #6088BA; +} + +QToolButton QMenu +{ + border: 0px solid #6088BA; +} + +QToolButton QMenu::item +{ + border: 0px solid transparent; +} +/* +QAbstractSpinBox::up-button { + height:3px; +} +QAbstractSpinBox::down-button { + height:3px; +} + +*/ +/* +QLabel#SignatureLable{ + background: #032448; + border:1px; + max-width:490px; + min-height:300px; + font-size:36px; + font-style:italic; + font-weight:Bold; +} +*/ +/* +QToolBar QToolButton +{ + border: 1px solid #0070a2; + border-radius: 2px; + /*background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #072d48, stop: 0.05 #0d3756,stop: 0.5 #0d3756, + stop: 0.9 #072d48, stop: 1 #072d48);*/ + /* + radius:4px; + width: 80px; + height: 28px; +} + +/*设置样式风格和人机界面风格一致*/ +/*QTreePropertyBrowser设置选中颜色*/ +/* +QTreeWidget ,QTreeView +{ + selection-background-color:#06153E; + selection-color:#00f0ff; +} + +QToolBar QToolButton +{ + border: 1px solid #0070a2; + border-radius: 2px; + /*background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #072d48, stop: 0.05 #0d3756,stop: 0.5 #0d3756, + stop: 0.9 #072d48, stop: 1 #072d48);*/ + /* + radius:4px; + width: 80px; + height: 28px; +} + +/*QTabBar不可编辑选项卡隐藏*/ +/* +QTabBar::tab:disabled +{ + width:0; + color:transparent; +} + +/*放大spinBox按钮*/ +/*SpinBox向上按钮样式*/ +/* +QAbstractSpinBox::up-button { +margin:10px 10px 10px 10px; + height:10px; + width:20px; + image:url(../../resource/zh/public/dark/icon/box-up-normal.png); + } + +QAbstractSpinBox::up-button:hover { + image:url(../../resource/zh/public/dark/icon/box-up-select.png); + + } + +QAbstractSpinBox::up-button:pressed { + image:url(../../resource/zh/public/dark/icon/box-up-select.png); + + } + +QAbstractSpinBox::up-button:disabled{ + image:url(../../resource/zh/public/dark/icon/box-up-normal.png); + + } +*/ +/*SpinBox向下按钮样式*/ +/* +QAbstractSpinBox::down-button { +margin: 10px 10px 10px 10px; + height:10px; + width:20px; + image:url(../../resource/zh/public/dark/icon/box-down-normal.png); + } + +QAbstractSpinBox::down-button:hover{ + image:url(../../resource/zh/public/dark/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:pressed{ + image:url(../../resource/zh/public/dark/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:disabled{ + image:url(../../resource/zh/public/dark/icon/box-down-normal.png); + +} +*/ diff --git a/resource/fr/style/dark/workBench.qss b/resource/fr/style/dark/workBench.qss new file mode 100644 index 00000000..6d40f387 --- /dev/null +++ b/resource/fr/style/dark/workBench.qss @@ -0,0 +1,489 @@ +/*界面背景设置*/ +QWidget#localstate +{ + border-image: url(../../resource/zh/workBench/LocalState_background.png); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + background-attachment: fixed; + +} + +/*本机状态界面样式设置*/ +#state_widget QToolButton +{ + border: none; + height: 40px; + min-width: 70px; + padding-top: 45px; + + font-family: "Microsoft YaHei", sans-serif; + font-weight: 400; + font-size: 12px; + color: #038300; + line-height: 14px; + text-align: left; + font-style: normal; + text-transform: none; + + background-color: transparent; + background-repeat: no-repeat; + background-position: center; + background-size: contain; +} + +#state_widget QToolButton:hover +{ + background-color:#C1DDFE; +} + +/*基础服务按钮*/ +#state_widget QToolButton[appId = "1"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/basicApp_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "1"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/basicApp_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "1"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/basicApp_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "1"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/basicApp_unknow.png); + color: #8D8D8D; +} + +/*公共部分*/ +#state_widget QToolButton[appId = "2"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/publicApp_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "2"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/publicApp_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "2"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/publicApp_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "2"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/publicApp_unknow.png); + color: #8D8D8D; +} + +/*通用部分*/ +#state_widget QToolButton[appId = "3"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/generalApp_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "3"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/generalApp_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "3"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/generalApp_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "3"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/generalApp_unknow.png); + color: #8D8D8D; +} + +/*能源管理1*/ +#state_widget QToolButton[appId = "4"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "4"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "4"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "4"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_unknow.png); + color: #8D8D8D; +} + +/*2*/ +#state_widget QToolButton[appId = "5"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "5"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "5"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "5"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_unknow.png); + color: #8D8D8D; +} + +/*3*/ +#state_widget QToolButton[appId = "6"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "6"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "6"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "6"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_unknow.png); + color: #8D8D8D; +} + +/*4*/ +#state_widget QToolButton[appId = "7"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "7"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "7"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "7"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_unknow.png); + color: #8D8D8D; +} + +/*5*/ +#state_widget QToolButton[appId = "8"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "8"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "8"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "8"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_unknow.png); + color: #8D8D8D; +} + +/*6*/ +#state_widget QToolButton[appId = "9"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "9"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "9"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "9"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_unknow.png); + color: #8D8D8D; +} + +/*7*/ +#state_widget QToolButton[appId = "10"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "10"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "10"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "10"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_unknow.png); + color: #8D8D8D; +} + +#customWidget QToolButton ,#boxWidget QToolButton +{ + border :none; + background-color: #F2F8FF; + + font-family:"Microsoft YaHei", sans-serif; + font-weight: 400; + font-size: 12px; + color: #004882; + line-height: 14px; + text-align: center; + font-style: normal; + text-transform: none; +} +#customWidget QToolButton:hover ,#boxWidget QToolButton:hover +{ + background-color: #C1DCFE; +} + +#StartUpForm QPushButton +{ + border: none; + border-radius: 0px 0px 0px 0px; + + background-repeat: no-repeat; + background-position: center; + background-size: cover; + background-attachment: fixed; +} + +QPushButton#btn_start +{ + background-image: url(../../resource/zh/workBench/stop_state.png); +} +QPushButton#btn_start:hover , QPushButton#btn_start:pressed +{ + background-image: url(../../resource/zh/workBench/stop_state_hover.png); +} + +QPushButton#btn_stop +{ + background-image: url(../../resource/zh/workBench/run_state.png); +} +QPushButton#btn_stop:hover , QPushButton#btn_stop:pressed +{ + background-image: url(../../resource/zh/workBench/run_state_hover.png); +} + +QPushButton#btn_sysState +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_state.png); +} +QPushButton#btn_sysManage +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_mng.png); +} +QPushButton#btn_sysProcess +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_process.png); +} +QPushButton#btn_sysSetting +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_setting.png); +} +QPushButton#btn_sysTool +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_tools.png); +} + +/*菜单按钮按下后样式*/ +QPushButton#btn_sysState:pressed,QPushButton#btn_sysState:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_state_pressed.png); +} + +QPushButton#btn_sysManage:pressed,QPushButton#btn_sysManage:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_mng_pressed.png); +} + +QPushButton#btn_sysProcess:pressed,QPushButton#btn_sysProcess:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_process_pressed.png); +} + +QPushButton#btn_sysSetting:pressed,QPushButton#btn_sysSetting:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_set_pressed.png); +} +QPushButton#btn_sysTool:pressed,QPushButton#btn_sysTool:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_tool_pressed.png); +} + +#StatusForm QLabel +{ + font-family:"Microsoft YaHei", sans-serif; + font-weight: 400; + font-size: 14px; + color: #131313; + line-height: 16px; + text-align: center; + font-style: normal; + text-transform: none; +} + +#StatusForm QLabel[state = "1" ] +{ + color: #038300; + font-weight: bold; +} + +#StatusForm QLabel[state = "2" ] +{ + color: #FF0000; + font-weight: bold; +} + +/*滚动条样式设计*/ +QScrollArea +{ + min-height: 100px; + border: none; + background: transparent; +} + +QScrollArea QWidget +{ + border: none; + background-color: transparent; +} + +QLabel#titleLabel +{ + min-height: 22px; + font-family:"Microsoft YaHei", sans-serif; + font-weight: bold; + font-size: 14px; + color: #004882; + line-height: 16px; + text-align: left; + font-style: normal; + text-transform: none; +} + +.ButtonForm QLabel +{ + border: none; + font-family: "Microsoft YaHei", sans-serif; + font-weight: bold; + font-size: 14px; + color: #0B92FF; + line-height: 16px; + text-align: center; + font-style: normal; + text-transform: none; +} + +/*系统设置样式设计*/ +QLabel[type = 'titleComm'] +{ + font-family: "Microsoft YaHei", sans-serif; + font-weight: bold; + font-size: 14px; + color: #0B92FF; + line-height: 16px; + text-align: left; + font-style: normal; + text-transform: none; +} + +QLabel#baseinfo_lbl +{ + color: #004882; + font-size: 14px; + line-height: 16px; +} + +#SystemSetForm QToolButton +{ + background: #0B92FF; + border-radius: 0px 0px 0px 0px; + + font-family: "Microsoft YaHei", sans-serif; + font-weight: bold; + font-size: 12px; + color: #FFFFFF; + line-height: 14px; + text-align: center; + font-style: normal; + text-transform: none; +} + +#SystemSetForm QToolButton:hover , #SystemSetForm QToolButton:pressed +{ + background-color: #53b1fc; +} +QToolButton#btn_Save +{ + height: 40px; + min-width: 70px; + padding-top: 37px; + + background-color: transparent; + image: url(../../resource/zh/workBench/rightShift.png); + padding: 3px; +} + +QToolButton#btn_Delete +{ + height: 40px; + min-width: 70px; + padding-top: 37px; + + background-color: transparent; + image: url(../../resource/zh/workBench/leftShift.png); + padding: 3px; +} + +CheckBoxDialog,InputDialog +{ + min-width: 330px; + min-height: 190px; +} + +QTabBar::tab +{ + min-width: 150px; +} + diff --git a/resource/fr/style/dark/workTicket.qss b/resource/fr/style/dark/workTicket.qss new file mode 100644 index 00000000..da7e5e88 --- /dev/null +++ b/resource/fr/style/dark/workTicket.qss @@ -0,0 +1,22 @@ +QPushButton#m_ticket, +QPushButton#m_delete, +QPushButton#m_reTicket{ + width:80px; + height:30px; +} +QTabWidget::pane{ + background-color: transparent; + border:1px solid #0a5990; +} + +QTableView{ + border: 1px solid #0a5b93; + color: #027bb3; + gridline-color: #024376; + alternate-background-color: transparent; + background:#022644; +} +QTableView::item:selected{ + background-color: #134a72; + color: #02efef; +} \ No newline at end of file diff --git a/resource/fr/style/light/AlarmStatisWidget.qss b/resource/fr/style/light/AlarmStatisWidget.qss new file mode 100644 index 00000000..1e30787a --- /dev/null +++ b/resource/fr/style/light/AlarmStatisWidget.qss @@ -0,0 +1,289 @@ +QWidget +QDialog{ + background:#e6ecf2; + color:#333333; + font-family:Microsoft YaHei; + font-size:14px; +} +QLabel{ + font-family:Microsoft YaHei; + font-size:14px; +} +QFrame#frame{ + border:0px solid #cccfd9; +} +QPushButton{ + border: 1px solid #cccfd9; + border-radius: 5px; + background-color: white; + height:30px; + color:#333333; + width:60px; +} +QPushButton:hover{ + border-color:#cccfd9; + background-color: #f4f8fb; +} +QPushButton:pressed{ + border:2px solid #4B027bec; + background-color: #f4f8fb; +} +QPushButton:disabled{ + color: #999999; + border: 1px solid #999999; + background-color: #f4f8fb; +} +QPushButton:checked{ + color:white; + background-color: #096ae4; +} +QComboBox{ + background:white; + border: 1px solid #cccfd9; + color: #333333; + font-size:14px; + height:30px; +} +QComboBox:drop-down{ + border:none; + padding-right:8px; + background:white; +} +QComboBox:down-arrow{ + border-image:url(../../resource/zh/public/light/icon/arrowBottom.png); + height:8px; + width:10px; +} +QComboBox QAbstractItemView{ + border:1px solid #cccfd9; + outLine: 0px; + selection-color:#096ae4; + background-color:white; + selection-background-color:rgba(9,106,228,38); +} +QComboBox#m_contrasComb{ + min-width:60px; +} +QCheckBox{ + color:#333333; + background:transparent; +} +QCheckBox:disabled{ + color:#999999; +} +QCheckBox::hover { + color:#096ae4; +} +QCheckBox::indicator{ + width: 14px; + height: 14px; +} +QCheckBox::indicator:unchecked { + image:url(../../resource/zh/public/light/icon/unchecked.png); +} +QCheckBox::indicator:checked{ + image:url(../../resource/zh/public/light/icon/checked.png); +} +QDateEdit{ + height:30px; + background:white; + color:#333333; + border:1px solid #cccfd9; +} +QDateEdit:drop-down{ + border:none; + padding-right:8px; + background:white; +} +QDateEdit:down-arrow{ + border-image:url(../../resource/zh/public/light/icon/arrowBottom.png); + height:8px; + width:10px; +} +QDateEdit#m_contrastTime{ + min-width:100px; +} +QHeaderView::section { + height: 28px; + font-size:14px; + color: #333333; + background-color: #f4f8fb; + border:1px solid #cccfd9; + border-top-color:white; + border-right-color:white; +} +QTableView { + color:#666666; + outline:0px; + border: 1px solid #cccfd9; + alternate-background-color: #f4f8fb; + background-color:white; + font-family:Microsoft YaHei; + font-size:14px; +} +QTableView::item { + outline:0px; + height:30px; +} +QTableView::item:selected{ + background-color: rgba(9,106,228,38); + color:#096ae4; +} +QTableView QTableCornerButton::section { + background-color:white; +} +QListView, +QTreeWidget{ + background:white; + color: #666666; + outLine:0px; + border:1px solid #cccfd9; + font-family:Microsoft YaHei; + font-size:14px; +} +QListView::item, +QTreeWidget::item{ + height:30px; +} +QListView::item:hover, +QListView::item:selected, +QTreeWidget::item:hover, +QTreeWidget::item:selected{ + background-color: rgba(9,106,228,38); + color:#096ae4; +} +QScrollBar:vertical { + background:#cecece; + width: 10px; + margin: 0px; +} +QScrollBar:horizontal { + height: 10px; + background:#cecece; +} +QScrollBar::handle:vertical, +QScrollBar::handle:horizontal { + background:#999999; +} +QScrollBar::sub-line:vertical, QScrollBar::add-line:vertical, +QScrollBar::sub-line:horizontal, QScrollBar::add-line:horizontal { + width: 0; + height: 0; +} +QScrollBar::sub-page:vertical, +QScrollBar::add-page:vertical, +QScrollBar::sub-page:horizontal, +QScrollBar::add-page:horizontal{ + background-color:#cecece; +} +QCalendarWidget QWidget{ + border: none; + background-color: white; + color:#333333; +} +QCalendarWidget QWidget#qt_calendar_calendarview{ + border-left: 1px solid #cccfd9; + border-right: 1px solid #cccfd9; + border-bottom: 1px solid #cccfd9; + background-color: white; +} +QCalendarWidget QWidget#qt_calendar_navigationbar { + background-color: white; + border: 1px solid #cccfd9; +} +QCalendarWidget QMenu{ + width: 80px; + background-color: white; + border: 1px solid #cccfd9; + color:#333333; +} +QCalendarWidget QMenu::item{ + background:white; + color:#333333; +} +QCalendarWidget QMenu::item:selected{ + background-color: rgba(9,106,228,38); + color:#096ae4; +} +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: white; +} +QCalendarWidget QSpinBox{ + background-color: white; +} +QCalendarWidget QSpinBox::up-button{ + padding-left: 1px; + image: url(../../resource/zh/public/light/icon/arrowTop.png); +} +QCalendarWidget QSpinBox::down-button{ + padding-left: 1px; + padding-bottom: 1px; + image: url(../../resource/zh/public/light/icon/arrowBottom.png); +} +QCalendarWidget QSpinBox::up-button:pressed{ + padding-top: 1px; +} +QCalendarWidget QToolButton#qt_calendar_prevmonth{ + width: 40px; + qproperty-icon: url(../../resource/zh/public/light/icon/arrowLeft.png); + background-color: transparent; +} +QCalendarWidget QToolButton#qt_calendar_prevmonth:pressed { + padding-right: 3px; +} +QCalendarWidget QToolButton#qt_calendar_nextmonth { + width: 40px; + qproperty-icon: url(../../resource/zh/public/light/icon/arrowRight.png); + background-color: transparent; +} +QCalendarWidget QToolButton#qt_calendar_nextmonth:pressed { + padding-left: 3px; +} +QCalendarWidget QToolButton#qt_calendar_monthbutton { + padding-right: 10px; + background-color: transparent; +} + +QTabWidget QWidget{ + background:white; +} +QTabWidget::pane { + border: 1px solid #cccfd9; + padding: 0px; +} +QTabBar:tab { + width : 113px; + height: 35px; + color: #8f96a9; + background:#e6ecf2; + font-size:16px; + font-weight:Bold; + border:none; +} +QTabBar:tab:selected { + color: #096ae4; + background-color: white; + border-bottom:none; +} +CToolTip{ + background:#303956; +} +QLabel#tipLabel{ + background:#303956; + color:#eaeaea; + padding:6px; +} +ContrastWidget, +CDrillDownChart{ + qproperty-labelColor: #333333; + qproperty-gridLineColor: #cccfd9; + qproperty-labelsColor: #666666; + qproperty-titleColor: #333333; + qproperty-legendColor: #333333; +} +CCurveChartView{ + qproperty-plotTickColor: #666666; + qproperty-plotLinePen: #cccfd9; + qproperty-plotGridColor: #cccfd9; + qproperty-plotLegendColor: #333333; +} diff --git a/resource/fr/style/light/BriefReport.qss b/resource/fr/style/light/BriefReport.qss new file mode 100644 index 00000000..01dcda6e --- /dev/null +++ b/resource/fr/style/light/BriefReport.qss @@ -0,0 +1,41 @@ +QFrame{ + border:none; + background-color: white; +} +QFrame#frame_event{ + border:1px solid #cccfd9; +} + +QFrame#Frame{ + background:white; +} +QComboBox QLineEdit{ + background:white; + border:none; +} + +QComboBox#interval{ + margin-top:6px; + min-width:80px; +} + +QPushButton#ok{ + width:80px; + height:30px; +} +QPushButton#iconButton{ + background:transparent; + border:none; + image:url(../../resource/zh/public/light/icon/calendar.png); +} +QPushButton#DayButton, +QPushButton#WeekButton, +QPushButton#MonthButton, +QPushButton#QuarterButton, +QPushButton#YearButton{ + width:40px; +} +QPushButton#PushButton1, +QPushButton#PushButton2{ + height:70px; +} \ No newline at end of file diff --git a/resource/fr/style/light/WebBrowserWidget.qss b/resource/fr/style/light/WebBrowserWidget.qss new file mode 100644 index 00000000..4795d269 --- /dev/null +++ b/resource/fr/style/light/WebBrowserWidget.qss @@ -0,0 +1,4 @@ +QTabWidget::pane{ + padding:0px; + border:0px; +} \ No newline at end of file diff --git a/resource/fr/style/light/alarm.qss b/resource/fr/style/light/alarm.qss new file mode 100644 index 00000000..12ed34e3 --- /dev/null +++ b/resource/fr/style/light/alarm.qss @@ -0,0 +1,58 @@ +QLineEdit#searchTextEdit +{ + background: #FDFDFD;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color: #096ae4; + selection-color:#FDFDFD; + border: 1px solid #B2B9C3; + border-radius: 0px; + padding: 1 1 1 1px; + height:22px; + +} +QPushButton#ok{ +height:26px; +width:100px; +} + + +QPushButton#searchButton:hover { + background-color: #d1e3f8; +} +QPushButton#searchButton:pressed { + background-color: #d1e3f8; + padding: 2px -1px -2px 1px; +} +QPushButton#searchButton{ +border:0px; +background:white; +image:url(../../resource/zh/public/light/icon/search.png); +} +QPushButton#iconButton{ + border-radius:0px; + border:none; + image:url(../../resource/zh/public/light/icon/calendar.png); +} +CAlarmInhibitDialog QPushButton{ + width:80px; + height:30px; +} +CMyCalendar QLineEdit{ + height:26px; +} +CMyCalendar QPushButton{ + height:26px; + border-radius:0px; +} + +QTreeWidget#area::item { + height:23px; +} +/* +QTableView { + color:#333333; + outline:0px; + border: 1px solid #cccfd9; + alternate-background-color: #f4f8fb; + background-color:white; + qproperty-showGrid:false; +}*/ \ No newline at end of file diff --git a/resource/fr/style/light/alarmShield.qss b/resource/fr/style/light/alarmShield.qss new file mode 100644 index 00000000..245b48d3 --- /dev/null +++ b/resource/fr/style/light/alarmShield.qss @@ -0,0 +1,18 @@ + +QLabel#label_2{ + padding-top:6px; + margin-bottom:6px; +} +CHeaderView{ + qproperty-plotIndicatorCheck:"../../resource/zh/public/light/icon/checked.png"; + qproperty-plotIndicatorUnCheck:"../../resource/zh/public/light/icon/unchecked.png"; +} + +CAddShieldDialog QTreeView{ + background:transparent; +} + +CAlarmShield{ + qproperty-buttonBackground:white; + qproperty-buttonColor:#666666; +} \ No newline at end of file diff --git a/resource/fr/style/light/alarm_statistics.qss b/resource/fr/style/light/alarm_statistics.qss new file mode 100644 index 00000000..04410952 --- /dev/null +++ b/resource/fr/style/light/alarm_statistics.qss @@ -0,0 +1,27 @@ +CAlarmStatistics, +CAlarmCompare{ + qproperty-chartBackground: white; + qproperty-chartLabelColor: #666666; + qproperty-chartLineColor: #cccfd9; +} + +QGraphicsView{ + qproperty-backgroundBrush: #FDFDFD; +} + +QLabel#value, +QLabel#value2{ + background:#303956; + color:#eaeaea; + padding:8px; +} + +QFrame#frame_alarm, +QFrame#frame_bar{ + background:white; + border:none; +} +QLabel#label_name{ + background:white; + color:#096ae4; +} diff --git a/resource/fr/style/light/alarmmng.qss b/resource/fr/style/light/alarmmng.qss new file mode 100644 index 00000000..21406350 --- /dev/null +++ b/resource/fr/style/light/alarmmng.qss @@ -0,0 +1,85 @@ +QWidget#widget_4{ + min-height:80px; +} + +QFrame#frame_4{ + border:1px solid #cccfd9; +} + +QFrame#frame_head{ + border-bottom: 1px solid #d8d8d8; +} +QFrame#frame_stackWidget{ + background:white; + border:0px solid #d8d8d8; +} +QStackedWidget#stackedWidget{ + border:1px solid #d8d8d8; + background:white; + border-top:0px solid #d8d8d8; +} + +QLineEdit, +QSpinBox, +QDateTimeEdit, +QDoubleSpinBox{ + color:#333333; + background:white; + border:1px solid #cccfd9; + min-height:28px; +} +QLineEdit::!enabled, +QSpinBox::!enabled, +QDateTimeEdit::!enabled, +QDoubleSpinBox::!enabled{ + color:#999999; + background-color: #f4f8fb; +} +QDateTimeEdit:drop-down, +QSpinBox:drop-down, +QDoubleSpinBox:drop-down{ + border:none; + padding-right:8px; + background:white; +} +QDateTimeEdit:down-arrow, +QSpinBox:down-arrow, +QDoubleSpinBox:down-arrow{ + border-image:url(../../resource/zh/public/light/icon/arrowBottom.png); + height:8px; + width:10px; +} +QDateTimeEdit:up-arrow, +QSpinBox:up-arrow, +QDoubleSpinBox:up-arrow{ + border-image:url(../../resource/zh/public/light/icon/arrowTop.png); + height:8px; + width:10px; +} + +QPushButton#aibt{ + width: 100px; + height: 36px; + background-color:rgb(242,245,250); + color: rgb(2,123,179); + border-radius: 0px; + border:1px solid #d8d8d8; + border-right:0px solid #d8d8d8; +} +QPushButton#dibt{ + width: 100px; + height: 36px; + background-color:rgb(236,239,242); + color: rgb(2,123,179); + border-radius: 0px; + border:1px solid #d8d8d8; +} + +QPushButton#aibt::disabled,QPushButton#dibt::disabled { + background-color:rgb(236,239,242); + border-bottom:1px solid #d8d8d8; +} +QPushButton#aibt::checked,QPushButton#dibt::checked { + background-color:white; + border-bottom:0px solid #d8d8d8; +} \ No newline at end of file diff --git a/resource/fr/style/light/asset.qss b/resource/fr/style/light/asset.qss new file mode 100644 index 00000000..ef534fc2 --- /dev/null +++ b/resource/fr/style/light/asset.qss @@ -0,0 +1,6 @@ +QLabel#title { + color:#333333; + font-size:24px; + margin-bottom:5px; + font-family:Microsoft YaHei; +} \ No newline at end of file diff --git a/resource/fr/style/light/breadcrumbNav.qss b/resource/fr/style/light/breadcrumbNav.qss new file mode 100644 index 00000000..58331054 --- /dev/null +++ b/resource/fr/style/light/breadcrumbNav.qss @@ -0,0 +1,59 @@ +QWidget +{ + font: 10pt "Microsoft YaHei"; + color: #333333; + background:#FDFDFD; + outline:none; +} +QWidget:disabled +{ + color:#666666; + border-color: #cccccc; +} +QToolButton +{ + background:transparent; + border:none; + color:#00B4FF; +} +QToolButton:hover +{ + color:#00f0ff; +} +QToolButton::menu-indicator +{ + background:transparent; + subcontrol-position:right center; +} +QPushButton +{ + image:url(../../resource/zh/public/light/icon/arrowRight.png); + background:transparent; + border:none; + max-width:20px; +} +QMenu +{ + background:#FDFDFD; + border: 1px solid #B2B9C3; +} +QMenu::item{ + height:30px; + color:#333333; + background:#FDFDFD; + border: 1px solid transparent; + padding: 0px 20px 0px 20px; +} +QMenu::item:hover,QMenu::item:selected{ + color:#333333; + background:#d9e8fd; +} +QMenu::item:disabled,QMenu::item:disabled:selected,QMenu::item:disabled:pressed +{ + color: #666666; + background: #FDFDFD; +} +QMenu::item:pressed { + color:#096ae4; + background:#d9e8fd; +} \ No newline at end of file diff --git a/resource/fr/style/light/constCurves.qss b/resource/fr/style/light/constCurves.qss new file mode 100644 index 00000000..31195095 --- /dev/null +++ b/resource/fr/style/light/constCurves.qss @@ -0,0 +1,7 @@ +CCurveChartView{ + qproperty-plotBackgroundColor : white; + + qproperty-plotLinePen: #cccfd9; + qproperty-plotGridColor: #cccfd9; + qproperty-plotLegendColor: #cccfd9; +} \ No newline at end of file diff --git a/resource/fr/style/light/curveColor.cfg b/resource/fr/style/light/curveColor.cfg new file mode 100644 index 00000000..faf1ad28 --- /dev/null +++ b/resource/fr/style/light/curveColor.cfg @@ -0,0 +1,16 @@ +#EF3829 +#EFD752 +#6BA2D6 +#DEAECE +#EF968C +#18A28C +#AF4646 +#63498C +#6B4531 +#D22CEF +#BD6DA5 +#C6D729 +#103852 +#7CB53E +#1355CE +#46C2F7 \ No newline at end of file diff --git a/resource/fr/style/light/debug_tool.qss b/resource/fr/style/light/debug_tool.qss new file mode 100644 index 00000000..f6e53ad1 --- /dev/null +++ b/resource/fr/style/light/debug_tool.qss @@ -0,0 +1,130 @@ +QWidget#CDebugTool,QWidget#tab{ + background:white; +} + + +QTabBar::tab { + border: 1px solid #E8E8E8; + min-width:80px; + height:25px; + background: #F2F5FA; + color:black; + font-family:Microsoft YaHei; + font-size:14px; +} +QTabBar::tab:selected, QTabBar::tab:hover { + background: white; + color:#3482F4; + border-bottom-color: white; +} + +QGroupBox{ + font-size:14px; + + font-family:Microsoft YaHei; +} +QListView::item{ + height:23px; +} + +QComboBox{ + border:1px solid #CACACA; + font-family:Microsoft YaHei; + +} +QComboBox QAbstractItemView::item{ + height: 23px; +} +QComboBox::drop-down { + width: 20px; + border-width: 0px; +} +QComboBox::down-arrow { + background:white; + image: url(../../resource/en/debug_tool/image/down.png); + border:0px solid; + +} +QPushButton#searchButton{ + border:1px solid #CACACA; + background:#F5F5F5; + image:url(../../resource/en/debug_tool/image/search.png); +} + +QPushButton#searchButton:hover{ + border:1px solid #99d1ff; + background:#cde8ff; +} +QPushButton#pushBtn_delPoint{ + width:100px; + height:23px; + border:1px solid rgba(251,80,80,1); + border-radius:4px; + font-family:Microsoft YaHei; + font-size:14px; +} + +QPushButton{ + width:100px; + height:23px; + border:1px solid #3482F4; + border-radius:4px; + font-family:Microsoft YaHei; + font-size:14px; + color:#3482F4; +} +QPushButton:hover{ + border:1px solid #99d1ff; + background:#cde8ff; +} + +QLineEdit#lineEdit,QLineEdit#lineEdit_content{ + font-family:Microsoft YaHei; + border:1px solid #CACACA; +} +QLabel#location,QLabel#sub,QLabel#devGroup,QLabel#device,QLabel#point,QLabel#label,QLabel#label_2,QLabel#label_3, +QLabel#label_4,QLabel#label_5,QLabel#label_6,QLabel#label_7,QLabel#label_8{ + font-family:Microsoft YaHei; + +} +QLabel#label_netStatus,QLabel#netStatus{ + font-family:Microsoft YaHei; + + font-size:14px; +} +QCheckBox#checkBox_all,QCheckBox#checkBox_analog,QCheckBox#checkBox_digital, +QCheckBox#checkBox_accuml,QCheckBox#checkBox_mix,QCheckBox#checkBox_const,QCheckBox#checkBox_allColmn{ + font-family:Microsoft YaHei; + + font-size:14px; +} + +QCheckBox::indicator:checked { + image: url(../../resource/en/debug_tool/image/check.png); +} +QCheckBox::indicator:!checked { + image: url(../../resource/en/debug_tool/image/uncheck.png); +} +QHeaderView::section { + font-family:Microsoft YaHei; + text-align:center; + height:23px; + +} +QSplitter{ + background:white; +} +QRadioButton::indicator::unchecked { + image: url(../../resource/en/debug_tool/image/uncheck1.png); +} +QRadioButton::indicator::checked { + image: url(../../resource/en/debug_tool/image/check1.png); +} + +QSplitter::handle { + background:transparent; +} + +QSplitter::handle:horizontal { + width: 5px; +} \ No newline at end of file diff --git a/resource/fr/style/light/deviceRealData.qss b/resource/fr/style/light/deviceRealData.qss new file mode 100644 index 00000000..cd59ca58 --- /dev/null +++ b/resource/fr/style/light/deviceRealData.qss @@ -0,0 +1,12 @@ +QFrame#frame{ + background-color: #e6ecf2; + border:1px solid #cccfd9; +} +QFrame#frame_3, +QFrame#frame_4, +QFrame#frame_5{ + border:none; +} +QTableView QTableCornerButton::section { + background-color:white; +} diff --git a/resource/fr/style/light/duty_setting.qss b/resource/fr/style/light/duty_setting.qss new file mode 100644 index 00000000..3f21bd38 --- /dev/null +++ b/resource/fr/style/light/duty_setting.qss @@ -0,0 +1,47 @@ +CDragListWidget#userList{ + border:1px solid #cccfd9; + background:white; +} +QLabel{ + padding:5px; + border:1px solid #cccfd9; + background:white; +} +QLabel#label{ + padding:5px; + border:0px solid #cccfd9; + background:white; +} +QLabel#label_0, +QLabel#label_1, +QLabel#label_2, +QLabel#label_3, +QLabel#label_4, +QLabel#label_5, +QLabel#label_6, +QLabel#label_7{ + border:1px solid #cccfd9; + background:white; +} +QLabel#label_0{ + min-width: 80px; +} + +QPushButton#pushButton_del{ + width: 120px; +} + +QListWidget#dropWidget{ + background:white; + color:#333333; + border:1px solid #cccfd9; +} +QListWidget#dropWidget:hover, +QListWidget#dropWidget:focus{ + background-color: rgba(9,106,228,38); +} +QListWidget#dropWidget::item{ + height:30px; + border-bottom:1px solid #cccfd9; + outline:0px; +} \ No newline at end of file diff --git a/resource/fr/style/light/event.qss b/resource/fr/style/light/event.qss new file mode 100644 index 00000000..774ff44e --- /dev/null +++ b/resource/fr/style/light/event.qss @@ -0,0 +1,84 @@ +QFrame#frame{ + border:1px solid #cccfd9; +} +QFrame#eventHeadFrame{ + border-bottom: 1px solid #d8d8d8; +} +QFrame#eventCentralFrame{ + background:white; + border:1px solid #d8d8d8; + border-top:0px solid #d8d8d8; +} + +QCheckBox#checkLevel::hover, +QCheckBox#checkLocation::hover, +QCheckBox#checkType::hover, +QCheckBox#checkRegion::hover{ + background:transparent; +} + +QPushButton#iconButton{ + border:none; + border-radius:0px; + image:url(../../resource/zh/public/light/icon/calendar.png); +} +QPushButton#realEventButton{ + width: 100px; + height: 28px; + background-color:rgb(242,245,250); + color: rgb(2,123,179); + border-radius: 0px; + border:1px solid #d8d8d8; + border-right:0px solid #d8d8d8; +} +QPushButton#hisEventButton{ + width: 100px; + height: 28px; + background-color:rgb(236,239,242); + color: rgb(2,123,179); + border-radius: 0px; + border:1px solid #d8d8d8; +} +QPushButton#hisEventButton::disabled,QPushButton#realEventButton::disabled { + background-color:rgb(236,239,242); + border-bottom:1px solid #d8d8d8; +} +QPushButton#hisEventButton::checked,QPushButton#realEventButton::checked { + background-color:white; + border-bottom:0px solid #d8d8d8; +} +QPushButton#realSearchButton, +QPushButton#hisSearchButton{ + border:0px; + background:white; + image:url(../../resource/zh/public/light/icon/search.png); +} +QPushButton#realSearchButton:hover, +QPushButton#hisSearchButton:hover { + background-color: #d1e3f8; +} +QPushButton#realSearchButton:pressed, +QPushButton#hisSearchButton:pressed { + background-color: #d1e3f8; + padding: 2px -1px -2px 1px; +} + +QTableView { + color:#333333; + outline:0px; + border: 1px solid #cccfd9; + alternate-background-color: #f4f8fb; + background-color:white; + qproperty-showGrid:false; +} +QLineEdit#realSearchEdit, +QLineEdit#hisSearchEdit +{ + background: #FDFDFD;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color: #096ae4; + selection-color:#FDFDFD; + border: 1px solid #B2B9C3; + border-radius: 0px; + padding: 1 1 1 1px; + height:22px; +} \ No newline at end of file diff --git a/resource/fr/style/light/faultRecord.qss b/resource/fr/style/light/faultRecord.qss new file mode 100644 index 00000000..dc426cdb --- /dev/null +++ b/resource/fr/style/light/faultRecord.qss @@ -0,0 +1,6 @@ +QLabel#title { + color:#333333; + font-size:24px; + margin-bottom:5px; + font-family:Microsoft YaHei; +} diff --git a/resource/fr/style/light/fbd_designer.qss b/resource/fr/style/light/fbd_designer.qss new file mode 100644 index 00000000..e224bdb1 --- /dev/null +++ b/resource/fr/style/light/fbd_designer.qss @@ -0,0 +1,67 @@ +/* === QToolBox ========================================================== */ +QToolBox::tab{ + background-color: #D6DCF2; + border-radius: 4px; + color: #000000; +} + +QToolBox::tab:selected,QToolBox::tab:hover{ + background-color: #0078D7; + color: #FFFFFF; +} + +QToolBoxButton{ + min-width: 199px; + min-height: 32px; +} + +QDockWidget::title{ + background-color: #B6C6D6; + padding: 6px; +} + + +/* === QWidget ========================================================== */ +QWidget#scrollAreaWidgetContents{ + background-color: #FFFFFF; +} + +QWidget#widgetTemplateBack{ + border: 1px solid #A4A9AD; +} + +QWidget#widgetTemplate{ + border: 1px solid #A4A9AD; + background-color: #FFFFFF; +} + + +/* === QTabBar ========================================================== */ +QTabBar::tab{ + background-color: #FFFFFF; + padding: 6px 12px 6px 12px; + border-style: solid; + border-width: 0px 1px 1px 1px; + border-color: #A4A9AD; +} + +QTabBar::tab:hover{ +} + +QTabBar::tab:selected{ + background-color: #0078D7; + color: #FFFFFF; +} + +QTabBar::tab#CenterTabWidget{ + border-width: 1px 1px 0px 1px; + background-color: #CED3D9; + color: #000000; +} + +QTabBar::tab#CenterTabWidget:selected{ + background-color: #FFFFFF; + color: #0078D7; +} + + diff --git a/resource/fr/style/light/hmiRoll.qss b/resource/fr/style/light/hmiRoll.qss new file mode 100644 index 00000000..2a06e131 --- /dev/null +++ b/resource/fr/style/light/hmiRoll.qss @@ -0,0 +1,3 @@ +QLabel#autoTime{ + background-color: transparent; +} \ No newline at end of file diff --git a/resource/fr/style/light/ipcPlus.qss b/resource/fr/style/light/ipcPlus.qss new file mode 100644 index 00000000..692d5659 --- /dev/null +++ b/resource/fr/style/light/ipcPlus.qss @@ -0,0 +1,83 @@ +QPushButton#play, +QPushButton#pause, +QPushButton#cap, +QPushButton#voiceOpen, +QPushButton#voiceClose, +QPushButton#up, +QPushButton#right, +QPushButton#down, +QPushButton#left{ + border:none; + background:transparent; +} +QPushButton#play{ + image:url(../../resource/zh/gui/icon/ipc/icon_play.png); +} + +QPushButton#pause{ + image:url(../../resource/zh/gui/icon/ipc/icon_suspend.png); +} + +QPushButton#cap{ + image:url(../../resource/zh/gui/icon/ipc/icon_camer.png); +} + +QPushButton#voiceOpen{ + image:url(../../resource/zh/gui/icon/ipc/icon_voice.png); +} +QPushButton#voiceClose{ + image:url(../../resource/zh/gui/icon/ipc/icon_Silence.png); +} + +QPushButton#left{ + border-image:url(../../resource/zh/gui/icon/ipc/left.png); +} +QPushButton#left:hover{ + border-image:url(../../resource/zh/gui/icon/ipc/left-hovered.png); +} +QPushButton#left:pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/left-clicked.png); +} + +QPushButton#down{ + border-image:url(../../resource/zh/gui/icon/ipc/down.png); +} +QPushButton#down:hover{ + border-image:url(../../resource/zh/gui/icon/ipc/down-hovered.png); +} +QPushButton#down:pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/down-clicked.png); +} + +QPushButton#up{ + border-image:url(../../resource/zh/gui/icon/ipc/up.png); +} +QPushButton#up:hover{ + border-image:url(../../resource/zh/gui/icon/ipc/up-hovered.png); +} +QPushButton#up:pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/up-clicked.png); +} + +QPushButton#right{ + border-image:url(../../resource/zh/gui/icon/ipc/right.png); +} +QPushButton#right:hover{ + border-image:url(../../resource/zh/gui/icon/ipc/right-hovered.png); +} +QPushButton#right:pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/right-clicked.png); +} + +QWidget#widget,QWidget#widget_2,QWidget#widget_3{ + border:1px solid #cccfd9; +} +QWidget#IpcPlusWidget,QWidget#control_1,QWidget#control_2{ + border:1px solid #cccfd9; + color:#333333; + background:white; +} +QWidget#IpcPlusWidget{ +background-color: #e6ecf2; +color:#333333; +} \ No newline at end of file diff --git a/resource/fr/style/light/ipcViewer.qss b/resource/fr/style/light/ipcViewer.qss new file mode 100644 index 00000000..848da641 --- /dev/null +++ b/resource/fr/style/light/ipcViewer.qss @@ -0,0 +1,161 @@ +QFrame#frame, +QFrame#frame_record_search +{ + max-width: 150px; +} + +QFrame#frame2, +QFrame#frame_record_play +{ + min-width: 695px; +} + +QWidget#ptzWidget +{ + border-image:url(../../resource/zh/gui/icon/ipc/icon_key.png); + min-height: 130px; + min-width: 130px; + max-width: 130px; +} +QWidget#IpcViewerWidget, +QWidget#tabWidget, +QWidget#tab, +QWidget#tab_2{ + border: 0px; +} + +QLabel{ + font-weight:Light; + font-size:14px; + font-family:Microsoft YaHei; +} + +QMessageBox > QLabel{ + color:#333333; + background-color:#e6ecf2; +} +QTabWidget#tabWidget{ + background-color:white; +} +QTabWidget#tabWidget::pane { + border: 1px solid #cccfd9; + background-color:white; +} + +QFrame#frame, +QFrame#frame_2, +QFrame#frame_record_play, +QFrame#frame_record_search{ + border: 1px solid #cccfd9; + background-color:#e6ecf2; +} +QFrame#frame_2, +QFrame#frame_record_play{ + background:white; +} +QFrame > QLabel{ + background-color:#e6ecf2; + color:#333333; +} + +QPushButton#btn_zoomin, +QPushButton#btn_far, +QPushButton#btn_small +{ + /* border-image:url(../../resource/zh/gui/icon/ipc/icon+.png); */ + font-size:20px; + +} + +QPushButton#btn_zoomout, +QPushButton#btn_close, +QPushButton#btn_big +{ + /* border-image:url(../../resource/zh/gui/icon/ipc/icon-.png); */ + font-size:20px; + +} + +QPushButton#btn_vol, +QPushButton#btn_cam, +QPushButton#btn_fullScreen, +QPushButton#btn_play, +QPushButton#btn_play_r, +QPushButton#btn_cam_r, +QPushButton#btn_vol_r, +QPushButton#up, +QPushButton#left, +QPushButton#right, +QPushButton#down +{ + border:none; + border-radius:0px; + background:transparent; +} +QPushButton#btn_play, +QPushButton#btn_play_r{ + border-image:url(../../resource/zh/gui/icon/ipc/icon_play.png); +} +QPushButton#btn_play::checked, +QPushButton#btn_play_r::checked{ + border-image:url(../../resource/zh/gui/icon/ipc/icon_suspend.png); +} +QPushButton#btn_cam, +QPushButton#btn_cam_r{ + border-image:url(../../resource/zh/gui/icon/ipc/icon_camer.png); +} + +QPushButton#btn_vol, +QPushButton#btn_vol_r{ + border-image:url(../../resource/zh/gui/icon/ipc/icon_voice.png); +} +QPushButton#btn_vol::checked, +QPushButton#btn_vol_r::checked{ + border-image:url(../../resource/zh/gui/icon/ipc/icon_Silence.png); +} +QPushButton#up{ + border-image:url(../../resource/zh/gui/icon/ipc/up.png); +} +QPushButton#up::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/up-hovered.png); +} +QPushButton#up::pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/up-clicked.png); +} +QPushButton#left{ + border-image:url(../../resource/zh/gui/icon/ipc/left.png); +} +QPushButton#left::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/left-hovered.png); +} +QPushButton#left::pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/left-clicked.png); +} +QPushButton#right{ + border-image:url(../../resource/zh/gui/icon/ipc/right.png); +} +QPushButton#right::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/right-hovered.png); +} +QPushButton#right::pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/right-clicked.png); +} +QPushButton#down{ + border-image:url(../../resource/zh/gui/icon/ipc/down.png); +} +QPushButton#down::hover{ + border-image:url(../../resource/zh/gui/icon/ipc/down-hovered.png); +} +QPushButton#down::pressed{ + border-image:url(../../resource/zh/gui/icon/ipc/down-clicked.png); +} + +QSlider{ + background:transparent; +} +QSlider::handle:horizontal{ + background:#0a5b93; +} +QSlider::handle:!enabled{ + background:gray; +} \ No newline at end of file diff --git a/resource/fr/style/light/linkCtrl.qss b/resource/fr/style/light/linkCtrl.qss new file mode 100644 index 00000000..1d3ff015 --- /dev/null +++ b/resource/fr/style/light/linkCtrl.qss @@ -0,0 +1,25 @@ +QFrame#line, +QFrame#line_2{ + border:solid 1px #cccfd9; +} +QFrame#frame, +QFrame#frame_2, +QFrame#frame_3, +QFrame#frame_4{ + border:1px solid #cccfd9; +} +QFrame#frame_5{ + border:none; +} + +QDialog QPushButton{ + margin-right:6px; +} + +QPushButton#allLinkCtrlButton, +QPushButton#waitForExceLinkCtrlButton{ + border-radius:0px; +} +QPushButton#allLinkCtrlButton{ + margin-left:10px; +} \ No newline at end of file diff --git a/resource/fr/style/light/media.qss b/resource/fr/style/light/media.qss new file mode 100644 index 00000000..9379ae17 --- /dev/null +++ b/resource/fr/style/light/media.qss @@ -0,0 +1,34 @@ +QPushButton{ + height:20px; + width:40px; + color:#027bb3; + border-radius:2px; + border:1px solid #0669af; +} + +QPushButton#play,QPushButton#pause, +QToolButton#m_cap,QPushButton#m_voiceOpen,QPushButton#m_voiceClose{ + border:0px; +} + +QPushButton#play{ + image:url(../../resource/zh/public/light/icon/play.png); +} + +QPushButton#pause{ + image:url(../../resource/zh/public/light/icon/pause.png); +} + +QToolButton#m_cap{ + image:url(../../resource/zh/public/light/icon/cut.png); +} + +QPushButton#m_voiceOpen{ + image:url(../../resource/zh/public/light/icon/voiceOpen.png); +} +QPushButton#m_voiceClose{ + image:url(../../resource/zh/public/light/icon/voiceClose.png); +} + + + diff --git a/resource/fr/style/light/modelStudio.qss b/resource/fr/style/light/modelStudio.qss new file mode 100644 index 00000000..55ee0384 --- /dev/null +++ b/resource/fr/style/light/modelStudio.qss @@ -0,0 +1,312 @@ +QMainWindow{ + background: #E6ECF2; + border-style: outset; + border-radius: 5px; +} + +QToolBar#mainToolBar{ + background: #e9edf1; + spacing: 3px; /* spacing between items in the tool bar */ + } + + QStatusBar { + background: #d7dbdf; + } + + QMenuBar{ + background-color: #FFFFFF; + } + + QMenu { + background-color: white; /* 设置整个菜单区域的背景色*/ + border: 1px solid #E6ECF2;/*整个菜单区域的边框粗细、样式、颜色*/ + } + + QMenu::item { + background-color: transparent; + padding:4px 20px;/*设置菜单项文字上下和左右的内边距,效果就是菜单中的条目左右上下有了间隔*/ + } + + QMenu::item:selected { /* when user selects item using mouse or keyboard */ + background-color: #2dabf9;/*这一句是设置菜单项鼠标经过选中的样式*/ + } + + QSplitterHandle{ + background-color:#E6ECF2; + } + +QTabBar::tab {/*切换按钮设置*/ + background: #E6ECF2; + border: 1px solid #acb1b4; + padding: 4px; +} + +QTabBar::tab:hover { + color:#2080F7;/*选中高亮*/ +} + +QTabBar::tab:selected { + background: white; +} + +QTabWidget{ + background: #eff3f5; +} + +QHeaderView +{ + background:#E6ECF2; +} + +QHeaderView#tableHorizHeader::section +{ + border:0px; + min-height:25px; + border-bottom:1px solid #DCDCDC; + border-right:1px solid #DCDCDC; + background:#B6C6D6; +} + +QHeaderView#tableVertiHeader::section +{ + background:white; + min-width:25px; + border:0px; + border-right:1px solid #DCDCDC; +} + +QTreeView{ + alternate-background-color: #E6ECF2; + selection-background-color: #2dabf9; +} + +QTableView{ + alternate-background-color: #E6ECF2; + selection-background-color: #2dabf9; +} + +QTableView QTableCornerButton::section{ + border:0px; + background:white; + border-right:1px solid #DCDCDC; +} + +QTableView > QHeaderView::section +{ + border:0px; + min-height:25px; + border-bottom:1px solid #DCDCDC; + border-right:1px solid #DCDCDC; + background:#B6C6D6; +} + +QTreeView > QHeaderView::section +{ + background:#B6C6D6; + border:0px; + min-height:25px; +} + +QTreeView > QHeaderView::section:first +{ + background:#B6C6D6; + border:0px; + border-right:1px solid white; + min-height:25px; +} + +QTreeView > QHeaderView::section:middle +{ + background:#B6C6D6; + border:0px; + border-right:1px solid white; + min-height:25px; +} + +QTreeView > QHeaderView::section:last +{ + background:#B6C6D6; + border:0px; + border-left:1px solid white; + min-height:25px; +} + +QDialog{ + background-color:#E6ECF2; +} + +QPushButton{ + border: 1px solid #b1bac7; + border-radius: 4px; + background-color: #f5f8fa; + min-width:50px; + min-height:20px; +} +QPushButton:hover{ + border-color:#2dabf9; + background-color: #e5f2fd; +} +QPushButton:pressed{ + border:2px solid #2dabf9; + background-color: #f4f8fb; +} + +QComboBox{ + border:1px solid #b1bac7; + /*background:white;*/ + min-width:60px; + font-family:Microsoft YaHei; +} + +QComboBox::drop-down { + border-width: 0px; + width:20; +} +QComboBox::down-arrow { + background:white; + image:url(:/icons/icons/down.png); + border:0px solid; +} + +QLineEdit{ + border: 1px solid #b1bac7; + background-color: white; + max-height:25px; +} + +QStatusBar::item{ + border: 0px; + background: none; +} + +/* 垂直滚动条 */ +QScrollBar:vertical { + border: 0px solid; + background: #E6ECF2; + width: 9px; + margin: 9px 0 9px 0; +} +QScrollBar::handle:vertical { + background: #ADBDCD; + min-height: 20px; +} +QScrollBar::handle:vertical:hover +{ + background:#759EC8; /* 鼠标放到滚动条上的时候,颜色变深 */ +} +QScrollBar::add-line:vertical { + border: 0px solid; + background: #E6ECF2; + border-image:url(:/icons/icons/arrowBottom.png); + height: 9px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical { + border: 0px solid; + background: #E6ECF2; + border-image:url(:/icons/icons/arrowTop.png); + height: 9px; + subcontrol-position: top; + subcontrol-origin: margin; +} +QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical { + border: 0px solid grey; + width: 0px; + height: 0px; +} + +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { + background: none; +} +/* 水平滚动条 */ +QScrollBar:horizontal { + border: 0px solid grey; + background: #E6ECF2; + height: 9px; + margin: 0px 9px 0 9px; +} +QScrollBar::handle:horizontal { + background: #ADBDCD; + min-width: 20px; +} +QScrollBar::handle:horizontal:hover +{ + background:#759EC8; /* 鼠标放到滚动条上的时候,颜色变深 */ +} + +QScrollBar::add-line:horizontal { + border: 0px solid; + background: #E6ECF2; + width: 9px; + border-image:url(:/icons/icons/arrowRight.png); + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal { + border: 0px solid; + background: #E6ECF2; + width: 9px; + border-image:url(:/icons/icons/arrowLeft.png); + subcontrol-position: left; + subcontrol-origin: margin; +} +QScrollBar::left-arrow:horizontal, QScrollBar::right-arrow:horizontal { + border: 0px solid; + width: 0px; + height: 0px; +} + +QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { + background: none; +} + +QPushButton#TablePropertyBtnHide{ + border: 0px solid ; + background-color: #ADBDCD; + border-image:url(:/icons/icons/hideRight.png); + min-width:4px; + max-width:6px; + min-height:60px; +} + +QPushButton#TablePropertyBtnHide:checked{ + border: 0px solid ; + background-color: #ADBDCD; + border-image:url(:/icons/icons/hideLeft.png); + min-width:4px; + max-width:6px; + min-height:60px; +} + +QPushButton#TablePropertyBtnHide:hover{ + background-color: #759EC8; +} + +QLineEdit#kbdSearchWidget{ + border: 1px solid #b1bac7; + border-radius: 6px; + background-color: white; + max-height:20px; +} + +QListView::item{ + min-height:23px; +} + +QLabel#SignatureLable{ + background: white; + border:1px; + max-width:490px; + min-height:300px; + font-size:36px; + font-style:italic; + font-weight:Bold; +} + +QSpinBox { + min-height: 25px; +} + diff --git a/resource/fr/style/light/planCurvesConfigure.qss b/resource/fr/style/light/planCurvesConfigure.qss new file mode 100644 index 00000000..34376d1a --- /dev/null +++ b/resource/fr/style/light/planCurvesConfigure.qss @@ -0,0 +1,14 @@ +CurveChartView{ + qproperty-plotBackgroundColor : transparent; + qproperty-plotTickColor : #333333; + qproperty-plotCurveColor : #096ae4; + qproperty-plotLinePen: #cccfd9; + qproperty-plotTickTitleColor: #333333; + qproperty-plotAxisXText: "h"; +} +QPushButton { + width:110px; +} +QDialog QPushButton{ + width:50px; +} \ No newline at end of file diff --git a/resource/fr/style/light/public.qss b/resource/fr/style/light/public.qss new file mode 100644 index 00000000..b3d23fc9 --- /dev/null +++ b/resource/fr/style/light/public.qss @@ -0,0 +1,1681 @@ +/*浅色*/ +QWidget +{ + font: 10pt "Microsoft YaHei"; + color: #333333; + /*background:#FDFDFD;*/ + outline:none; +} + + +QWidget:disabled +{ + color:#666666; + border-color: #cccccc; +} + +QFrame{ + color: #333333; + background-color: #FDFDFD;/*不能设置为transparent*/ + +} + +QMainWindow +{ + background-color: #FFFFFF; + border: 1px solid #ADBDCD; +} + +QMainWindow::separator{ + border: 1px solid #B2B9C3; + border-style: outset; + width: 4px; + height: 4px; +} +QMainWindow::separator:hover{ + background: #d9e8fd; +} +QSplitter::handle{ + border: 0px solid #B2B9C3; + width: 4px; + height: 4px; +} +QSplitter::handle:hover{/*splitter->handle(1)->setAttribute(Qt::WA_Hover, true);才生效*/ + border-color: #096ae4; + background-color: #d9e8fd; +} +QSplitter::handle:pressed{ + border-color: #096ae4; + background-color: #d9e8fd; +} +QSizeGrip{ + background-color: none; +} + +/* =============================================== */ +/* Label */ +/* =============================================== */ +QLabel { + background: transparent; + border: 0px solid transparent; + padding: 1px; +} + + +/* A QLabel is a QFrame ... */ +/* A QToolTip is a QLabel ... */ +QToolTip { + border: 1px solid #B2B9C3; + border-radius: 2px; + opacity:210; +} + + + +/* =============================================== */ +/* QMenu */ +/* =============================================== */ +QMenuBar +{ + background-color: transparent; +} + +QMenu +{ + background:#FDFDFD; + border: 1px solid #B2B9C3; + padding: 10px 0px 10px 0px; +} + +QMenu::item{ + min-width: 80px; + height:30px; + color:#333333; + background:#FDFDFD; + border: 1px solid transparent; + padding: 0px 20px 0px 20px; +} +QMenu::item:hover{ + color:#333333; + background:#d9e8fd; +} + +QMenu::item:disabled,QMenu::item:disabled:selected,QMenu::item:disabled:pressed{ + + color: #666666; + background: #FDFDFD; +} + +QMenu::item#editBatch{ + min-width: 150px; +} + +QMenu::item:selected{ + color:#333333; + background:#d9e8fd; +} + +QMenu::item:pressed { + color:#096ae4; + background:#d9e8fd; +} + +QMenu#contextMenu{ + min-width:240px; +} + + +/* =============================================== */ +/* TextBox */ +/* =============================================== */ +QLineEdit { + background: #FDFDFD;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color: #096ae4; + selection-color:#FDFDFD; + border: 1px solid #B2B9C3; + border-radius: 2px; + padding: 0 5 0 5px; + height:28px; +} + +QLineEdit:hover{ + border-color: #096ae4; +} +QLineEdit:focus{ + border-color: #096ae4; +} +/*QLineEdit[readOnly="true"] { color: gray }*/ +QLineEdit[echoMode="2"]{ + lineedit-password-character: 9679;/*字符的ascii码35 88等 */ +} + +QLineEdit:read-only { + color: #666666; +} + +QLineEdit:disabled{ + color:#666666; +} + +QTextEdit{ + selection-background-color:#096ae4; + selection-color:#FDFDFD; + border: 1px solid #B2B9C3; + +} +QTextEdit:hover{ + border-color: #096ae4; +} +QTextEdit:focus{ + border-color: #096ae4; +} +/* =============================================== */ +/* Button */ +/* =============================================== */ +QPushButton { + border: 1px solid #B2B9C3; + border-radius: 2px; + /*background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #EEEEEF, stop: 0.05 #DADADF,stop: 0.5 #DADADF, + stop: 0.9 #EEEEEF, stop: 1 #EEEEEF);*/ + /*width: 78px;*/ + padding: 5 5 4 5px; +} + +QPushButton:hover{ + background-color: #d9e8fd; + border-color: #096ae4; +} + +QPushButton:pressed, +QPushButton:checked +{ + color:#FDFDFD; + background-color: #096ae4; +} + +QPushButton:focus,QPushButton:default { + + border-color: #096ae4; /* make the default button prominent */ +} + +QToolButton,QToolButton:unchecked { /* ToolBar里的按钮和带下拉菜单的按钮 */ + border-width: 1px; + border-radius: 3px; + background-color: transparent; + /*width: 80px;*/ + height: 28px; +} +QToolButton:checked{ + border-width: 1px; + background-color: #096ae4; + border-color: #B2B9C3; + color:#FDFDFD; +} +QToolButton:hover{ + border-width: 1px; + background-color: #d9e8fd; + border-color: #096ae4; +} + +QToolButton:pressed,QToolButton:checked:hover{ + background-color: #096ae4; + color:#FDFDFD; +} +QToolButton:checked:pressed{ + border-width: 1px; + background-color: #096ae4; + border-color: #B2B9C3; +} + + +/* only for MenuButtonPopup */ +QToolButton[popupMode="1"]{ + padding-left: 1px; + padding-right: 15px; /* make way for the popup button */ + border: 1px solid #B2B9C3; + min-height: 15px; + /*background: qlineargradient(x1:0, y1:0 ,x2:0, y2:1 + stop: 0 #EEEEEF, stop: 0.05 #DADADF, stop: 0.5 #DADADF + stop: 0.95 #EEEEEF stop: 1#EEEEEF)*/ +} +QToolButton[popupMode="1"]:hover{ + border-width: 1px; + background-color: #d9e8fd; + border-color: #096ae4; +} + +QToolButton::menu-button { + border: 1px solid #B2B9C3; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + width: 16px; +} + +QToolButton::menu-button:hover { + border: 1px solid #096ae4; +} + +QToolButton::menu-button:pressed { + border: 1px solid #B2B9C3; +} + +QToolButton QMenu +{ + selection-background-color: #096ae4; + selection-color:#FDFDFD; + background: #FDFDFD; + border: 1px solid #B2B9C3; + padding: 10px 0px 10px 0px; +} + +QToolButton QMenu::item +{ + height:30px; + background: #FDFDFD; + border: 1px solid transparent; + padding: 0px 20px 0px 20px; +} + +/* =============================================== */ +/* QRadioButton */ +/* =============================================== */ +QRadioButton { + height: 28px; +} + +QRadioButton:hover{ + color:#096ae4; +} + + +QRadioButton::indicator{ + width: 14px; + height: 14px; +} + +QRadioButton::indicator::unchecked{ + border-image:url(../../resource/zh/public/light/icon/rkb-normal.png); +} + +QRadioButton::indicator:unchecked:hover { + border-image:url(../../resource/zh/public/light/icon/rkb-hover.png); +} + +QRadioButton::indicator:unchecked:pressed { + border-image:url(../../resource/zh/public/light/icon/rkb-hover.png); +} + +QRadioButton::indicator:unchecked:disabled { + border-image:url(../../resource/zh/public/light/icon/rkb-disable.png); +} + +QRadioButton::indicator::checked{ + border-image:url(../../resource/zh/public/light/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:hover { + border-image:url(../../resource/zh/public/light/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:pressed { + border-image:url(../../resource/zh/public/light/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:disabled { + border-image:url(../../resource/zh/public/light/icon/rkb-select-disable.png); +} + +/* =============================================== */ +/* QCheckBox */ +/* =============================================== */ +QCheckBox{ + color:#333333; +} + +QCheckBox::hover { + color:#096ae4; +} + +QCheckBox::indicator{ + width: 14px; + height: 14px; +} + + +QCheckBox::indicator::unchecked{ + border-image:url(../../resource/zh/public/light/icon/ckb-normal.png); +} + +QCheckBox::indicator:unchecked:hover { + border-image:url(../../resource/zh/public/light/icon/ckb-uncheck-hover.png); +} + +QCheckBox::indicator:unchecked:pressed { + border-image:url(../../resource/zh/public/light/icon/ckb-uncheck-hover.png); +} + +QCheckBox::indicator:unchecked:disabled { + border-image:url(../../resource/zh/public/light/icon/ckb-disable.png); +} + +QCheckBox::indicator::checked{ + border-image:url(../../resource/zh/public/light/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:hover { + border-image:url(../../resource/zh/public/light/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:pressed { + border-image:url(../../resource/zh/public/light/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:disabled { + border-image:url(../../resource/zh/public/light/icon/ckb-select-disable.png); +} + +QCheckBox::indicator:indeterminate { + border-image:url(../../resource/zh/public/light/icon/ckb-ptck.png); +} + +QCheckBox::indicator:indeterminate:hover { + border-image:url(../../resource/zh/public/light/icon/ckb-ptck-hover.png); +} + +QCheckBox::indicator:indeterminate:pressed { + border-image:url(../../resource/zh/public/light/icon/ckb-ptck-hover.png); +} + +QCheckBox::indicator:indeterminate:disabled { + border-image:url(../../resource/zh/public/light/icon/ckb-ptck-disable.png); +} + +/* =============================================== */ +/* Slider ProgressBar */ +/* =============================================== */ +QProgressBar { + border: 1px solid #B2B9C3; + border-radius: 4px; + text-align: center; +} + +QProgressBar::chunk { + background-color: #b3d7f9; + width: 4px; + margin: 1px; +} + +QSlider{ + border: 1px solid transparent; +} + +QSlider::disabled{ + border: 1px solid transparent; +} + +QSlider::groove{ + border: 1px solid #B2B9C3; + background: #FDFDFD; +} +QSlider::handle {/*设置中间的那个滑动的键*/ + border: 1px solid #B2B9C3; + background: #096ae4; +} +QSlider::groove:horizontal { + height: 3px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */ + left:5px; right: 5px; +} +QSlider::groove:vertical{ + width: 3px; + top: 5px; bottom: 5px; +} +QSlider::handle:horizontal{ + width: 6px; + margin: -7px; /* height */ +} +QSlider::handle:vertical{ + height: 6px; + margin: -7px; /* height */ +} +QSlider::add-page{/*还没有滑上去的地方*/ + border: 1px solid #B2B9C3; + background:#eceff2; +} +QSlider::sub-page{/*已经划过的从地方*/ + background: #096ae4; +} + +/* =============================================== */ +/* ScrollBar */ +/* =============================================== */ +QScrollBar{ + background-color: #FDFDFD; + border: 1px solid #DADADF; + border-radius: 0px; + padding: 1px; + margin:0px; + height: 15px; + width: 15px; +} + +QScrollBar::handle{ + border-color:#B2B9C3; + border-radius: 8px; + background: #B2B9C3; + min-width: 10px; + min-height: 10px; +} +QScrollBar::handle:hover { + background: #096ae4; +} +QScrollBar::add-line, QScrollBar::sub-line, +QScrollBar::add-page, QScrollBar::sub-page { + width: 0px; + background: transparent; +} +QScrollArea{ + border: none; +} +/*QScrollArea QAbstractSlider{ + border-radius: 0px; +}*/ + +/* =============================================== */ +/* GroupBox */ +/* =============================================== */ +QGroupBox { + background-color: #FDFDFD; + border: 1px solid #B2B9C3; + padding:6px; + margin: 12px 0px 0px 0px; +} +QGroupBox::title { + left: 6px; + top:-10px; + background-color: #FDFDFD; +} +QGroupBox::indicator::unchecked{ + border-image:url(../../resource/zh/public/light/icon/ckb-normal.png); +} +QGroupBox::indicator::checked{ + border-image:url(../../resource/zh/public/light/icon/ckb-select-hover.png); +} +QGroupBox::indicator:indeterminate { + border-image:url(../../resource/zh/public/light/icon/ckb-ptck.png); +} +/* =============================================== */ +/* ToolBox */ +/* =============================================== */ +QToolBox{ + border: 1px solid #B2B9C3; +} +QToolBox::tab { + background: #eceff2; + border: 1px solid #B2B9C3; +} +QToolBox::tab:hover { + background-color: #d9e8fd; + border-color: #096ae4; +} +QToolBox::tab:pressed { + background-color: #096ae4; + color:#FDFDFD; + border-color: transparent; +} +QToolBox::tab:selected { + font-weight: bold; + color:#096ae4; + background-color: #d9e8fd; + border: 1px solid #096ae4; +} + +/* =============================================== */ +/* QTabBar */ +/* =============================================== */ +QTabWidget{ + /*margin-top:10px;*/ +} +QTabWidget::pane{ + border: 1px solid #B2B9C3; +} +QTabWidget::tab-bar { + left: 0px; +} +QTabBar::tab { + font-weight:bold; + color:#333333; + min-height:30px; + background: #FDFDFD; +} +QTabBar::tab:hover { + background: #d9e8fd; + border-color: transparent; +} +QTabBar::tab:selected { + background: #d9e8fd; + color:#096ae4; + border-color: #096ae4; +} +QTabBar::tab:pressed { + background: #096ae4; + border-color: #096ae4; + color:#FDFDFD; +} +QTabBar::tab:focus { + border-color: #096ae4; +} + +QTabBar::tab:top{ + height:30px; + border-top:0px; + border-left:0px; + border-right:0px; + border-bottom:2px solid transparent; + padding:0 10 0 10px; +} + +QTabBar::tab:top:selected{ + border-top:0px; + border-left:0px; + border-right:0px; + border-bottom:2px solid #096ae4; +} + +QTabBar::tab:bottom{ + /* width:80px; */ + height:30px; + border-top:2px solid transparent; + border-left:0px; + border-right:0px; + border-bottom:0px; + padding:0 10 0 10px; +} + +QTabBar::tab:bottom:selected{ + border-top:2px solid #096ae4; + border-left:0px; + border-right:0px; + border-bottom:0px; +} + +QTabBar::tab:right{ + height:80px; + border-top:0px; + border-bottom:0px; + border-left:0px; + border-right:2px solid transparent; + padding:5 5 5 6px; +} + +QTabBar::tab:right:selected{ + height:80px; + border-top:0px; + border-bottom:0px; + border-left:0px; + border-right:2px solid #096ae4; + +} +QTabBar::tab:left{ + height:80px; + border-top:0px; + border-bottom:0px; + border-right:0px; + border-left:2px solid transparent; + padding:5 5 5 6px; +} + +QTabBar::tab:left:selected{ + height:80px; + border-top:0px; + border-bottom:0px; + border-right:0px; + border-left:2px solid #096ae4; +} + + +QTabWidget::pane +{ + border:1px solid #B2B9C3; + padding:6px; +} + + +/* =============================================== */ +/* QHeaderView for list table */ +/* =============================================== */ +QHeaderView { + background-color: #eceff2; + border: none; + margin: -1px; + padding: 0px; + height:30px; +} +QHeaderView::section, QTableCornerButton::section {/*设置表头属性*//*左上角*/ + background-color: #eceff2; + padding: 0 3px; + height: 30px; + border-top: 0px solid #B2B9C3; + border-left: 0px solid #B2B9C3; + border-right: 1px solid #B2B9C3; + border-bottom: 1px solid #B2B9C3; + border-radius: 0px; +} +QHeaderView::section:hover, QTableCornerButton::section:hover{ + /*background-color: #d9e8fd;*/ +} +QHeaderView::section:pressed{ + background-color: #096ae4; + color:#FDFDFD; +} +QHeaderView::section:checked { + background-color: #eceff2; + color:#333333; +} + +QHeaderView::down-arrow +{ + subcontrol-position:center right; + padding-right:10px; + image:url(../../resource/zh/public/light/icon/box-down-normal.png); +} + +QHeaderView::up-arrow +{ + subcontrol-position:center right; + padding-right:10px; + image:url(../../resource/zh/public/light/icon/box-up-normal.png); +} + +/* =============================================== */ +/* QAbstractItemView */ +/* =============================================== */ +QAbstractItemView +{ + show-decoration-selected:1; + selection-background-color:#d9e8fd; /*鼠标选中时背景色*/ + selection-color:#096ae4; /*鼠标选中时前景色:文字颜色*/ + /*设置交替颜色,需要在函数属性中设置:tableWidget->setAlternatingRowColors(true)*/ + alternate-background-color: #f4f8fb; + background: #FDFDFD; + color:#333333; + border: 1px solid #B2B9C3; +} + +QAbstractItemView::item +{ + border-radius:0px; + min-height:30px; + border: 0px; + padding: 0px; +} + +QAbstractItemView::item:hover{ + background: #d9e8fd; +} + +QAbstractItemView::item:pressed{ + color: #d9e8fd; + background:#d9e8fd; +} + +QAbstractItemView::item:selected:focus { + background: #d9e8fd; + color: #096ae4; +} + +QAbstractItemView::item:selected:!focus { + background: #d9e8fd; + color: #096ae4; +} + +QAbstractItemView::item:selected:active { + background: #d9e8fd; + color: #096ae4; +} + +QAbstractItemView QCheckBox::hover{ + + background: #d9e8fd; +} + +QAbstractItemView QCheckBox::pressed{ + color: #096ae4; + background:#d9e8fd; +} + +QAbstractItemView QCheckBox::focus{ + color:#096ae4; + background: #d9e8fd; +} + +QAbstractItemView QCheckBox::selected:focus { + background: #d9e8fd; + color: #096ae4; +} + +QAbstractItemView QCheckBox::selected:!focus { + background: #d9e8fd; + color: #096ae4; +} + +QAbstractItemView QCheckBox::selected:active { + background: #d9e8fd; + color: #096ae4; +} + +QAbstractItemView::indicator::unchecked{ + border-image:url(../../resource/zh/public/light/icon/ckb-normal.png); +} + + +QAbstractItemView::indicator::checked{ + border-image:url(../../resource/zh/public/light/icon/ckb-select-hover.png); +} + +QAbstractItemView::indicator:indeterminate { + border-image:url(../../resource/zh/public/light/icon/ckb-ptck.png); +} + +QAbstractItemView::branch{ + background-color: #FDFDFD; +} + +QAbstractItemView::branch:alternate +{ + alternate-background-color: #f4f8fb; +} + + +QAbstractItemView::branch:hover{ + background: #d9e8fd; +} + +QAbstractItemView::branch:pressed{ + color: #d9e8fd; + background:#d9e8fd; +} + +QAbstractItemView::branch:focus{ + color:#096ae4; + background: #d9e8fd; +} + +QAbstractItemView::branch:selected:focus { + background: #d9e8fd; + color: #096ae4; +} + +QAbstractItemView::branch:selected:!focus{ + background: #d9e8fd; + color: #096ae4; +} + +QAbstractItemView::branch:selected:active { + background: #d9e8fd; + color: #096ae4; +} + + +/* =============================================== */ +/* QListView QListWidget */ +/* =============================================== */ +QListWidget, QListView +{ + gridline-color: #B2B9C3; /*表格中的网格线条颜色*/ + border:1px solid #B2B9C3; /*边框线的宽度、颜色*/ + /*border:none;*/ /*去除边界线*/ + /*border-radius:5px;*/ + /*padding:10px 10px;*/ /*表格与边框的间距*/ +} + +QListView::item, QListWidget::item{ + background: transparent; + outline-style: none; + border: none; + padding: 0px 10px 0px 10px; +} + +/* =============================================== */ +/* QTableWidget */ +/* =============================================== */ +QTableWidget, QTableView +{ + gridline-color: #EEEEEF; /*表格中的网格线条颜色*/ + border:1px solid #B2B9C3; /*边框线的宽度、颜色*/ + /*border:none;*/ /*去除边界线*/ + /*border-radius:5px;*/ + /*padding:10px 10px;*/ /*表格与边框的间距*/ +} +QTableView::item, QTabWidget::item{ + background: transparent; + outline-style: none; + border: none; +} + +QTableView QLineEdit +{ + /*background: #FDFDFD;*/ + border-radius: 0px; + padding: 0px; +} + +QTableWidget QComboBox{ + /*background: #FDFDFD;*/ + border-radius: 0px; + /*margin: 2px;*/ + border: none; + height:28px; +} + +QTableView[changed="true"] { + alternate-background-color: #AED8D8; + background: #88ADD2; +} + +QTableView[changed="false"] { + alternate-background-color: #E6ECF2; + background: white; +} + +/* =============================================== */ +/* QTreeWidget QTreeView */ +/* =============================================== */ +QTreeWidget, QTreeView +{ + background:#FDFDFD; +} +QTreeWidget::item, QTreeView::item{ + background: transparent; + outline-style: none; + border: none; +} + + +QTreeWidget::branch,QTreeView::branch { + background-color: #FDFDFD; +} + +QTreeWidget::branch:hover,QTreeView::branch:hover{ + background: #d9e8fd; +} + +QTreeWidget::branch:pressed,QTreeView::branch:pressed{ + color: #d9e8fd; + background:#d9e8fd; +} + +QTreeWidget::branch:focus,QTreeView::branch:focus{ + color:#096ae4; + border-color: #d9e8fd; +} + +QTreeWidget::branch:selected:focus,QTreeView::branch:selected:focus { + background: #d9e8fd; + color: #096ae4; +} + +QTreeWidget::branch:selected:!focus,QTreeView::branch:selected:!focus{ + background: #d9e8fd; + color: #096ae4; +} + +QTreeWidget::branch:selected:active,QTreeView::branch:selected:active { + background: #d9e8fd; + color: #096ae4; +} + +QTreeView::branch { +width:9px; +height:9px; + background-repeat: no-repeat; + background-position: center; +} + +QTreeView::branch:closed:has-children { + image:url(../../resource/zh/public/light/icon/arrowRight-normal.png); +} + +QTreeView::branch:closed:has-children:hover { + image:url(../../resource/zh/public/light/icon/arrowRight-normal.png); +} + +QTreeView::branch:open:has-children { + image:url(../../resource/zh/public/light/icon/arrowBottom-normal.png); +} + +QTreeView::branch:open:has-children:hover { + image:url(../../resource/zh/public/light/icon/arrowBottom-normal.png); +} + +/* =============================================== */ +/* QAbstractSpinBox spinbox QDateTimeEdit */ +/* =============================================== */ +QAbstractSpinBox { + background: #FDFDFD;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color:#096ae4; + selection-color:#FDFDFD; + border: 1px solid #B2B9C3; + border-radius: 2px; + padding: 0 10 0 10px; + height:28px; +} + +QAbstractSpinBox:hover { + border-color: #096ae4; + selection-background-color:#096ae4; + selection-color:#FDFDFD; +} + +QAbstractSpinBox:focus { + border-color: #096ae4; + +} + +/*SpinBox向上按钮样式*/ +QAbstractSpinBox::up-button { +margin: 5px 5px 5px 5px; + height:7px; + width:11px; + image:url(../../resource/zh/public/light/icon/box-up-normal.png); + } + +QAbstractSpinBox::up-button:hover { + image:url(../../resource/zh/public/light/icon/box-up-select.png); + + } + +QAbstractSpinBox::up-button:pressed { + image:url(../../resource/zh/public/light/icon/box-up-select.png); + + } + +QAbstractSpinBox::up-button:disabled{ + image:url(../../resource/zh/public/light/icon/box-up-normal.png); + + } + +/*SpinBox向下按钮样式*/ +QAbstractSpinBox::down-button { +margin: 5px 5px 5px 5px; + height:7px; + width:11px; + image:url(../../resource/zh/public/light/icon/box-down-normal.png); + } + +QAbstractSpinBox::down-button:hover{ + image:url(../../resource/zh/public/light/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:pressed{ + image:url(../../resource/zh/public/light/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:disabled{ + image:url(../../resource/zh/public/light/icon/box-down-normal.png); + +} + + /* =============================================== */ +/* QComboBox */ +/* =============================================== */ +QComboBox{ + background: #FDFDFD;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color:#096ae4; + selection-color:#FDFDFD; + border: 1px solid #B2B9C3; + border-radius: 2px; + padding: 0 5 0 5px; + height:28px; +} + +QComboBox:hover +{ + border-color: #096ae4; +} + +QComboBox:focus { + border-color: #096ae4; +} + +QComboBox QAbstractItemView +{ + selection-background-color: #d9e8fd; + selection-color:#096ae4; + alternate-background-color: #f4f8fb; + background: #FDFDFD; + border: 1px solid #B2B9C3; + padding: 10px 0px 10px 0px; +} + +QComboBox QAbstractItemView::item:selected:active { + background: transparent; + color: #096ae4; +} + +QComboBox::drop-down { + border-image:url(../../resource/zh/public/light/icon/box-down-normal.png); + margin-right: 10px; + height:7px; + width:11px; + subcontrol-origin: margin; + subcontrol-position: center right; +} + +QComboBox::drop-down:hover{ + border-image:url(../../resource/zh/public/light/icon/box-down-select.png); +} + +QComboBox::drop-down:open:!hover { + border-image:url(../../resource/zh/public/light/icon/box-down-normal.png); +} + +QComboBox::drop-down:open:hover { + border-image:url(../../resource/zh/public/light/icon/box-down-select.png); +} + +QComboBox::drop-down:disabled { + border-image:url(../../resource/zh/public/light/icon/box-down-normal.png); +} + +/* =============================================== */ +/* QCalendarWidget */ +/* =============================================== */ +QCalendarWidget QWidget{ + border: none; + background-color: #FDFDFD; + color:#333333; +} + +QCalendarWidget QWidget#qt_calendar_calendarview{ + border-left: 1px solid #B2B9C3; + border-right: 1px solid #B2B9C3; + border-bottom: 1px solid #B2B9C3; + background-color: #FDFDFD; +} + +QCalendarWidget QWidget#qt_calendar_navigationbar { + background-color: #eceff2; + border: 1px solid #B2B9C3; +} + + +QCalendarWidget QMenu{ + width: 80px; + background-color: #FDFDFD; + border: 0px solid #cccfd9; + color:#096ae4; +} + + +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: transparent; +} + +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: transparent; +} + + +QCalendarWidget QAbstractSpinBox { + background: #FDFDFD;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color: #096ae4; + border: 1px solid #B2B9C3; + border-radius: 0px; + padding: 0 10 0 10px; + height:30px; +} + +QCalendarWidget QAbstractSpinBox:hover { + border-color: #096ae4; +} + +QCalendarWidget QAbstractSpinBox:focus { + border-color: #096ae4; +} + +QCalendarWidget QToolButton:pressed,QCalendarWidget QToolButton:checked:hover{ + color:#096ae4; +} + + +QCalendarWidget QToolButton#qt_calendar_prevmonth{ + width: 40px; + qproperty-icon: url(../../resource/zh/public/light/icon/arrowLeft.png); + background-color: transparent; +} + +QCalendarWidget QToolButton#qt_calendar_nextmonth { + width: 40px; + qproperty-icon: url(../../resource/zh/public/light/icon/arrowRight.png); + background-color: transparent; +} + +QCalendarWidget QToolButton#qt_calendar_monthbutton { + padding-right: 10px; + background-color: transparent; +} + +QCalendarWidget QAbstractItemView +{ + selection-background-color:#096ae4; /*鼠标选中时背景色*/ + selection-color:#FDFDFD; /*鼠标选中时前景色:文字颜色*/ + /*设置交替颜色,需要在函数属性中设置:tableWidget->setAlternatingRowColors(true)*/ + alternate-background-color: #f4f8fb; + background: #FDFDFD; + border: 1px solid #B2B9C3; +} + + +/* QDateEdit:drop-down{ + border:none; + padding-right:8px; + background:white; +} */ + +QDateEdit::drop-down { + border-image:url(../../resource/zh/public/light/icon/box-down-normal.png); + margin-right: 10px; + height:7px; + width:11px; + subcontrol-origin: margin; + subcontrol-position: center right; +} + +QDateEdit::drop-down:hover{ + border-image:url(../../resource/zh/public/light/icon/box-down-select.png); +} + +QDateEdit::drop-down:open:!hover { + border-image:url(../../resource/zh/public/light/icon/box-down-normal.png); +} + +QDateEdit::drop-down:open:hover { + border-image:url(../../resource/zh/public/light/icon/box-down-select.png); +} + +QDateEdit::drop-down:disabled { + border-image:url(../../resource/zh/public/light/icon/box-down-normal.png); +} + + + +/* =============================================== */ +/* 主窗口 */ +/* =============================================== */ +MainWindow,CustomMainWindow,CustomUiMainWindow +{ + border-style:solid; + background-color: #EFF7FC; + background-repeat: no-repeat; + background-position: center; + background-size: cover; + background-attachment: fixed; + border: 1px solid #ADBDCD; +} + +WorkFrame +{ + background-color: #FDFDFD; + border: 0px solid #ADBDCD; + border-right:1px solid #ADBDCD; +} + +MenuFrame +{ + min-width: 90px; + max-width: 90px; + background-color: transparent; +} + +/* =============================================== */ +/* 自定义控件部分- 标题头 */ +/* =============================================== */ +MainTitle{ + background:transparent; + min-height: 42px; + max-height: 42px; + border-bottom:2px solid #d9e8fd; +} + +MainTitle QLabel#icon { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + background:transparent; + border-image: url(../../resource/zh/public/light/icon/min_logo.png); +} + +MainTitle QLabel#title { + color:#0084D4; + font-weight: bold; + font-size: 18px; +} + +MainTitle QPushButton#min_btn { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/light/icon/btn_min.png) 0 96 0 0 ; +} + +MainTitle QPushButton#min_btn:hover { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_min.png) 0 64 0 32; +} + +MainTitle QPushButton#min_btn:pressed { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_min.png) 0 32 0 64 ; + +} + +MainTitle QPushButton#min_btn:disabled { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/light/icon/btn_min.png) 0 0 0 96 ; + +} + + +MainTitle QPushButton#max_btn[buttonStatus="max"]{ + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/light/icon/btn_max.png) 0 96 0 0 ; +} + +MainTitle QPushButton#max_btn:hover[buttonStatus="max"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_max.png) 0 64 0 32; +} + +MainTitle QPushButton#max_btn:pressed[buttonStatus="max"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_max.png) 0 32 0 64 ; + +} + +MainTitle QPushButton#max_btn:disabled[buttonStatus="max"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/light/icon/btn_max.png) 0 0 0 96 ; + +} + + + +MainTitle QPushButton#max_btn[buttonStatus="normal"]{ + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/light/icon/btn_normal.png) 0 96 0 0 ; +} + +MainTitle QPushButton#max_btn:hover[buttonStatus="normal"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_normal.png) 0 64 0 32; +} + +MainTitle QPushButton#max_btn:pressed[buttonStatus="normal"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_normal.png) 0 32 0 64 ; + +} + +MainTitle QPushButton#max_btn:disabled[buttonStatus="normal"] { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/light/icon/btn_normal.png) 0 0 0 96 ; + +} + +MainTitle QPushButton#close_btn { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/light/icon/btn_close.png) 0 96 0 0 ; +} + +MainTitle QPushButton#close_btn:hover { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_close.png) 0 64 0 32; +} + +MainTitle QPushButton#close_btn:pressed { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_close.png) 0 32 0 64 ; + +} + +MainTitle QPushButton#close_btn:disabled { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/light/icon/btn_close.png) 0 0 0 96 ; +} + +/* =============================================== */ +/* 自定义控件部分- 弹出窗 */ +/* =============================================== */ +QWidget#CustomDialogCentralWidget +{ + background-color: #fdfdfd; + border-left:1px solid #adbdcd; + border-right:1px solid #adbdcd; + border-bottom:1px solid #B2B9C3; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + border-style: solid; +} + +CustomDialogTitle{ + border-top:2px solid #adbdcd; + border-left:2px solid #adbdcd; + border-right:2px solid #adbdcd; + border-bottom:1px solid #B2B9C3; + background:#d9e8fd; + min-height: 32px; + max-height: 32px; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + border-style:solid; + border-width:1px; +} + +CustomDialogTitle QLabel#icon { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + background:transparent; + border-image: url(../../resource/zh/public/light/icon/min_logo.png); +} + +CustomDialogTitle QLabel#title { + color:#0084D4; + font-weight: bold; +} + + +CustomDialogTitle QPushButton#close_btn { + max-height:32px; + max-width:32px; + min-height:32px; + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + background:transparent; + radius:0px; + border-image: url(../../resource/zh/public/light/icon/btn_close.png) 0 96 0 0 ; +} + +CustomDialogTitle QPushButton#close_btn:hover { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_close.png) 0 64 0 32; +} + +CustomDialogTitle QPushButton#close_btn:pressed { + border: 0px; + padding: 0px 0px 0px 0px; + border-position:center; + border-image: url(../../resource/zh/public/light/icon/btn_close.png) 0 32 0 64 ; + +} + +CustomDialogTitle QPushButton#close_btn:disabled { + border: 0px; + padding: 0px 0px 0px 0px; + border-image: url(../../resource/zh/public/light/icon/btn_close.png) 0 0 0 96 ; +} + + +CustomDialog,CustomUiDialog +{ + background:#FDFDFD; + border:2px solid #adbdcd; + border-radius: 5px; + border-style:solid; + border-width:1px; +} + + +/* =============================================== */ +/* 自定义控件部分- 主菜单 */ +/* =============================================== */ +MenuFrame QPushButton{ + background-color:transparent; + background-position:top; + background-repeat:no-repeat; + background-origin:content; + height:45px; + width:60px; + padding:18px 0px -10px 0px; + margin: 0px -1px 1px 5px; + border:1px solid transparent; + + background-image:url(../../resource/zh/public/light/icon/main_common.png); + border-width: 2px; +} + +MenuFrame QPushButton:hover{ + + border-top-left-radius:8px; + border-bottom-left-radius:8px; + border-top-right-radius:8px; + border-bottom-right-radius:8px; + background-color:#d9e8fd; + color: #096ae4; + border-top:2px solid transparent; + border-left:2px solid transparent; + border-right:2px solid transparent; + border-bottom:2px solid transparent; + + background-image:url(../../resource/zh/public/light/icon/main_common.png); +} + + + +MenuFrame QPushButton:pressed, MenuFrame QPushButton:checked,MenuFrame QPushButton:focus{ + border-top-left-radius:8px; + border-bottom-left-radius:8px; + border-top-right-radius:0px; + border-bottom-right-radius:0px; + background-color: #FDFDFD; + font-weight: bold; + color: #096ae4; + border-top:2px solid #d9e8fd; + border-left:2px solid #d9e8fd; + border-right:2px solid transparent; + border-bottom:2px solid #d9e8fd; + background-image:url(../../resource/zh/public/light/icon/main_common.png) ; +} + +MenuFrame QWidget#centralWidget,MenuFrame QWidget#scrollAreaWidget,MenuFrame QWidget#toolBtnWidget,QScrollArea +{ + background:transparent; +} + + +QPushButton#upButton { + background-position:top; + background-repeat:no-repeat; + background-origin:content; + + text-align:bottom; + padding:0px; + margin: 0px; + border:0px solid transparent; + border-radius:0px; + + color: transparent; + height: 32px; + width: 32px; + background:transparent; + + border-image: url(../../resource/zh/public/light/icon/btn_up.png) 0 96 0 0 ; + +} + +QPushButton#upButton:hover { + background-color: #d9e8fd; + border: 0px; + border-image: url(../../resource/zh/public/light/icon/btn_up.png) 0 64 0 32; +} + +QPushButton#upButton:pressed { + background-color: #096ae4; + border: 0px; + border-image: url(../../resource/zh/public/light/icon/btn_up.png) 0 32 0 64 ; +} + +QPushButton#upButton:disabled { + background:transparent; + border: 0px; + border-image: url(../../resource/zh/public/light/icon/btn_up.png) 0 0 0 96 ; +} + + +QPushButton#downButton { + background-position:top; + background-repeat:no-repeat; + background-origin:content; + + text-align:bottom; + padding:0px; + margin: 0px; + border:1px solid #B2B9C3; + border-radius:0px; + + color: transparent; + height: 32px; + width: 32px; + background:transparent; + + border-image: url(../../resource/zh/public/light/icon/btn_down.png) 0 96 0 0 ; +} + +QPushButton#downButton:hover { + background-color: #d9e8fd; + border: 0px; + border-image: url(../../resource/zh/public/light/icon/btn_down.png) 0 64 0 32; +} + +QPushButton#downButton:pressed { + background-color: #096ae4; + border: 0px; + border-image: url(../../resource/zh/public/light/icon/btn_down.png) 0 32 0 64 ; +} + +QPushButton#downButton:disabled { + background:transparent; + border: 0px; + border-image: url(../../resource/zh/public/light/icon/btn_down.png) 0 0 0 96 ; +} + + + +/* =============================================== */ +/* 自定义控件部分- 消息窗 */ +/* =============================================== */ +N_MessageBox +{ + min-height:180px; + min-width:300px; +} + + +N_MessageBox QLabel +{ + color: #096ae4; + font-weight: bold; +} + +AdaptImage[MSG_TYPE="ICON_DEFAULT"] +{ + height:42px; + width:42px; +} + + +AdaptImage[MSG_TYPE="ICON_WARNING"] +{ + background: transparent; image:url(../../resource/zh/public/light/icon/Warning.png); +} + + +AdaptImage[MSG_TYPE="ICON_ERROR"] +{ + background: transparent; image:url(../../resource/zh/public/light/icon/Error.png); +} + + +AdaptImage[MSG_TYPE="ICON_INFORMATION"] +{ + background: transparent; image:url(../../resource/zh/public/light/icon/Information.png); +} + + +AdaptImage[MSG_TYPE="ICON_QUESTION"] +{ + background: transparent; image:url(../../resource/zh/public/light/icon/Question.png); +} + + +AlertMessageBox +{ + min-height:140px; + min-width:300px; + background:#d9e8fd; +} + +AlertMessageBox QLabel +{ + color: #096ae4; + font-weight: bold; +} + +QInputDialog +{ + background-color: #FDFDFD; +} \ No newline at end of file diff --git a/resource/fr/style/light/relaySetting.qss b/resource/fr/style/light/relaySetting.qss new file mode 100644 index 00000000..68a4fcc9 --- /dev/null +++ b/resource/fr/style/light/relaySetting.qss @@ -0,0 +1,4 @@ +QFrame#frame, +QFrame#frame_2{ + border:0px solid #cccfd9; +} diff --git a/resource/fr/style/light/robot.qss b/resource/fr/style/light/robot.qss new file mode 100644 index 00000000..e844e395 --- /dev/null +++ b/resource/fr/style/light/robot.qss @@ -0,0 +1,252 @@ +QToolButton{ + border:0px; +} +QFrame#frame{ + background-color: white; +} +QPushButton{ + height:20px; + width:40px; + color:#027bb3; + border-radius:2px; + border:1px solid #0669af; +} + +QDialog{ + background-color: white; +} +QPushButton#exetask{ + border:1px solid #0669af; + color:#027bb3; + border-radius:2px; + height:26px; +} + +QPushButton#exetask:disabled{ +color:white; +background-color:#A9A9A9; +} +QPushButton#exetask:hover{ +color:#02efef; +background-color:#027BEC; +} + +QPushButton#searchButton,QPushButton#play,QPushButton#pause, +QToolButton#m_cap,QPushButton#m_voiceOpen,QPushButton#m_voiceClose{ + border:0px; +} +QPushButton#searchButton{ +background:#0d3756; +image:url(../../resource/zh/gui/icon/robot/search.png); +} + +QPushButton#play{ + image:url(../../resource/zh/gui/icon/robot/play.png); +} + +QPushButton#pause{ + image:url(../../resource/zh/gui/icon/robot/pause.png); +} + +QToolButton#m_cap{ + image:url(../../resource/zh/gui/icon/robot/cut.png); +} + +QPushButton#m_voiceOpen{ + image:url(../../resource/zh/gui/icon/robot/voiceOpen.png); +} +QPushButton#m_voiceClose{ + image:url(../../resource/zh/gui/icon/robot/voiceClose.png); +} + +QLineEdit#keyWordSearch{ + border:1px solid #0669af; + color:#02efef; + background-color: transparent; +} +QHeaderView:section{ + color:#0394d5; + background-color:#0d3756; +} +QHeaderView{ + background-color:#0d3756; + border:0px solid; +} + +QHeaderView::down-arrow { + image: url(../../resource/zh/gui/icon/robot/down_arrow.png); +} + +QHeaderView::up-arrow { + image: url(../../resource/zh/gui/icon/robot/up_arrow.png); +} + +QWidget#ccdVideoWidget,QWidget#ctrlWidget{ + border:1px solid #0669af; +} +QWidget#widget_12{ + background-color:#041c3a; +} +QFrame#frame_free{ + border-image: url(../../resource/zh/gui/icon/robot/robotbottom.png); +} +QFrame#frame_overlook{ + border-image: url(../../resource/zh/gui/icon/robot/robotbottom.png); +} +QFrame#frame_charge{ + border-image: url(../../resource/zh/gui/icon/robot/robotbottom.png); +} +QFrame#frame_overhaul{ + border-image: url(../../resource/zh/gui/icon/robot/robotbottom.png); +} +QWidget#widget_12{ + border:1px solid #0669af; +} +QTableView#ccdVideoView{ + border-top: 0px; + border:1px solid #0669af; +} +QTableView{ + color:#027bb3; + border:none; + gridline-color:#09304c; + alternate-background-color: #09314d; + background-color:#041c3a; +} +QTableView::item:selected { + color:#02efef; + background-color:#104366; +} +QLabel{ + color:#027bb3; +} +QLabel#label_head +{ + font: 18pt "宋体"; +} +QLabel#label_free_font +{ + font: 20pt "宋体"; + color: rgb(0, 170, 255); +} +QLabel#label_overlook_font +{ + font: 20pt "宋体"; + color: rgb(255, 255, 0); +} +QLabel#label_charge_font +{ + font: 20pt "宋体"; + color: rgb(85, 255, 127); +} +QLabel#label_overhaul_font +{ + font: 20pt "宋体"; + color: rgb(255, 127, 0); +} +QComboBox { + border:1px solid #0669af; +} +QComboBox::drop-down{ + width:11px; + height:7px; + border-image: url(../../resource/zh/public/light/icon/box-down-select.png); + margin-right: 10px; + subcontrol-origin: margin; + subcontrol-position: center right; +} + +QComboBox::drop-down:open:hover { + border-image: url(../../resource/zh/public/light/icon/box-up-select.png); +} + +QComboBox:!editable { + color:#027bb3; + background: #0d3756; +} +QComboBox:editable { + color:#027bb3; + background: #0d3756; +} +QComboBox QAbstractItemView::item +{ + color:#027bb3; + background:#0d3756; + height: 30px; +} + +QComboBox QAbstractItemView::item:selected:hover +{ + color:#01a0e3; + background:#104366; +} +QScrollBar:vertical { + background: #104366; + width: 10px; + margin: 0px; +} + +QScrollBar:horizontal { + height: 10px; + background: #104366; +} +QScrollBar::handle:vertical { + background: #104366; + min-height: 30px; +} + +QScrollBar::handle:vertical, +QScrollBar::handle:horizontal { + background: #175e8f; +} + +QScrollBar::sub-line:vertical, QScrollBar::add-line:vertical, +QScrollBar::sub-line:horizontal, QScrollBar::add-line:horizontal { + width: 0; + height: 0; +} + +QScrollBar::sub-page:vertical, QScrollBar::add-page:vertical, +QScrollBar::sub-page:horizontal, QScrollBar::add-page:horizontal { + background: #104366; +} + +QSlider::groove{ +border: 0px; +height: 4px; +background: #017AB2; +} + +/* 顶部拖动设计 */ + +QSlider::handle{ +width: 12px; +margin: -4px 0; +border-radius: 6px; +background-color: #00EAFF; +} + +/* 未滑动的区域 */ + +QSlider::add-page:horizontal +{ +height: 4px; +} + +/* 已划过的设置*/ + +QSlider::sub-page:horizontal +{ +background-color:#00EAFF; +} +QMenu{ +background:#104366; +margin: -1px; +} +QMenu::item{ +color:#01a0e3; +} +QMenu::item:selected{ +background-color: #134a72; +color:#02efef; +} diff --git a/resource/fr/style/light/sequence.qss b/resource/fr/style/light/sequence.qss new file mode 100644 index 00000000..d797fd56 --- /dev/null +++ b/resource/fr/style/light/sequence.qss @@ -0,0 +1,12 @@ +QListView{ + background:white; + color: #333333; + outLine:0px; + border:1px solid #cccfd9; +} +QTreeView QAbstractSpinBox::up-button { + height:3px; +} +QTreeView QAbstractSpinBox::down-button { + height:3px; +} \ No newline at end of file diff --git a/resource/fr/style/light/shift.qss b/resource/fr/style/light/shift.qss new file mode 100644 index 00000000..3f5502e8 --- /dev/null +++ b/resource/fr/style/light/shift.qss @@ -0,0 +1,36 @@ + +QPushButton#iconButton{ + border-radius:0px; + border:none; + image:url(../../resource/zh/public/light/icon/calendar.png); +} + +QComboBox#comboBox{ + width:100px; +} + +CRecordWidget QLabel#label1, +CRecordWidget QLabel#label2, +CRecordWidget QLabel#label3, +CRecordWidget QLabel#label4{ + background:transparent; +} +CRecordWidget QTextEdit{ + color:#333333; + border:1px solid #cccfd9; + background:white; +} +CRecordWidget QTextEdit:!editable:read-only{ + background:red; + color: #999999; +} + +HandoverWidget QPushButton{ + border-radius:0px; +} +HandoverWidget QLabel#label1, +HandoverWidget QLabel#label2, +HandoverWidget QLabel#label3, +HandoverWidget QLabel#label4{ + background:transparent; +} \ No newline at end of file diff --git a/resource/fr/style/light/sys_startup.qss b/resource/fr/style/light/sys_startup.qss new file mode 100644 index 00000000..3573a9c3 --- /dev/null +++ b/resource/fr/style/light/sys_startup.qss @@ -0,0 +1,66 @@ +QFrame#startUpFrame,QFrame#frame_page3 +{ + border:1px solid #e8e8e8; +} + +QFrame#frame_page1,QFrame#appFrame +{ + border:0px solid ; +} +QTabWidget#tabWidget +{ + border:0px solid #e8e8e8; +} + + +QWidget#versionWidget +{ + border:1px solid #e8e8e8; + background-color:white; +} +QToolButton +{ + border :none; + background-color: white; +} +QToolButton::hover +{ + background-color:#72B2FF; +} +QTabBar::tab +{ + height:40px; +} +QTabBar::tab:selected, QTabBar::tab:hover { + color:#0394d5; + background-color:white; +} +QTabBar::tab:!selected{ + color:#027bb3; + background-color:#f2f5fa; +} + +QTreeView,QTableWidget{ + border:1px solid #e8e8e8; +} + +QLabel#label +{ + border-top:none; + border-left:none; + border-right:none; + border-bottom:1px solid #e8e8e8; +} +QPushButton#sys_start_btn,QPushButton#sys_start_btn_false +{ + border:none; + background:#00ca21; + color:white; +} +QPushButton#sys_stop_btn,QPushButton#sys_stop_btn_false +{ + border:1px solid #ff6840; + border-radius: 6px; + background:white; + color:#ff6840; +} diff --git a/resource/fr/style/light/trendCurves.qss b/resource/fr/style/light/trendCurves.qss new file mode 100644 index 00000000..6db92440 --- /dev/null +++ b/resource/fr/style/light/trendCurves.qss @@ -0,0 +1,168 @@ +QFrame#adaptFrame, +QFrame#frame_3{ + border:1px solid #cccfd9; +} +QFrame#titleFrame, +QFrame#pageFrame, +QFrame#toolFrame{ + border:none; +} +QLabel#m_tipLabel{ + background:white; +} +QLabel#adaptLlabel { + color:#333333; +} +QLabel#title { + color:#333333; + font-size:24px; + margin-bottom:5px; + font-family:Microsoft YaHei; +} +CPlotWidget { + qproperty-plotBackgroundColor: white; + qproperty-plotTickColor: #666666; + qproperty-plotGridColor: #cccfd9; + qproperty-plotZeroLineColor: #cccfd9; + qproperty-plotTickPen: #cccfd9; +} +CSWitchButton { + min-width:60px; + max-height:32px; + qproperty-backgroundColor:#A0FFFFFF; + qproperty-checkedColor:#A0FFFFFF; + qproperty-textColor:#333333; + qproperty-radius:10; + qproperty-borderColor:#cccfd9; +} +CToolTip{ + background:white; + border: 1px solid #cccfd9; + border-radius: 0px; +} +QSlider{ + background:transparent; + min-width:5px; + max-width:15px; +} +QSlider::handle{ + width:15px; + height:15px; + background: #096ae4; +} +QSlider::add-page, +QSlider::sub-page{ + background: transparent; +} +QLineEdit#searchTextEdit +{ + background: #FDFDFD;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color: #096ae4; + selection-color:#FDFDFD; + border: 1px solid #B2B9C3; + border-radius: 0px; + padding: 1 1 1 1px; + height:22px; +} +QPushButton#realTime, +QPushButton#sec, +QPushButton#day, +QPushButton#week, +QPushButton#month, +QPushButton#quarter, +QPushButton#year, +QPushButton#custom{ + width:60px; +} +QPushButton#collectCurve, +QPushButton#plotPrint, +QPushButton#plotExport{ + width: 48px; + height:30px; +} +QPushButton#searchButton:hover{ + background-color: #d1e3f8; +} +QPushButton#searchButton:pressed{ + background-color: #d1e3f8; + padding: 2px -1px -2px 1px; +} +QPushButton#searchButton{ + padding:2px 2px 2px 2px; + border:0px; + background:white; + height:21px; + width:21px; + image:url(../../resource/zh/public/light/icon/search.png); +} +QTabWidget::pane { + border: 0px; + padding: 0px; +} +QTabBar:tab { + width : 72px; + height: 28px; + color: #333333; + background:white; + border-bottom: 1px solid #0669af; +} +QTabBar:tab:selected { + color: #096ae4; + background-color: #d1e3f8; + border-bottom-color: #0669af; +} +QTabBar:tab:hover { + color: #096ae4; +} +CTrendEditDialog{ + background-color#e6ecf2; +} +CRetriever QLabel{ + color:#333333; +} +CRetriever QWidget{ + background:white; + color:#333333; +} +CRetriever QRadioButton{ + color: #333333; +} +CRetriever QFrame#frame_2, +CRetriever QFrame#frame_4, +CRetriever QFrame#frame_5, +CRetriever QFrame#frame_6, +CRetriever QFrame#frame_7, +CRetriever QFrame#frame_8, +CRetriever QFrame#frame_9, +CRetriever QFrame#frame_10, +CRetriever QFrame#frame_11, +CRetriever QFrame#frame_12 +{ + border: 1px solid #cccfd9; + background:white; +} +CRetriever QLineEdit{ + color: #333333; + border: 1px solid #cccfd9; +} +CRetriever QPushButton{ + image: url(../../resource/zh/public/light/icon/search.png); +} +QComboBox#interval{ + min-width:80px; +} +QComboBox#comboBox_alarmStatus{ + min-width:120px; +} +QComboBox QLineEdit{ + border:none; +} +QTableView::item#trendView{ + border:1px solid #cccfd9; + border-top-color:transparent; +} +QDateTimeEdit:drop-down{ + image: url(../../resource/zh/public/light/icon/arrowBottom.png); + padding-right: 4px; + padding-top: 10px; +} diff --git a/resource/fr/style/light/usermng.qss b/resource/fr/style/light/usermng.qss new file mode 100644 index 00000000..41e5f903 --- /dev/null +++ b/resource/fr/style/light/usermng.qss @@ -0,0 +1,75 @@ +*{ + outline:0px; +} +QWidget, +QDialog, +KbdPropertyDlg{ + color:#333333; + font-size:14px; + font-family:Microsoft YaHei; +} +QDialog, +KbdPropertyDlg{ + background:#e6ecf2; +} +QFrame#mainFrame{ + background-color: #e6ecf2; + border:1px solid #cccfd9; +} +QWidget#mainWidget{ + border:1px solid #cccfd9; + background:white; +} +KbdTable{ + color:#666666; + outline:0px; + border: 1px solid #cccfd9; + alternate-background-color: #f4f8fb; + background-color:white; +} +KbdTable::item{ + outline:0px; + height:28px; +} +KbdTable::item:selected { + background-color: rgba(9,106,228,38); + color:#096ae4; +} +QListView{ + background:white; + color: #333333; + outLine:0px; + border:1px solid #cccfd9; +} +QListView::item:hover, +QListView::item:selected{ + background-color: rgba(9,106,228,38); + color:#096ae4; +} +QListView::item:!enabled{ + color:#999999; +} + +QToolButton,QToolButton:unchecked { /* ToolBar里的按钮和带下拉菜单的按钮 */ + border-width: 1px; + border-radius: 3px; + background-color: transparent; + width: 28px; + height: 28px; +} +QAbstractSpinBox::up-button { + height:4px; +} +QAbstractSpinBox::down-button { + height:4px; +} + +QLabel#SignatureLable{ + background: white; + border:1px; + max-width:490px; + min-height:300px; + font-size:36px; + font-style:italic; + font-weight:Bold; +} \ No newline at end of file diff --git a/resource/fr/style/light/workBench.qss b/resource/fr/style/light/workBench.qss new file mode 100644 index 00000000..5d57b127 --- /dev/null +++ b/resource/fr/style/light/workBench.qss @@ -0,0 +1,368 @@ +/*滚动条样式设计*/ +QScrollArea +{ + background: transparent; +} + +QScrollArea QWidget +{ + background-color: transparent; +} + +#startUpFrame,#ButtonForm QFrame +{ + border: none; +} + +/*界面背景设置*/ +QWidget#localstate +{ + border-image: url(../../resource/zh/workBench/LocalState_background.png); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + background-attachment: fixed; + +} + +/*本机状态界面样式设置*/ +#state_widget QToolButton +{ + border: none; + height: 40px; + min-width: 70px; + padding-top: 45px; + + font-family: "Microsoft YaHei", sans-serif; + font-weight: 400; + font-size: 12px; + color: #038300; + line-height: 14px; + text-align: left; + font-style: normal; + text-transform: none; + + background-color: transparent; + background-repeat: no-repeat; + background-position: center; + background-size: contain; +} + +/*基础服务按钮*/ +#state_widget QToolButton[appId = "1"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/basicApp_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "1"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/basicApp_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "1"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/basicApp_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "1"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/basicApp_unknow.png); + color: #8D8D8D; +} + +/*公共部分*/ +#state_widget QToolButton[appId = "2"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/publicApp_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "2"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/publicApp_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "2"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/publicApp_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "2"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/publicApp_unknow.png); + color: #8D8D8D; +} + +/*通用部分*/ +#state_widget QToolButton[appId = "3"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/generalApp_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "3"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/generalApp_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "3"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/generalApp_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "3"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/generalApp_unknow.png); + color: #8D8D8D; +} + +/*能源管理1*/ +#state_widget QToolButton[appId = "4"][state = "11"], +#state_widget QToolButton[appId = "5"][state = "11"], +#state_widget QToolButton[appId = "6"][state = "11"], +#state_widget QToolButton[appId = "7"][state = "11"], +#state_widget QToolButton[appId = "8"][state = "11"], +#state_widget QToolButton[appId = "9"][state = "11"], +#state_widget QToolButton[appId = "10"][state = "11"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_master.png); + color: #038300; +} +#state_widget QToolButton[appId = "4"][state = "10"], +#state_widget QToolButton[appId = "5"][state = "10"], +#state_widget QToolButton[appId = "6"][state = "10"], +#state_widget QToolButton[appId = "7"][state = "10"], +#state_widget QToolButton[appId = "8"][state = "10"], +#state_widget QToolButton[appId = "9"][state = "10"], +#state_widget QToolButton[appId = "10"][state = "10"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_back.png); + color: #0485FF; +} +#state_widget QToolButton[appId = "4"][state = "01"], +#state_widget QToolButton[appId = "5"][state = "01"], +#state_widget QToolButton[appId = "6"][state = "01"], +#state_widget QToolButton[appId = "7"][state = "01"], +#state_widget QToolButton[appId = "8"][state = "01"], +#state_widget QToolButton[appId = "9"][state = "01"], +#state_widget QToolButton[appId = "10"][state = "01"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_stop.png); + color: #FF0000; +} +#state_widget QToolButton[appId = "4"][state = "00"], +#state_widget QToolButton[appId = "5"][state = "00"], +#state_widget QToolButton[appId = "6"][state = "00"], +#state_widget QToolButton[appId = "7"][state = "00"], +#state_widget QToolButton[appId = "8"][state = "00"], +#state_widget QToolButton[appId = "9"][state = "00"], +#state_widget QToolButton[appId = "10"][state = "00"] +{ + background-image: url(../../resource/zh/workBench/localState/energyMng_unknow.png); + color: #8D8D8D; +} + +#customWidget QToolButton ,#boxWidget QToolButton +{ + min-width: 110px; + border :none; + background-color: #F2F8FF; + + font-family:"Microsoft YaHei", sans-serif; + font-weight: 400; + font-size: 12px; + color: #004882; + line-height: 14px; + text-align: center; + font-style: normal; + text-transform: none; +} +#customWidget QToolButton:hover ,#boxWidget QToolButton:hover, +#state_widget QToolButton:hover +{ + background-color: #C1DCFE; +} + +#StartUpForm QPushButton +{ + border: none; + border-radius: 0px 0px 0px 0px; + + background-repeat: no-repeat; + background-position: center; + background-size: cover; + background-attachment: fixed; +} + +QPushButton#btn_start +{ + background-image: url(../../resource/zh/workBench/stop_state.png); +} +QPushButton#btn_start:hover , QPushButton#btn_start:pressed +{ + background-image: url(../../resource/zh/workBench/stop_state_hover.png); +} + +QPushButton#btn_stop +{ + background-image: url(../../resource/zh/workBench/run_state.png); +} +QPushButton#btn_stop:hover , QPushButton#btn_stop:pressed +{ + background-image: url(../../resource/zh/workBench/run_state_hover.png); +} + +QPushButton#btn_sysState +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_state.png); +} +QPushButton#btn_sysManage +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_mng.png); +} +QPushButton#btn_sysProcess +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_process.png); +} +QPushButton#btn_sysSetting +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_setting.png); +} +QPushButton#btn_sysTool +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_tools.png); +} + +/*菜单按钮按下后样式*/ +QPushButton#btn_sysState:pressed,QPushButton#btn_sysState:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_state_pressed.png); +} + +QPushButton#btn_sysManage:pressed,QPushButton#btn_sysManage:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_mng_pressed.png); +} + +QPushButton#btn_sysProcess:pressed,QPushButton#btn_sysProcess:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_process_pressed.png); +} + +QPushButton#btn_sysSetting:pressed,QPushButton#btn_sysSetting:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_set_pressed.png); +} +QPushButton#btn_sysTool:pressed,QPushButton#btn_sysTool:checked +{ + background-image: url(../../resource/zh/workBench/menu_button/sys_tool_pressed.png); +} + +#StatusForm QLabel +{ + font-family:"Microsoft YaHei", sans-serif; + font-weight: 400; + font-size: 14px; + color: #131313; + line-height: 16px; + text-align: center; + font-style: normal; + text-transform: none; +} + +#StatusForm QLabel[state = "1" ] +{ + color: #038300; + font-weight: bold; +} + +#StatusForm QLabel[state = "2" ] +{ + color: #FF0000; + font-weight: bold; +} + +QLabel#titleLabel +{ + min-height: 22px; + font-family:"Microsoft YaHei", sans-serif; + font-weight: bold; + font-size: 14px; + color: #004882; + line-height: 16px; + text-align: left; + font-style: normal; + text-transform: none; +} + +/*系统设置样式设计*/ +QLabel[type = 'titleComm'], .ButtonForm QLabel +{ + font-family: "Microsoft YaHei", sans-serif; + font-weight: bold; + font-size: 14px; + color: #0B92FF; + line-height: 16px; + text-align: left; + font-style: normal; + text-transform: none; +} + +#SystemSetForm QToolButton +{ + background: #0B92FF; + border-radius: 0px 0px 0px 0px; + + font-family: "Microsoft YaHei", sans-serif; + font-weight: bold; + font-size: 12px; + color: #FFFFFF; + line-height: 14px; + text-align: center; + font-style: normal; + text-transform: none; +} + +#SystemSetForm QToolButton:hover , #SystemSetForm QToolButton:pressed +{ + background-color: #53b1fc; +} +QToolButton#btn_Save +{ + height: 40px; + min-width: 70px; + padding-top: 37px; + + background-color: transparent; + image: url(../../resource/zh/workBench/rightShift.png); + padding: 3px; +} + +QToolButton#btn_Delete +{ + height: 40px; + min-width: 70px; + padding-top: 37px; + + background-color: transparent; + image: url(../../resource/zh/workBench/leftShift.png); + padding: 3px; +} + +CheckBoxDialog,InputDialog +{ + min-width: 330px; + min-height: 190px; +} + +QTabBar::tab +{ + min-width: 150px; +} +MenuFrame QPushButton{ + min-height: 55px; + min-width: 65px; +} + +QStatusBar +{ + max-height: 1px; +} \ No newline at end of file diff --git a/resource/fr/style/public.qsst b/resource/fr/style/public.qsst new file mode 100644 index 00000000..5ff27ee7 --- /dev/null +++ b/resource/fr/style/public.qsst @@ -0,0 +1,1267 @@ +/*ɫ*/ +$main1 = #5DA5FB; +$main2 = #4B6D97; +$main3 = #001220; +$main4 = #033d67; +$main5 = #0E1D41; +$main6 = #b3d7f9; +$hoverColor = #00d3ff; +$background = transparent; +$border = #6088BA; +$grad1a = #39495C; +$grad1b = #0d3756; +$text1 = #FFFFFF; +$Disable_text = #ABABAB; +$Tip_text = #ACB3BF; +$diabled = #ABABAB; +$menu_background = #4E709A; + +QWidget +{ + font: 20px "Microsoft YaHei"; + color: $text1; + background:transparent; + outline:none; +} + +QWidget:disabled +{ + color:$Disable_text; + border-color: $diabled; +} + +QFrame{ + color: $text1; + background-color: $background;/*Ϊtransparent*/ +} + +QDialog { + background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgba(42, 66, 99, 1), stop:1 rgba(68, 105, 155, 1)); + border-radius: 0px; + box-shadow: none !important; +} + +QMainWindow::separator{ + border: 0px solid $border; + border-style: outset; + width: 5px; + height: 5px; +} +QMainWindow::separator:hover{ + background: $main1; +} +QSplitter::handle{ + border: 0px solid $border; + width: 5px; + height: 5px; +} +QSplitter::handle:hover{ +/*splitter->handle(1)->setAttribute(Qt::WA_Hover, true);Ч*/ + border-color: $main1; + background-color: $main1; +} +QSplitter::handle:pressed{ + border-color: $main1; + background-color: $main4; +} +QSizeGrip{ + background-color: none; +} + +/* =============================================== */ +/* Label */ +/* =============================================== */ +QLabel { + background: transparent; + border: 0px solid transparent; + padding: 1px; +} + + +/* A QLabel is a QFrame ... */ +/* A QToolTip is a QLabel ... */ +QToolTip { + border: 2px solid $border; + border-radius: 3px; + opacity:210; +} + + + + /* =============================================== */ +/* QComboBox */ +/* =============================================== */ +QComboBox{ + background: $background; + selection-background-color:$main1; + selection-color:$text1; + border: 2px solid $border; + border-radius: 0px; + padding: -2 10 -2 10px; + height:40px; +} + +QComboBox:hover +{ + border-color: $main1; +} + +QComboBox:focus { + border-color: $main1; +} + +QComboBox QAbstractItemView +{ + min-width: 200px; + background:$menu_background; + selection-background-color: $main1; + selection-color:$text1; + /*alternate-background-color: $main5;*/ + border: 2px solid $border; + padding: 10px 0px 10px 0px; +} + +QComboBox QAbstractItemView::item:selected:active { + background: transparent; + color: $text1; +} + +QComboBox::drop-down { + border-image:url(../../resource/zh/public/dark/icon/box-down-normal.png); + margin-right: 10px; + height:9px; + width:14px; + subcontrol-origin: margin; + subcontrol-position: center right; +} + +QComboBox::drop-down:hover{ + border-image:url(../../resource/zh/public/dark/icon/box-down-select.png); +} + +QComboBox::drop-down:open:!hover { + border-image:url(../../resource/zh/public/dark/icon/box-down-normal.png); +} + +QComboBox::drop-down:open:hover { + border-image:url(../../resource/zh/public/dark/icon/box-down-select.png); +} + +QComboBox::drop-down:disabled { + border-image:url(../../resource/zh/public/dark/icon/box-down-disable.png); +} + +/* =============================================== */ +/* QMenu */ +/* =============================================== */ +QMenu +{ + min-width: 200px; + background:$menu_background; + padding: 10px 0px 10px 0px; +} + +QAction { + min-width: 240px; + height:40px; + color:$text1; + background:$menu_background; + padding: 0px 20px 0px 20px; +} + +QAction:hover { + font-weight: bold; + color:$text1; + background-color: $main1; +} + +QMenu::item{ + min-width: 200px; + height:40px; + color:$text1; + background:$background; + border: 2px solid transparent; + padding: 0px 20px 0px 20px; +} +QMenu::item:hover{ + font-weight: bold; + color:$text1; + background:$main1; +} + +QMenu::item:disabled,QMenu::item:disabled:selected,QMenu::item:disabled:pressed{ + + color: $Disable_text; + background: $background; +} + +QMenu::item#editBatch{ + min-width: 150px; +} + +QMenu::item:selected{ + color:$text1; + background:$main1; +} + +QMenu::item:pressed { + font-weight: bold; + color:$text1; + background:$main1; +} + +QMenu#contextMenu{ + min-width:240px; +} + + +/* =============================================== */ +/* TextBox */ +/* =============================================== */ +QLineEdit { + background: $background;/*Ϊ͸table༭ʱʾ*/ + selection-background-color: $main1; + selection-color:$text1; + border: 2px solid $border; + border-radius: 0px; + padding: 3px 10px 4px 10px; + max-height:40px; +} + +QLineEdit:hover{ + border-color: $main1; +} + +QLineEdit:focus{ + border-color: $main1; +} +/*QLineEdit[readOnly="true"] { color: gray }*/ +QLineEdit[echoMode="2"]{ + lineedit-password-character: 9679;/*ַascii35 88 */ +} + +QLineEdit:read-only { + color: $text1; +} + +QLineEdit:disabled{ + color:$Disable_text; +} + +QLineEdit[placeholderText] +{ + color: $Tip_text; + font-size: 20px; +} + +QTextEdit{ + selection-background-color:$main1; + selection-color:$text1; + border: 2px solid $border; + +} +QTextEdit:hover{ + border-color: $main1; +} +QTextEdit:focus{ + border-color: $main1; +} +/* =============================================== */ +/* Button */ +/* =============================================== */ +QPushButton { + border: 2px solid $border; + background-color:$background; + radius:0px; + padding: -2px 10px -2px 10px; + min-height: 40px; +} + +QPushButton:hover{ + background-color: $main1; + border-color: $main1; +} + +QPushButton:pressed +{ + font-weight: bold; + background-color: $main1; +} + +QPushButton:focus,QPushButton:default { + + border-color: $main1; /* make the default button prominent */ +} + +QToolBar{ + border: 1px solid $border; + spacing: 0px; +} + +QToolBar::separator:horizontal { + background:$border; + width: 1px; +} + +QToolBar::separator:vertical { + background:$border; + height: 1px; +} + +QToolButton,QToolButton:unchecked { /* ToolBarİťʹ˵İť */ + border: 2px solid $border; + background-color:$background; + radius:0px; + padding: 3px 2px 3px 3px; +} +QToolButton:checked{ + font-weight: bold; + background-color: $main1; +} +QToolButton:hover{ + background-color: $main1; + border-color: $main1; +} + +QToolButton:pressed,QToolButton:checked:hover{ + font-weight: bold; + background-color: $main1; +} +QToolButton:checked:pressed{ + font-weight: bold; + background-color: $main1; +} + + +/* only for MenuButtonPopup */ +QToolButton[popupMode="1"]{ + padding-left: 1px; + padding-right: 15px; /* make way for the popup button */ + border: 2px solid $border; + min-height: 15px; + /*background: qlineargradient(x1:0, y1:0 ,x2:0, y2:1 + stop: 0 $grad1a, stop: 0.05 $grad1b, stop: 0.5 $grad1b + stop: 0.95 $grad1a stop: 1$grad1a)*/ +} +QToolButton[popupMode="1"]:hover{ + border-width: 1px; + background-color: $main1; + border-color: $main1; +} + +QToolButton::menu-button { + border: 2px solid $border; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + width: 16px; +} + +QToolButton::menu-button:hover { + border: 2px solid $main1; +} + +QToolButton::menu-button:pressed { + border: 2px solid $border; +} + +QToolButton QMenu +{ + selection-background-color: $main1; + selection-color:$main3; + background: $background; + border: 2px solid $border; + padding: 10px 0px 10px 0px; +} + +QToolButton QMenu::item +{ + height:30px; + background: $background; + border: 2px solid transparent; + padding: 0px 20px 0px 20px; +} + +/* =============================================== */ +/* QRadioButton */ +/* =============================================== */ +QRadioButton { + height: 28px; +} + +QRadioButton:hover{ + color:$main1; +} + + +QRadioButton::indicator{ + width: 14px; + height: 14px; +} + +QRadioButton::indicator::unchecked{ + border-image:url(../../resource/zh/public/dark/icon/rkb-normal.png); +} + +QRadioButton::indicator:unchecked:hover { + border-image:url(../../resource/zh/public/dark/icon/rkb-hover.png); +} + +QRadioButton::indicator:unchecked:pressed { + border-image:url(../../resource/zh/public/dark/icon/rkb-hover.png); +} + +QRadioButton::indicator:unchecked:disabled { + border-image:url(../../resource/zh/public/dark/icon/rkb-disable.png); +} + +QRadioButton::indicator::checked{ + border-image:url(../../resource/zh/public/dark/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:hover { + border-image:url(../../resource/zh/public/dark/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:pressed { + border-image:url(../../resource/zh/public/dark/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:disabled { + border-image:url(../../resource/zh/public/dark/icon/rkb-select-disable.png); +} + +/* =============================================== */ +/* QCheckBox */ +/* =============================================== */ +QCheckBox{ + color:$text1; +} + +QCheckBox::hover { + color:$main1; +} + +QCheckBox::indicator{ + width: 14px; + height: 14px; +} + + +QCheckBox::indicator::unchecked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-normal.png); +} + +QCheckBox::indicator:unchecked:hover { + border-image:url(../../resource/zh/public/dark/icon/ckb-uncheck-hover.png); +} + +QCheckBox::indicator:unchecked:pressed { + border-image:url(../../resource/zh/public/dark/icon/ckb-uncheck-hover.png); +} + +QCheckBox::indicator:unchecked:disabled { + border-image:url(../../resource/zh/public/dark/icon/ckb-disable.png); +} + +QCheckBox::indicator::checked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:hover { + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:pressed { + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:disabled { + border-image:url(../../resource/zh/public/dark/icon/ckb-select-disable.png); +} + +QCheckBox::indicator:indeterminate { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck.png); +} + +QCheckBox::indicator:indeterminate:hover { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck-hover.png); +} + +QCheckBox::indicator:indeterminate:pressed { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck-hover.png); +} + +QCheckBox::indicator:indeterminate:disabled { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck-disable.png); +} + +/* =============================================== */ +/* Slider ProgressBar */ +/* =============================================== */ +QProgressBar { + border: 2px solid $border; + border-radius: 4px; + text-align: center; +} + +QProgressBar::chunk { + background-color: $main6; + width: 4px; + margin: 1px; +} + +QSlider{ + border: 2px solid transparent; +} + +QSlider::disabled{ + border: 2px solid transparent; +} + +QSlider::groove{ + border: 1px solid $border; + /*background: $background;*/ +} +QSlider::handle {/*мǸļ*/ + border: 1px solid $border; + background: $main1; +} +QSlider::groove:horizontal { + height: 3px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */ + left:5px; right: 5px; +} +QSlider::groove:vertical{ + width: 3px; + top: 5px; bottom: 5px; +} +QSlider::handle:horizontal{ + width: 6px; + margin: -7px; /* height */ +} +QSlider::handle:vertical{ + height: 6px; + margin: -7px; /* height */ +} +QSlider::add-page{/*ûлȥĵط*/ + border: 2px solid $border; + background:$main2; +} +QSlider::sub-page{/*ѾĴӵط*/ + background: $main1; +} + +/* =============================================== */ +/* ScrollBar */ +/* =============================================== */ +QScrollBar{ + background-color: $background; + border: 1px solid $border; + border-radius: 0px; + padding: 1px; + margin:0px; + height: 15px; + width: 15px; +} + +QScrollBar::handle{ + border-color:$border; + radius: 0px; + background: $border; + min-width: 10px; + min-height: 10px; +} +QScrollBar::handle:hover { + background: $main1; +} +QScrollBar::add-line, QScrollBar::sub-line, +QScrollBar::add-page, QScrollBar::sub-page { + width: 0px; + background: transparent; +} +QScrollArea{ + border: none; +} +/*QScrollArea QAbstractSlider{ + border-radius: 0px; +}*/ + + + +/* =============================================== */ +/* GroupBox */ +/* + left: 6px; + top:-30px; + background-color: $background; +/* =============================================== */ +QGroupBox { + background-color: $background; + border: 1px solid $border; + padding:0px 0px 0px 0px; + margin-top: 30px; +} + +QGroupBox:disabled{ + border: 2px solid $Disable_text; +} + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + left:20px; + background-color: transparent; +} +QGroupBox::indicator::unchecked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-normal.png); +} +QGroupBox::indicator::checked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} +QGroupBox::indicator:indeterminate { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck.png); +} + + +/* =============================================== */ +/* ToolBox */ +/* =============================================== */ +QToolBox{ + border: 2px solid $border; +} +QToolBox::tab { + background: transparent; + border: 1px solid $border; +} +QToolBox::tab:hover { + background-color: $main2; + border-color: $main1; +} +QToolBox::tab:pressed { + font-weight: bold; + color:$text1; + background-color: $main2; + border: 2px solid $main1; +} +QToolBox::tab:selected { + font-weight: bold; + color:$text1; + background-color: $main2; + border: 2px solid $main1; +} + +/* =============================================== */ +/* QTabBar */ +/* =============================================== */ +QTabWidget{ + /*margin-top:10px;*/ + +} +QTabWidget::pane{ + border: 2px solid $border; +} +QTabWidget::tab-bar { + left: 0px; +} +QTabBar::tab { + color:$text1; + background: $background; + border: 0px solid $border; + padding: 0px 10px 0px 10px; + min-height:38px; +} +QTabBar::tab:hover { + background: $main1; + border-color: transparent; +} +QTabBar::tab:selected { + background: $main1; + color:$text1; +} +QTabBar::tab:pressed { + font-weight: bold; + background: $main1; + border-color: $main1; + color:$text1; +} +QTabBar::tab:disabled { + color:$Disable_text; +} + +QTabBar::tab:focus { + border-color: $main1; +} +QTabBar::tab:top{ + border-top:0px; + border-left:0px; + border-right:0px; + border-bottom:0px solid transparent; +} + +QTabBar::tab:top:selected{ + border-top:0px; + border-left:0px; + border-right:0px; + border-bottom:2px solid $main1; +} + +QTabBar::tab:bottom{ + width:80px; + height:30px; + border-top:2px solid transparent; + border-left:0px; + border-right:0px; + border-bottom:0px; + +} + +QTabBar::tab:bottom:selected{ + border-top:2px solid $main1; + border-left:0px; + border-right:0px; + border-bottom:0px; +} + +QTabBar::tab:right{ + height:80px; + border-top:0px; + border-bottom:0px; + border-right:0px; + border-left:2px solid transparent; + +} + +QTabBar::tab:right:selected{ + height:80px; + border-top:0px; + border-bottom:0px; + border-right:0px; + border-left:2px solid $main1; + +} +QTabBar::tab:left{ + height:80px; + border-top:0px; + border-bottom:0px; + border-left:0px; + border-right:2px solid transparent; + +} + +QTabBar::tab:left:selected{ + height:80px; + border-top:0px; + border-bottom:0px; + border-left:0px; + border-right:2px solid $main1; +} + + +QTabWidget::pane +{ + border:1px solid $border; + padding:6px; +} + + +/* =============================================== */ +/* QHeaderView for list table */ +/* =============================================== */ +QHeaderView { + background-color: $main2; + border: none; + margin: -2px; + padding: 0px; + height:40px; +} +QHeaderView::section, QTableCornerButton::section {/*ñͷ*//*Ͻ*/ + background-color: $main2; + padding: 0px 10px 0px 10px; + min-height: 40px; + border-top: 0px solid $border; + border-left: 0px solid $border; + border-right: 2px solid $border; + border-bottom: 2px solid $border; + border-radius: 0px; +} +QHeaderView::section:hover, QTableCornerButton::section:hover{ + /*background-color: $main4;*/ +} +QHeaderView::section:pressed{ + background-color: $main1; + color:$text1; +} +QHeaderView::section:checked { + background-color: $main2; + color:$text1; +} + +QHeaderView::down-arrow +{ + subcontrol-position:center right; + padding-right:10px; + image:url(../../resource/zh/public/dark/icon/box-down-normal.png); +} + +QHeaderView::up-arrow +{ + subcontrol-position:center right; + padding-right:10px; + image:url(../../resource/zh/public/dark/icon/box-up-normal.png); +} + +/* =============================================== */ +/* QAbstractItemView */ +/* =============================================== */ +QAbstractItemView +{ + show-decoration-selected:1; + selection-background-color:$main1; /*ѡʱɫ*/ + selection-color:$text1; /*ѡʱǰɫɫ*/ + /*ýɫҪں:tableWidget->setAlternatingRowColors(true)*/ + alternate-background-color: $background; + background: $background; + color:$text1; + border: 2px solid $border; +} + +QAbstractItemView::item +{ + background: $background; + radius:0px; + min-height:30px; + border: 0px; + padding: 0px; +} + +QAbstractItemView::item:hover{ + color: $hoverColor; +} + +QAbstractItemView::item:pressed{ + color: $text1; + background:$main1; +} + +QAbstractItemView::item:selected:focus { + background: $main1; + color: $text1; +} + +QAbstractItemView::item:selected:!focus { + background: $main1; + color: $text1; +} + +QAbstractItemView::item:selected:active { + background: $main1; + color: $text1; +} + +QAbstractItemView QCheckBox::hover{ + + background: $main1; +} + +QAbstractItemView QCheckBox::pressed{ + color: $text1; + background:$main1; +} + +QAbstractItemView QCheckBox::focus{ + color:$text1; + background: $main1; +} + +QAbstractItemView QCheckBox::selected:focus { + background: $main1; + color: $text1; +} + +QAbstractItemView QCheckBox::selected:!focus { + background: $main1; + color: $text1; +} + +QAbstractItemView QCheckBox::selected:active { + background: $main1; + color: $text1; +} + +QAbstractItemView::indicator::unchecked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-normal.png); +} + + +QAbstractItemView::indicator::checked{ + border-image:url(../../resource/zh/public/dark/icon/ckb-select-hover.png); +} + +QAbstractItemView::indicator:indeterminate { + border-image:url(../../resource/zh/public/dark/icon/ckb-ptck.png); +} + +QAbstractItemView::branch{ + background-color: $background; +} + +QAbstractItemView::branch:alternate +{ + alternate-background-color: $main1; +} + + +QAbstractItemView::branch:hover{ + background: $main1; +} + +QAbstractItemView::branch:pressed{ + color: $text1; + background:$main1; +} + +QAbstractItemView::branch:focus{ + color:$text1; + background: $main1; +} + +QAbstractItemView::branch:selected:focus { + background: $main1; + color: $text1; +} + +QAbstractItemView::branch:selected:!focus{ + background: $main1; + color: $text1; +} + +QAbstractItemView::branch:selected:active { + background: $main1; + color: $text1; +} + + +/* =============================================== */ +/* QListView QListWidget */ +/* =============================================== */ +QListWidget, QListView +{ + gridline-color: $border; /*еɫ*/ + border:2px solid $border; /*߿ߵĿȡɫ*/ + /*border:none;*/ /*ȥ߽*/ + /*border-radius:5px;*/ + /*padding:10px 10px;*/ /*߿ļ*/ +} + +QListView::item, QListWidget::item{ + background: transparent; + outline-style: none; + border: none; + padding: 0px 10px 0px 10px; +} + +/* =============================================== */ +/* QTableWidget */ +/* =============================================== */ +QTableWidget, QTableView +{ + gridline-color: $grad1a; /*еɫ*/ + border:2px solid $border; /*߿ߵĿȡɫ*/ + /*border:none;*/ /*ȥ߽*/ + /*border-radius:5px;*/ + /*padding:10px 10px;*/ /*߿ļ*/ +} +QTableView::item, QTabWidget::item{ + background: transparent; + outline-style: none; + border: none; +} + +QTableView QLineEdit, +QTableWidget QLineEdit, +QTreeWidget QLineEdit, +QTreeView QLineEdit +{ + background: $main2; + border-radius: 0px; + padding: 0px; +} + +QTableWidget QComboBox , +QTableView QComboBox, +QTreeWidget QComboBox, +QTreeView QComboBox +{ + background: $main2; + border: 0px; + border-radius: 0px; + margin: 0px; + height:30px; +} + +QTableWidget QPushButton , +QTableView QPushButton, +QTreeWidget QPushButton, +QTreeView QPushButton +{ + min-height: 30px; +} + + + +/* =============================================== */ +/* QTreeWidget QTreeView */ +/* =============================================== */ +QTreeWidget, QTreeView +{ + background:$background; +} +QTreeWidget::item, QTreeView::item{ + background: $background; + outline-style: none; + border: none; +} + + +QTreeWidget::branch,QTreeView::branch { + background: $background; +} + +QTreeWidget::branch:hover,QTreeView::branch:hover{ + background: $background; +} + +QTreeWidget::branch:pressed,QTreeView::branch:pressed{ + color: $text1; + background:$main1; +} + +QTreeWidget::branch:focus,QTreeView::branch:focus{ + color:$text1; + border-color: $main1; +} + +QTreeWidget::branch:selected:focus,QTreeView::branch:selected:focus { + background: $main1; + color: $text1; +} + +QTreeWidget::branch:selected:!focus,QTreeView::branch:selected:!focus{ + background: $main1; + color: $text1; +} + +QTreeWidget::branch:selected:active,QTreeView::branch:selected:active { + background: $main1; + color: $text1; +} + +QTreeView::branch { + width:9px; + height:9px; + background-repeat: no-repeat; + background-position: center; +} + +QTreeView::branch:closed:has-children { + image:url(../../resource/zh/public/dark/icon/arrowRight.png); +} + +QTreeView::branch:closed:has-children:hover { + image:url(../../resource/zh/public/dark/icon/arrowRight.png); +} + +QTreeView::branch:open:has-children { + image:url(../../resource/zh/public/dark/icon/arrowBottom.png); +} + +QTreeView::branch:open:has-children:hover { + image:url(../../resource/zh/public/dark/icon/arrowBottom.png); +} + +/* =============================================== */ +/* QAbstractSpinBox spinbox QDateTimeEdit */ +/* =============================================== */ +QAbstractSpinBox { + background: $background;/*Ϊ͸table༭ʱʾ*/ + selection-background-color:$main1; + selection-color:$text1; + border: 2px solid $border; + border-radius: 0px; + padding: 0 0 0 0px; + height:40px; +} + +QAbstractSpinBox:hover { + border-color: $main1; +} + +QAbstractSpinBox:focus { + border-color: $main1; + +} + +/*SpinBoxϰťʽ*/ +QAbstractSpinBox::up-button { +margin: 5px 5px 5px 5px; + height:9px; + width:14px; + image:url(../../resource/zh/public/dark/icon/box-up-normal.png); + } + +QAbstractSpinBox::up-button:hover { + image:url(../../resource/zh/public/dark/icon/box-up-select.png); + } + +QAbstractSpinBox::up-button:pressed { + image:url(../../resource/zh/public/dark/icon/box-up-select.png); + + } + +QAbstractSpinBox::up-button:disabled{ + image:url(../../resource/zh/public/dark/icon/box-up-disable.png); + + } + +/*SpinBox°ťʽ*/ +QAbstractSpinBox::down-button { + margin: 5px 5px 5px 5px; + height:9px; + width:14px; + image:url(../../resource/zh/public/dark/icon/box-down-normal.png); + } + +QAbstractSpinBox::down-button:hover{ + image:url(../../resource/zh/public/dark/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:pressed{ + image:url(../../resource/zh/public/dark/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:disabled{ + image:url(../../resource/zh/public/dark/icon/box-down-disable.png); + +} + +QDateTimeEdit::drop-down { + subcontrol-origin: padding; + subcontrol-position: right center; + width: 30px; + background-color: transparent; + image:url(../../resource/zh/public/dark/icon/calendar.png); +} + + +/* =============================================== */ +/* QCalendarWidget */ +/* =============================================== */ +QCalendarWidget QWidget{ + border: none; + background-color: $menu_background; + color:$text1; +} + +QCalendarWidget QWidget#qt_calendar_calendarview{ + border-left: 1px solid $border; + border-right: 1px solid $border; + border-bottom: 1px solid $border; + background-color: $menu_background; +} + +QCalendarWidget QWidget#qt_calendar_navigationbar { + background-color: $main2; + border: 2px solid $border; +} + + +QCalendarWidget QMenu{ + width: 80px; + background-color: $menu_background; + border: 0px; + color:$main1; +} + + +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: transparent; +} + +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: transparent; +} + + +QCalendarWidget QAbstractSpinBox { + background: $background; + selection-background-color: $main1; + border: 2px solid $border; + border-radius: 0px; + padding: 0 10 0 10px; + height:30px; +} + +QCalendarWidget QAbstractSpinBox:hover { + background-color: $main1; +} + +QCalendarWidget QAbstractSpinBox:focus { + background-color: $main1; +} + +QCalendarWidget QToolButton:pressed,QCalendarWidget QToolButton:checked:hover{ + color:$main1; +} + + +QCalendarWidget QToolButton#qt_calendar_prevmonth{ + width: 40px; + qproperty-icon: url(../../resource/zh/public/dark/icon/arrowLeft.png); + background-color: transparent; +} + +QCalendarWidget QToolButton#qt_calendar_nextmonth { + width: 40px; + qproperty-icon: url(../../resource/zh/public/dark/icon/arrowRight.png); + background-color: transparent; +} + +QCalendarWidget QToolButton#qt_calendar_monthbutton { + background-color: transparent; +} + +QCalendarWidget QAbstractItemView +{ + selection-background-color:$main1; /*ѡʱɫ*/ + selection-color:$text1; /*ѡʱǰɫɫ*/ + /*ýɫҪں:tableWidget->setAlternatingRowColors(true)*/ + alternate-background-color: $main2; + background: $background; + border: 2px solid $border; +} + +/* =============================================== */ +/* searchButton */ +/* =============================================== */ +QPushButton#searchButton{ + background:transparent; + min-height:22px; + max-width:22px; + border:none; + margin-left:0px; + padding: 0 5 0 5px; + image:url(../../resource/zh/public/dark/icon/search.png); +} + +QLineEdit#searchTextEdit { + border:none; + background:transparent; +} + +QWidget#searchWidget { + border:2px solid $main1; + background:$main2; + max-height: 40px; +} + + + diff --git a/resource/fr/style/样式模板.qsst b/resource/fr/style/样式模板.qsst new file mode 100644 index 00000000..4d26f47b --- /dev/null +++ b/resource/fr/style/样式模板.qsst @@ -0,0 +1,1163 @@ +/*深色*/ +$main1 = #00f0ff; +$main2 = #104366; +$main3 = #001220; +$main4 = #033d67; +$main5 = #001d46; +$main6 = #b3d7f9; +$background = #032448; +$border = #0070a2; +$grad1a = #072d48; +$grad1b = #0d3756; +$text1 = #00b0ff; +$text2 = #5783ae; +$diabled = #325371; +$path = dark; +QWidget +{ + font: 10pt "Microsoft YaHei"; + color: $text1; + background:$background; + outline:none; +} + +QWidget:disabled +{ + color:$text2; + border-color: $diabled; +} + +QFrame{ + color: $text1; + background-color: $background;/*不能设置为transparent*/ +} + +QMainWindow::separator{ + border: 1px solid $border; + border-style: outset; + width: 4px; + height: 4px; +} +QMainWindow::separator:hover{ + background: $main4; +} +QSplitter::handle{ + border: 0px solid $border; + width: 4px; + height: 4px; +} +QSplitter::handle:hover{/*splitter->handle(1)->setAttribute(Qt::WA_Hover, true);才生效*/ + border-color: $main1; + background-color: $main4; +} +QSplitter::handle:pressed{ + border-color: $main1; + background-color: $main4; +} +QSizeGrip{ + background-color: none; +} + +/* =============================================== */ +/* Label */ +/* =============================================== */ +QLabel { + background: transparent; + border: 0px solid transparent; + padding: 1px; +} + + +/* A QLabel is a QFrame ... */ +/* A QToolTip is a QLabel ... */ +QToolTip { + border: 1px solid $border; + border-radius: 3px; + opacity:210; +} + + + +/* =============================================== */ +/* QMenu */ +/* =============================================== */ +QMenu +{ + background:$background; + border: 1px solid $border; + padding: 10px 0px 10px 0px; +} + +QMenu::item{ + min-width: 80px; + height:30px; + color:$text1; + background:$background; + border: 1px solid transparent; + padding: 0px 20px 0px 20px; +} +QMenu::item:hover{ + color:$text1; + background:$main4; +} + +QMenu::item:disabled,QMenu::item:disabled:selected,QMenu::item:disabled:pressed{ + + color: $text2; + background: $background; +} + +QMenu::item#editBatch{ + min-width: 150px; +} + +QMenu::item:selected{ + color:$text1; + background:$main4; +} + +QMenu::item:pressed { + color:$main1; + background:$main4; +} + +QMenu#contextMenu{ + min-width:240px; +} + + +/* =============================================== */ +/* TextBox */ +/* =============================================== */ +QLineEdit { + background: $background;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color: $main1; + selection-color:$background; + border: 1px solid $border; + border-radius: 4px; + padding: 0 0 0 0px; + height:30px; +} + +QLineEdit:hover{ + border-color: $main1; +} +QLineEdit:focus{ + border-color: $main1; +} +/*QLineEdit[readOnly="true"] { color: gray }*/ +QLineEdit[echoMode="2"]{ + lineedit-password-character: 9679;/*字符的ascii码35 88等 */ +} + +QLineEdit:read-only { + color: $text2; +} + +QLineEdit:disabled{ + color:$text2; +} + +QTextEdit{ + selection-background-color:$main1; + selection-color:$background; + border: 1px solid $border; + +} +QTextEdit:hover{ + border-color: $main1; +} +QTextEdit:focus{ + border-color: $main1; +} +/* =============================================== */ +/* Button */ +/* =============================================== */ +QPushButton { + border: 1px solid $border; + border-radius: 2px; + /*background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 $grad1a, stop: 0.05 $grad1b,stop: 0.5 $grad1b, + stop: 0.9 $grad1a, stop: 1 $grad1a);*/ + radius:4px; + width: 80px; + height: 28px; +} + +QPushButton:hover{ + background-color: $main4; + border-color: $main1; +} + +QPushButton:pressed +{ + color:$main3; + background-color: $main1; +} + +QPushButton:focus,QPushButton:default { + + border-color: $main1; /* make the default button prominent */ +} + +QToolButton,QToolButton:unchecked { /* ToolBar里的按钮和带下拉菜单的按钮 */ + border-width: 1px; + border-radius: 3px; + background-color: transparent; + width: 80px; + height: 28px; +} +QToolButton:checked{ + border-width: 1px; + background-color: $main1; + border-color: $border; + color:$main3; +} +QToolButton:hover{ + border-width: 1px; + background-color: $main4; + border-color: $main1; +} + +QToolButton:pressed,QToolButton:checked:hover{ + background-color: $main1; + color:$main3; +} +QToolButton:checked:pressed{ + border-width: 1px; + background-color: $main1; + border-color: $border; +} + + +/* only for MenuButtonPopup */ +QToolButton[popupMode="1"]{ + padding-left: 1px; + padding-right: 15px; /* make way for the popup button */ + border: 1px solid $border; + min-height: 15px; + /*background: qlineargradient(x1:0, y1:0 ,x2:0, y2:1 + stop: 0 $grad1a, stop: 0.05 $grad1b, stop: 0.5 $grad1b + stop: 0.95 $grad1a stop: 1$grad1a)*/ +} +QToolButton[popupMode="1"]:hover{ + border-width: 1px; + background-color: $main4; + border-color: $main1; +} + +QToolButton::menu-button { + border: 1px solid $border; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + width: 16px; +} + +QToolButton::menu-button:hover { + border: 1px solid $main1; +} + +QToolButton::menu-button:pressed { + border: 1px solid $border; +} + +QToolButton QMenu +{ + selection-background-color: $main1; + selection-color:$main3; + background: $background; + border: 1px solid $border; + padding: 10px 0px 10px 0px; +} + +QToolButton QMenu::item +{ + height:30px; + background: $background; + border: 1px solid transparent; + padding: 0px 20px 0px 20px; +} + +/* =============================================== */ +/* QRadioButton */ +/* =============================================== */ +QRadioButton { + height: 28px; +} + +QRadioButton:hover{ + color:$main1; +} + + +QRadioButton::indicator{ + width: 14px; + height: 14px; +} + +QRadioButton::indicator::unchecked{ + border-image:url(../../resource/zh/public/$path/icon/rkb-normal.png); +} + +QRadioButton::indicator:unchecked:hover { + border-image:url(../../resource/zh/public/$path/icon/rkb-hover.png); +} + +QRadioButton::indicator:unchecked:pressed { + border-image:url(../../resource/zh/public/$path/icon/rkb-hover.png); +} + +QRadioButton::indicator:unchecked:disabled { + border-image:url(../../resource/zh/public/$path/icon/rkb-disable.png); +} + +QRadioButton::indicator::checked{ + border-image:url(../../resource/zh/public/$path/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:hover { + border-image:url(../../resource/zh/public/$path/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:pressed { + border-image:url(../../resource/zh/public/$path/icon/rkb-select-normal.png); +} + +QRadioButton::indicator:checked:disabled { + border-image:url(../../resource/zh/public/$path/icon/rkb-select-disable.png); +} + +/* =============================================== */ +/* QCheckBox */ +/* =============================================== */ +QCheckBox{ + color:$text1; +} + +QCheckBox::hover { + color:$main1; +} + +QCheckBox::indicator{ + width: 14px; + height: 14px; +} + + +QCheckBox::indicator::unchecked{ + border-image:url(../../resource/zh/public/$path/icon/ckb-normal.png); +} + +QCheckBox::indicator:unchecked:hover { + border-image:url(../../resource/zh/public/$path/icon/ckb-uncheck-hover.png); +} + +QCheckBox::indicator:unchecked:pressed { + border-image:url(../../resource/zh/public/$path/icon/ckb-uncheck-hover.png); +} + +QCheckBox::indicator:unchecked:disabled { + border-image:url(../../resource/zh/public/$path/icon/ckb-disable.png); +} + +QCheckBox::indicator::checked{ + border-image:url(../../resource/zh/public/$path/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:hover { + border-image:url(../../resource/zh/public/$path/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:pressed { + border-image:url(../../resource/zh/public/$path/icon/ckb-select-hover.png); +} + +QCheckBox::indicator:checked:disabled { + border-image:url(../../resource/zh/public/$path/icon/ckb-select-disable.png); +} + +QCheckBox::indicator:indeterminate { + border-image:url(../../resource/zh/public/$path/icon/ckb-ptck.png); +} + +QCheckBox::indicator:indeterminate:hover { + border-image:url(../../resource/zh/public/$path/icon/ckb-ptck-hover.png); +} + +QCheckBox::indicator:indeterminate:pressed { + border-image:url(../../resource/zh/public/$path/icon/ckb-ptck-hover.png); +} + +QCheckBox::indicator:indeterminate:disabled { + border-image:url(../../resource/zh/public/$path/icon/ckb-ptck-disable.png); +} + +/* =============================================== */ +/* Slider ProgressBar */ +/* =============================================== */ +QProgressBar { + border: 1px solid $border; + border-radius: 4px; + text-align: center; +} + +QProgressBar::chunk { + background-color: $main6; + width: 4px; + margin: 1px; +} + +QSlider{ + border: 1px solid transparent; +} + +QSlider::disabled{ + border: 1px solid transparent; +} + +QSlider::groove{ + border: 1px solid $border; + background: $background; +} +QSlider::handle {/*设置中间的那个滑动的键*/ + border: 1px solid $border; + background: $main1; +} +QSlider::groove:horizontal { + height: 3px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */ + left:5px; right: 5px; +} +QSlider::groove:vertical{ + width: 3px; + top: 5px; bottom: 5px; +} +QSlider::handle:horizontal{ + width: 6px; + margin: -7px; /* height */ +} +QSlider::handle:vertical{ + height: 6px; + margin: -7px; /* height */ +} +QSlider::add-page{/*还没有滑上去的地方*/ + border: 1px solid $border; + background:$main2; +} +QSlider::sub-page{/*已经划过的从地方*/ + background: $main1; +} + +/* =============================================== */ +/* ScrollBar */ +/* =============================================== */ +QScrollBar{ + background-color: $background; + border: 1px solid $grad1b; + border-radius: 0px; + padding: 1px; + margin:0px; + height: 15px; + width: 15px; +} + +QScrollBar::handle{ + border-color:$border; + radius: 8px; + background: $border; + min-width: 10px; + min-height: 10px; +} +QScrollBar::handle:hover { + background: $main1; +} +QScrollBar::add-line, QScrollBar::sub-line, +QScrollBar::add-page, QScrollBar::sub-page { + width: 0px; + background: transparent; +} +QScrollArea{ + border: none; +} +/*QScrollArea QAbstractSlider{ + border-radius: 0px; +}*/ + +/* =============================================== */ +/* GroupBox */ +/* =============================================== */ +QGroupBox { + background-color: $background; + border: 1px solid $border; + padding:6px; + margin: 12px 0px 0px 0px; +} +QGroupBox::title { + left: 6px; + top:-10px; + background-color: $background; +} +QGroupBox::indicator::unchecked{ + border-image:url(../../resource/zh/public/$path/icon/ckb-normal.png); +} +QGroupBox::indicator::checked{ + border-image:url(../../resource/zh/public/$path/icon/ckb-select-hover.png); +} +QGroupBox::indicator:indeterminate { + border-image:url(../../resource/zh/public/$path/icon/ckb-ptck.png); +} +/* =============================================== */ +/* ToolBox */ +/* =============================================== */ +QToolBox{ + border: 1px solid $border; +} +QToolBox::tab { + background: $main2; + border: 1px solid $border; +} +QToolBox::tab:hover { + background-color: $main4; + border-color: $main1; +} +QToolBox::tab:pressed { + background-color: $main1; + color:$main3; + border-color: transparent; +} +QToolBox::tab:selected { + font-weight: bold; + color:$main1; + background-color: $main4; + border: 1px solid $main1; +} + +/* =============================================== */ +/* QTabBar */ +/* =============================================== */ +QTabWidget{ + /*margin-top:10px;*/ +} +QTabWidget::pane{ + border: 1px solid $border; +} +QTabWidget::tab-bar { + left: 0px; +} +QTabBar::tab { + font-weight:bold; + color:$text1; + min-height:30px; + padding:0 10 0 10px; + background: $background; + border: 1px solid $border; +} +QTabBar::tab:hover { + background: $main4; + border-color: transparent; +} +QTabBar::tab:selected { + background: $main4; + color:$main1; + border-color: $main1; +} +QTabBar::tab:pressed { + background: $main1; + border-color: $main1; + color:$main3; +} +QTabBar::tab:focus { + border-color: $main1; +} +QTabBar::tab:top{ + height:30px; + margin-left:1px; + border-top:0px; + border-left:0px; + border-right:0px; + border-bottom:2px solid transparent; +} + +QTabBar::tab:top:selected{ + border-top:0px; + border-left:0px; + border-right:0px; + border-bottom:2px solid $main1; +} + +QTabBar::tab:bottom{ + width:80px; + height:30px; + border-top:2px solid transparent; + border-left:0px; + border-right:0px; + border-bottom:0px; + +} + +QTabBar::tab:bottom:selected{ + border-top:2px solid $main1; + border-left:0px; + border-right:0px; + border-bottom:0px; +} + +QTabBar::tab:right{ + height:80px; + border-top:0px; + border-bottom:0px; + border-right:0px; + border-left:2px solid transparent; + +} + +QTabBar::tab:right:selected{ + height:80px; + border-top:0px; + border-bottom:0px; + border-right:0px; + border-left:2px solid $main1; + +} +QTabBar::tab:left{ + height:80px; + border-top:0px; + border-bottom:0px; + border-left:0px; + border-right:2px solid transparent; + +} + +QTabBar::tab:left:selected{ + height:80px; + border-top:0px; + border-bottom:0px; + border-left:0px; + border-right:2px solid $main1; +} + + +QTabWidget::pane +{ + border:1px solid $border; + padding:6px; +} + + +/* =============================================== */ +/* QHeaderView for list table */ +/* =============================================== */ +QHeaderView { + background-color: $main2; + border: none; + margin: -1px; + padding: 0px; + height:30px; +} +QHeaderView::section, QTableCornerButton::section {/*设置表头属性*//*左上角*/ + background-color: $main2; + padding: 0 3px; + height: 30px; + border-top: 0px solid $border; + border-left: 0px solid $border; + border-right: 1px solid $border; + border-bottom: 1px solid $border; + border-radius: 0px; +} +QHeaderView::section:hover, QTableCornerButton::section:hover{ + /*background-color: $main4;*/ +} +QHeaderView::section:pressed{ + background-color: $main1; + color:$main3; +} +QHeaderView::section:checked { + background-color: $main2; + color:$text1; +} + +QHeaderView::down-arrow +{ + subcontrol-position:center right; + padding-right:10px; + image:url(../../resource/zh/public/$path/icon/box-down-normal.png); +} + +QHeaderView::up-arrow +{ + subcontrol-position:center right; + padding-right:10px; + image:url(../../resource/zh/public/$path/icon/box-up-normal.png); +} + +/* =============================================== */ +/* QAbstractItemView */ +/* =============================================== */ +QAbstractItemView +{ + show-decoration-selected:1; + selection-background-color:$main4; /*鼠标选中时背景色*/ + selection-color:$main3; /*鼠标选中时前景色:文字颜色*/ + /*设置交替颜色,需要在函数属性中设置:tableWidget->setAlternatingRowColors(true)*/ + alternate-background-color: $main5; + background: $background; + color:$text1; + border: 1px solid $border; +} + +QAbstractItemView::item +{ + radius:0px; + min-height:30px; + border: 0px; + padding: 0px; +} + +QAbstractItemView::item:hover{ + background: $main4; +} + +QAbstractItemView::item:pressed{ + color: $main4; + background:$main4; +} + +QAbstractItemView::item:selected:focus { + background: $main4; + color: $main1; +} + +QAbstractItemView::item:selected:!focus { + background: $main4; + color: $main1; +} + +QAbstractItemView::item:selected:active { + background: $main4; + color: $main1; +} + +QAbstractItemView QCheckBox::hover{ + + background: $main4; +} + +QAbstractItemView QCheckBox::pressed{ + color: $main1; + background:$main4; +} + +QAbstractItemView QCheckBox::focus{ + color:$main1; + background: $main4; +} + +QAbstractItemView QCheckBox::selected:focus { + background: $main4; + color: $main1; +} + +QAbstractItemView QCheckBox::selected:!focus { + background: $main4; + color: $main1; +} + +QAbstractItemView QCheckBox::selected:active { + background: $main4; + color: $main1; +} + +QAbstractItemView::indicator::unchecked{ + border-image:url(../../resource/zh/public/$path/icon/ckb-normal.png); +} + + +QAbstractItemView::indicator::checked{ + border-image:url(../../resource/zh/public/$path/icon/ckb-select-hover.png); +} + +QAbstractItemView::indicator:indeterminate { + border-image:url(../../resource/zh/public/$path/icon/ckb-ptck.png); +} + +QAbstractItemView::branch{ + background-color: $background; +} + +QAbstractItemView::branch:alternate +{ + alternate-background-color: $main5; +} + + +QAbstractItemView::branch:hover{ + background: $main4; +} + +QAbstractItemView::branch:pressed{ + color: $main4; + background:$main4; +} + +QAbstractItemView::branch:focus{ + color:$main1; + background: $main4; +} + +QAbstractItemView::branch:selected:focus { + background: $main4; + color: $main1; +} + +QAbstractItemView::branch:selected:!focus{ + background: $main4; + color: $main1; +} + +QAbstractItemView::branch:selected:active { + background: $main4; + color: $main1; +} + + +/* =============================================== */ +/* QListView QListWidget */ +/* =============================================== */ +QListWidget, QListView +{ + gridline-color: $border; /*表格中的网格线条颜色*/ + border:1px solid $border; /*边框线的宽度、颜色*/ + /*border:none;*/ /*去除边界线*/ + /*border-radius:5px;*/ + /*padding:10px 10px;*/ /*表格与边框的间距*/ +} + +QListView::item, QListWidget::item{ + background: transparent; + outline-style: none; + border: none; + padding: 0px 10px 0px 10px; +} + +/* =============================================== */ +/* QTableWidget */ +/* =============================================== */ +QTableWidget, QTableView +{ + gridline-color: $grad1a; /*表格中的网格线条颜色*/ + border:1px solid $border; /*边框线的宽度、颜色*/ + /*border:none;*/ /*去除边界线*/ + /*border-radius:5px;*/ + /*padding:10px 10px;*/ /*表格与边框的间距*/ +} +QTableView::item, QTabWidget::item{ + background: transparent; + outline-style: none; + border: none; +} + +QTableView QLineEdit +{ + /*background: $background;*/ + border-radius: 0px; + padding: 0px; +} + +QTableWidget QComboBox{ + /*background: $background;*/ + border-radius: 0px; + /*margin: 2px;*/ + border: none; + height:28px; +} + + + +/* =============================================== */ +/* QTreeWidget QTreeView */ +/* =============================================== */ +QTreeWidget, QTreeView +{ + background:$background; +} +QTreeWidget::item, QTreeView::item{ + background: transparent; + outline-style: none; + border: none; +} + + +QTreeWidget::branch,QTreeView::branch { + background-color: $background; +} + +QTreeWidget::branch:hover,QTreeView::branch:hover{ + background: $main4; +} + +QTreeWidget::branch:pressed,QTreeView::branch:pressed{ + color: $main4; + background:$main4; +} + +QTreeWidget::branch:focus,QTreeView::branch:focus{ + color:$main1; + border-color: $main4; +} + +QTreeWidget::branch:selected:focus,QTreeView::branch:selected:focus { + background: $main4; + color: $main1; +} + +QTreeWidget::branch:selected:!focus,QTreeView::branch:selected:!focus{ + background: $main4; + color: $main1; +} + +QTreeWidget::branch:selected:active,QTreeView::branch:selected:active { + background: $main4; + color: $main1; +} + +QTreeView::branch { +width:9px; +height:9px; + background-repeat: no-repeat; + background-position: center; +} + +QTreeView::branch:closed:has-children { + image:url(../../resource/zh/public/$path/icon/arrowRight.png); +} + +QTreeView::branch:closed:has-children:hover { + image:url(../../resource/zh/public/$path/icon/arrowRight.png); +} + +QTreeView::branch:open:has-children { + image:url(../../resource/zh/public/$path/icon/arrowBottom.png); +} + +QTreeView::branch:open:has-children:hover { + image:url(../../resource/zh/public/$path/icon/arrowBottom.png); +} + +/* =============================================== */ +/* QAbstractSpinBox spinbox QDateTimeEdit */ +/* =============================================== */ +QAbstractSpinBox { + background: $background;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color:$main1; + selection-color:$background; + border: 1px solid $border; + border-radius: 4px; + padding: 0 10 0 10px; + height:30px; +} + +QAbstractSpinBox:hover { + border-color: $main1; + selection-background-color:$main1; + selection-color:$background; +} + +QAbstractSpinBox:focus { + border-color: $main1; + +} + +/*SpinBox向上按钮样式*/ +QAbstractSpinBox::up-button { +margin: 5px 5px 5px 5px; + height:7px; + width:11px; + image:url(../../resource/zh/public/$path/icon/box-up-normal.png); + } + +QAbstractSpinBox::up-button:hover { + image:url(../../resource/zh/public/$path/icon/box-up-select.png); + + } + +QAbstractSpinBox::up-button:pressed { + image:url(../../resource/zh/public/$path/icon/box-up-select.png); + + } + +QAbstractSpinBox::up-button:disabled{ + image:url(../../resource/zh/public/$path/icon/box-up-normal.png); + + } + +/*SpinBox向下按钮样式*/ +QAbstractSpinBox::down-button { +margin: 5px 5px 5px 5px; + height:7px; + width:11px; + image:url(../../resource/zh/public/$path/icon/box-down-normal.png); + } + +QAbstractSpinBox::down-button:hover{ + image:url(../../resource/zh/public/$path/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:pressed{ + image:url(../../resource/zh/public/$path/icon/box-down-select.png); + } + +QAbstractSpinBox::down-button:disabled{ + image:url(../../resource/zh/public/$path/icon/box-down-normal.png); + +} + + /* =============================================== */ +/* QComboBox */ +/* =============================================== */ +QComboBox{ + background: $background;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color:$main1; + selection-color:$background; + border: 1px solid $border; + border-radius: 4px; + padding: 0 10 0 10px; + height:30px; +} + +QComboBox:hover +{ + border-color: $main1; +} + +QComboBox:focus { + border-color: $main1; +} + +QComboBox QAbstractItemView +{ + selection-background-color: $main4; + selection-color:$main1; + alternate-background-color: $main5; + background: $background; + border: 1px solid $border; + padding: 10px 0px 10px 0px; +} + +QComboBox QAbstractItemView::item:selected:active { + background: transparent; + color: $main1; +} + +QComboBox::drop-down { + border-image:url(../../resource/zh/public/$path/icon/box-down-normal.png); + margin-right: 10px; + height:7px; + width:11px; + subcontrol-origin: margin; + subcontrol-position: center right; +} + +QComboBox::drop-down:hover{ + border-image:url(../../resource/zh/public/$path/icon/box-down-select.png); +} + +QComboBox::drop-down:open:!hover { + border-image:url(../../resource/zh/public/$path/icon/box-down-normal.png); +} + +QComboBox::drop-down:open:hover { + border-image:url(../../resource/zh/public/$path/icon/box-down-select.png); +} + +QComboBox::drop-down:disabled { + border-image:url(../../resource/zh/public/$path/icon/box-down-normal.png); +} + +/* =============================================== */ +/* QCalendarWidget */ +/* =============================================== */ +QCalendarWidget QWidget{ + border: none; + background-color: $main3; + color:$text1; +} + +QCalendarWidget QWidget#qt_calendar_calendarview{ + border-left: 1px solid $border; + border-right: 1px solid $border; + border-bottom: 1px solid $border; + background-color: $main3; +} + +QCalendarWidget QWidget#qt_calendar_navigationbar { + background-color: $main2; + border: 1px solid $border; +} + + +QCalendarWidget QMenu{ + width: 80px; + background-color: $background; + border: 0px solid #cccfd9; + color:$main1; +} + + +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: transparent; +} + +QCalendarWidget QWidget#qt_calendar_yearbutton{ + background-color: transparent; +} + + +QCalendarWidget QAbstractSpinBox { + background: $background;/*不建议设为透明,否则table编辑时会字显示*/ + selection-background-color: $main1; + border: 1px solid $border; + border-radius: 0px; + padding: 0 10 0 10px; + height:30px; +} + +QCalendarWidget QAbstractSpinBox:hover { + border-color: $main1; +} + +QCalendarWidget QAbstractSpinBox:focus { + border-color: $main1; +} + +QCalendarWidget QToolButton:pressed,QCalendarWidget QToolButton:checked:hover{ + color:$main1; +} + + +QCalendarWidget QToolButton#qt_calendar_prevmonth{ + width: 40px; + qproperty-icon: url(../../resource/zh/public/$path/icon/arrowLeft.png); + background-color: transparent; +} + +QCalendarWidget QToolButton#qt_calendar_nextmonth { + width: 40px; + qproperty-icon: url(../../resource/zh/public/$path/icon/arrowRight.png); + background-color: transparent; +} + +QCalendarWidget QToolButton#qt_calendar_monthbutton { + padding-right: 10px; + background-color: transparent; +} + +QCalendarWidget QAbstractItemView +{ + selection-background-color:$main1; /*鼠标选中时背景色*/ + selection-color:$main3; /*鼠标选中时前景色:文字颜色*/ + /*设置交替颜色,需要在函数属性中设置:tableWidget->setAlternatingRowColors(true)*/ + alternate-background-color: $main5; + background: $background; + border: 1px solid $border; +} + + diff --git a/resource/fr/sys_ctrl/translate/sys_ctrl_en.mo b/resource/fr/sys_ctrl/translate/sys_ctrl_en.mo new file mode 100644 index 0000000000000000000000000000000000000000..8dc31d0ae86c076bd137286dbc5f8d473211bf9a GIT binary patch literal 3892 zcmaKtYit}>6~}L&DaAZW%lpyxQnIumtg}he)?MQdO-LfEX}e&jAXQNq&)i*4nVnf? zW@#1)$!TyB9OtE^N!nORU0Pw0c%44&+I8~<1X4dCJ|ZC`JhN*7;v*6WiT}Cx&hBiz z?v>ZSz4xAb?m7Q+X7(?4-ts)d*o@ED@Ub>9)(>9)2>xMQ`Y2;}fG>bw1+Rf$2Y;{U ztKgR~-*^jSp9Jp)H-TI9ya0Xy^8?`L!BEd9^n4opGS=ty{Ey(Bm^Z)-_#cq&;~N?K z7Pu26KV^{Yj(~TA7xers%|C#*WBt#Xe+Rc>{$KDL;Fen%`wIA^<}+Xh^Kp>!xdzg` zzXi#Ethw=HYJZdF0N9KDr$EYc9OU2>cptb7p5MS&1k(P`KCW~;3vS1J7NmRs3etVI z_AvHo@P04{J`8>a90k7!)-|NLWBxu!b@~VRIq!AUR+ zz6Fxq-}L-;BzZ6910dz~Barks1l|K)1Ihk<@H^nYLC7ez0p!?>|BzJ<%7q5iDm|!o zX;5#IU($s1B<+y09B5%VC_fqqQEEcw-?g<5L7wiI1CkT)kM27SBbmyw-g4RTfRW z)LdR(9Y5JvuE!UStt`Er#}(`CB^&bQ&WVf)XIB6IWUE z?pXBe6Vc(Rc=lzU3AoCrW4U!cS(WG48q4Ljas113)GNndu)P}wLk zGM3g;HCe}2uR#0)9m1=lu!yG?RZiUBm=;octh zXrLB-!wm-(%PgmP3!5zCg)1;tWNZ+inqx zC|8DQiXh;QJ>naFjqURc(vO>-TeM41Pu^FApFG`Klpa%#9oTm-xSJtQ_N$THWs4G%tjwXEPnF6kh92!jaI9 zSF+8H;!<_G8F4${Zs!fD5Pwn?6g>oT&{W(jCaH>m`&HMayOh*qlUDG1>ZHuOGat3n zZB5JA>NsBnRVPez7*cH(P|1=8XfIW$Q(NVAYD}At8ttyuOO}V|DQDU3Y#5Qdo`ru# zS@6~-#4<-^>Vt)ELw!80cuxrP$8t>`=xFDZYTihQ*NU`DQcC3O(rc-XQRh-J@{E;! zuGZesVH>PtTN0rRM&^shClIKsYYM7o+5!FQefSlrXMC;U2U;L$71=u7tsT!a93}pT zdRBIps5oAYo`QAq)Ve2{TQ-^uKNhvr<#@|;aR@KtqGOa;L6udul!x$rk|W?F0&g-@ z+wlTwaLQ|h%8$+V5qj=vCwUxs(e{Hd*>87B63yBUke!!o8xCHkR*ixSLcEMz6kc_y S;W*y2>V+!{$c+-Zi~S#9N4K2- literal 0 HcmV?d00001 diff --git a/resource/fr/sys_ctrl/translate/sys_ctrl_en.po b/resource/fr/sys_ctrl/translate/sys_ctrl_en.po new file mode 100644 index 00000000..5801d029 --- /dev/null +++ b/resource/fr/sys_ctrl/translate/sys_ctrl_en.po @@ -0,0 +1,272 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2024-05-30 09:56+0800\n" +"PO-Revision-Date: 2024-05-30 09:56+0800\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 3.4.4\n" +"X-Poedit-Basepath: ../../../../../src/sys/sys_ctrl\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: I18N_C;I18N\n" +"X-Poedit-SearchPath-0: .\n" + +#: BaseCfgParam.cpp:98 +msgid "未实现BASE应用信息加载逻辑" +msgstr "Not implemented BASE application infomation loading logic" + +#: BaseCfgParam.cpp:108 +#, c-format +msgid "加载配置文件:%s失败" +msgstr "Loading configuration file: %s failed" + +#: BaseCfgParam.cpp:128 +msgid "未实现应用信息加载逻辑" +msgstr "Application infomation loading logic is not implemented" + +#: StartCfgParam.cpp:46 +msgid "获取本机部署信息失败" +msgstr "Failed to obtain local deployment information" + +#: StartCfgParam.cpp:67 StopCfgParam.cpp:269 +#, c-format +msgid "获取应用%d信息失败" +msgstr "Failed to obtain application %d information" + +#: StartCfgParam.cpp:75 StopCfgParam.cpp:277 +#, c-format +msgid "获取%s应用的进程列表失败" +msgstr "Failed to obtain the process list of the %s application" + +#: StopCfgParam.cpp:38 +#, fuzzy +#| msgid "获取本机节点信息失败" +msgid "获取本地节点信息失败" +msgstr "Failed to obtain the local node information" + +#: StopCfgParam.cpp:132 +#, fuzzy +#| msgid "获取本机应用信息失败" +msgid "获取本地部署的所有应用信息失败" +msgstr "Failed to obtain information about the local application" + +#: StopCfgParam.cpp:189 +#, fuzzy +#| msgid "获取本机应用信息失败" +msgid "获取所有应用信息失败" +msgstr "Failed to obtain information about the local application" + +#: StopCfgParam.cpp:206 StopCfgParam.cpp:244 +#, c-format +msgid "打开内存表[%s]失败" +msgstr "Failed to open memory table [%s]" + +#: StopCfgParam.cpp:231 +msgid "查询应用下运行的进程列表失败" +msgstr "Failed to query the list of processes running under the application" + +#: StopCfgParam.cpp:256 +#, c-format +msgid "获取应用[%d]的启动顺序失败" +msgstr "Failed to get the startup sequence of application [%d]" + +#: SysCtrlApp.cpp:57 +msgid "进程已存在,不允许再次启动" +msgstr "The process already exists and is not allowed to start again" + +#: SysCtrlApp.cpp:167 +msgid "创建系统信息访问库失败" +msgstr "Failed to create system information access library" + +#: SysCtrlApp.cpp:212 SysCtrlStop.cpp:40 SysCtrlStop.cpp:58 SysCtrlStop.cpp:82 +msgid "系统未启动" +msgstr "System does not start" + +#: SysCtrlStart.cpp:45 SysCtrlStop.cpp:143 +msgid "获取本机节点信息失败" +msgstr "Failed to obtain the local node information" + +#: SysCtrlStart.cpp:93 +msgid "打开内存表失败" +msgstr "Failed to open memory table" + +#: SysCtrlStart.cpp:109 +msgid "查询表记录失败" +msgstr "Query table record failed" + +#: SysCtrlStart.cpp:130 +msgid "系统已启动" +msgstr "System has started" + +#: SysCtrlStart.cpp:140 +msgid "启动失败" +msgstr "Startup failed" + +#: SysCtrlStart.cpp:145 +msgid "启动成功" +msgstr "Successful start" + +#: SysCtrlStart.cpp:153 +#, c-format +msgid "开始启动进程:%s" +msgstr "Start process:%s" + +#: SysCtrlStart.cpp:165 SysCtrlStop.cpp:240 +#, c-format +msgid "不支持的启动类型:%d" +msgstr "Unsupported startup type:%d" + +#: SysCtrlStart.cpp:176 SysCtrlStart.cpp:467 SysCtrlStop.cpp:199 +msgid "获取应用信息失败" +msgstr "Failed to obtain application information" + +#: SysCtrlStart.cpp:180 +#, c-format +msgid "开始启动 %s 应用" +msgstr "Start the %s application" + +#: SysCtrlStart.cpp:186 +#, fuzzy, c-format +#| msgid "应用%s启动失败" +msgid "%s 应用启动失败" +msgstr "Application %s failed to start" + +#: SysCtrlStart.cpp:191 +#, fuzzy, c-format +#| msgid "应用%s启动成功" +msgid "%s 应用启动成功" +msgstr "Application %s started successfully" + +#: SysCtrlStart.cpp:201 SysCtrlStart.cpp:237 +msgid "获取进程目录失败" +msgstr "Failed to obtain process directory" + +#: SysCtrlStart.cpp:218 +#, fuzzy, c-format +#| msgid "开始启动进程:%s" +msgid "开始启动进程 %s" +msgstr "Start process:%s" + +#: SysCtrlStart.cpp:222 +#, fuzzy, c-format +#| msgid "启动进程:%s失败.[%s %s]" +msgid "启动进程失败:%s.[%s %s]" +msgstr "Start process:%s failed.[%s %s]" + +#: SysCtrlStart.cpp:226 SysCtrlStart.cpp:261 +#, fuzzy, c-format +#| msgid "启动进程:%s成功" +msgid "启动进程成功:%s" +msgstr "Start process:%s success" + +#: SysCtrlStart.cpp:254 +#, fuzzy, c-format +#| msgid "启动进程:%s失败" +msgid "启动进程失败:%s" +msgstr "Start process:%s failed" + +#: SysCtrlStart.cpp:266 +#, c-format +msgid "启动应用:%s下的进程:%s失败" +msgstr "Start application: Process under %s : %s failed." + +#: SysCtrlStart.cpp:311 +msgid "查询进程启动结果失败" +msgstr "Query process startup result failed" + +#: SysCtrlStart.cpp:456 +msgid "节点名与IP不匹配,请检查节点配置" +msgstr "The node name does not match the IP,please check the node configuration" + +#: SysCtrlStart.cpp:481 +msgid "请先启动BASE应用" +msgstr "Please start the BASE app first" + +#: SysCtrlStart.cpp:494 +#, c-format +msgid "%s应用已启动" +msgstr "Application %s started" + +#: SysCtrlStart.cpp:514 +#, c-format +msgid "请检查%s应用的进程列表" +msgstr "Please check the process list of the %s app" + +#: SysCtrlStart.cpp:527 SysCtrlStop.cpp:137 +msgid "加载配置文件失败" +msgstr "Failed to load configuration file" + +#: SysCtrlStop.cpp:68 +msgid "系统停止失败" +msgstr "System stop failed" + +#: SysCtrlStop.cpp:73 +msgid "系统停止成功" +msgstr "System stopped successfully" + +#: SysCtrlStop.cpp:89 +#, c-format +msgid "获取应用%s信息失败" +msgstr "Failed to obtain application %s information" + +#: SysCtrlStop.cpp:104 +msgid "请先停止其它应用,再关闭BASE应用" +msgstr "Please stop other apps before closing the base app" + +#: SysCtrlStop.cpp:124 +msgid "获取本应用进程列表失败" +msgstr "Failed to obtain the application process list" + +#: SysCtrlStop.cpp:181 SysCtrlStop.cpp:332 +msgid "查询记录失败" +msgstr "Query record failed" + +#: SysCtrlStop.cpp:203 +#, c-format +msgid "开始停止 %s 应用" +msgstr "Stop the %s application" + +#: SysCtrlStop.cpp:211 +#, fuzzy, c-format +#| msgid "%s应用停止失败" +msgid "%s 应用停止失败" +msgstr "%s application failed to stop" + +#: SysCtrlStop.cpp:219 +#, fuzzy, c-format +#| msgid "%s应用停止成功" +msgid "%s 应用停止成功" +msgstr "%s application stopped successfully" + +#: SysCtrlStop.cpp:226 +#, c-format +msgid "开始停止进程:%s" +msgstr "Stop process:%s" + +#: SysCtrlStop.cpp:245 +#, fuzzy, c-format +#| msgid "停止进程:%s成功" +msgid "停止进程成功:%s" +msgstr "Stop process:%s succeeded" + +#: SysCtrlStop.cpp:249 +#, fuzzy, c-format +#| msgid "停止进程:%s失败" +msgid "停止进程失败:%s" +msgstr "Stop process:%s failed" + +#: SysCtrlStop.cpp:308 +msgid "设置退出标识失败" +msgstr "Failed to set exit flag" + +#: SysCtrlStop.cpp:369 +msgid "更新记录失败" +msgstr "Update record failed" + +#~ msgid "内存库未完全退出,请退出所有程序后再尝试启动" +#~ msgstr "The memory library did not exit completely, please close all programs and then try to start again" diff --git a/resource/fr/sys_login_api/translate/en.ts b/resource/fr/sys_login_api/translate/en.ts new file mode 100644 index 00000000..8679e3b2 --- /dev/null +++ b/resource/fr/sys_login_api/translate/en.ts @@ -0,0 +1,103 @@ + + + + + CLoginDlg + + + CLoginDlg + Login + + + + 账号 + Account + + + + 密码 + Password + + + + 用户组 + User group + + + + 姓名 + Name + + + + + 登录 + Login + + + + 取消 + Cancel + + + + 未找到此普通权限 + The permission was not found + + + + 未进行密码验证 + No password verification + + + + + + + + 提示 + Tip + + + + 用户信息错误! + User infomation error! + + + + 密码不能为空! + Password can not be blank! + + + + 密码错误! + Wrong password! + + + + 不具备权限! + Does not have this permission! + + + + 用户已失效! + User has expired! + + + + + 警告 + Warning + + + + 创建数据库对象失败! + create db object failed! + + + + 打开数据库失败! + open db failed! + + + diff --git a/resource/fr/sys_login_api/translate/fr.qm b/resource/fr/sys_login_api/translate/fr.qm new file mode 100644 index 0000000000000000000000000000000000000000..49b0ea6273b0294ead12b63de703ac4bde247550 GIT binary patch literal 1460 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 q5qyemr-|vZd`Tqe2RVKUu literal 0 HcmV?d00001 diff --git a/resource/fr/sys_startup/translate/en.ts b/resource/fr/sys_startup/translate/en.ts new file mode 100644 index 00000000..f5b1b18e --- /dev/null +++ b/resource/fr/sys_startup/translate/en.ts @@ -0,0 +1,1042 @@ + + + + + AppMngForm + + + Form + Form + + + + 节点应用 + Node Application + + + + 状态 + Status + + + + 主/备 + Master/Slave + + + + + 重启 + Restart + + + + 刷新 + Refresh + + + + 启动 + Start up + + + + 停止 + Stop + + + + 升主 + to Master + + + + 降备 + to Slave + + + + + + + 验证 + Ok + + + + + + + 权限验证 + Permission to verify + + + + + 运行中 + Active + + + + + 主 + Master + + + + + 备 + Slave + + + + + + + 异常 + Abnormal + + + + + 已停止 + Stopped + + + + + 未知 + Unknown + + + + AutoStart + + + Dialog + Dialog + + + + 开机自启动 + Auto start + + + + 系统开机自启动 + System auto start + + + + HMI 开机自启动 + HMI auto start + + + 桌面模式(适合调试) + Desktop mode (suitable for debugging) + + + 大屏模式(内存占用小) + Large screen mode (low memory usage) + + + 本次设置将在下次重启生效 + The settings will take effect after the next restart + + + + 自启动设置 + Auto start setting + + + + ButtonForm + + + Form + Form + + + + 验证 + Ok + + + + 权限验证 + Permission to verify + + + 提示 + Tips + + + + 设置系统开机自启动成功... + Setup system auto start successfully... + + + + 设置系统开机自启动失败...错误:%1 + Setup system auto start failure... Error:%1 + + + + 注销系统开机自启动成功... + The system has been successfully booted... + + + + 注销系统开机自启动失败......错误:%1 + Logout system startup failure... Error:%1 + + + + 设置HMI开机自启动成功... + Set HMI auto start successfully... + + + + 设置HMI开机自启动失败...错误:%1 + Set HMI auto start failure... Error:%1 + + + + 注销HMI开机自启动成功... + Logout HMI startup since startup successful... + + + + 注销HMI开机自启动失败...错误:%1 + Logout HMI startup self-start failure... Error:%1 + + + 设置桌面模式成功 + Desktop mode set successfully + + + 设置桌面模式成功...错误:%1 + Desktop mode set successfully... Error: %1 + + + 设置大屏模式成功 + Large screen mode set successfully + + + 设置大屏模式失败...错误:%1 + Failed to set large screen mode... Error: %1 + + + + DbCheck + + + 数据库检测 + Database detection + + + + + 连接状态 + Connection Status + + + + 同步状态 + Synchronization Status + + + + 同步状态: + Synchronization Status: + + + + 最大ID主机: + Max ID Host: + + + + 服务状态: + Service Status: + + + + IP漂移主机: + IP Drift Host: + + + + 读写状态 + Read/Write Status + + + + 模型(读): + Model (Read): + + + + 模型(写): + Model (Write): + + + + 历史(读): + History (Read): + + + + 时序库状态 + Time Series Database Status + + + MySQL状态 + MySql + + + + 节点名/IP + Node Name/IP + + + 模型(写) + Model(Write) + + + 模型(读) + Model(Read) + + + 历史(读) + His(Read) + + + InfluxDB状态 + InfluxDB + + + + 正在刷新,无需再次提交刷新! + Refreshing now, no need to submit refresh again! + + + + 正在刷新,请稍后! + Refreshing, please wait a moment! + + + + 查询成功! + Query successful! + + + + %1 + %1 + + + + + + + 未知 + Unknown + + + + + + + 正常 + Connected + + + + + 同步ID相差:%1 + Synchronization ID difference: %1 + + + + 读取失败:%1 + Read failed: %1 + + + + + 未启用 + Not enabled + + + + + 无 + None + + + + 服务未开启:%1 + Service not started: %1 + + + + 刷新 + Refresh + + + + + 异常 + Not Connected + + + 获取域信息失败 + Faild to obtain domain infomation + + + 获取数据库信息失败 + Faild to obtain database infomation + + + + (首链接) + (First Link) + + + + + + + + + + + - + - + + + + DbCheckThread + + + UDP绑定失败,端口号【%1】 + UDP binding failed, port number 【%1】 + + + + + 创建系统信息访问库失败 + Failed to create system information access library + + + + 获取域信息失败 + Failed to obtain domain information + + + + 获取数据库信息失败 + Failed to obtain database information + + + + 获取节点信息失败 + Failed to obtain node information + + + + [%s]数据库类型错误!参数错误,直接默认为数据库状态不正常 + [%s] Database type error! Parameter error, defaulting to database status as abnormal + + + + DogCheck + + + Dialog + Dialog + + + + 加密狗状态: + Supper Dog Status: + + + + 1、请将操作系统信息(re_code.txt)发给系统提供商,获取授权文件 + 1. Please send the operating system information (re_code.txt) to the system provider to obtain the authorization file. + + + + 拷贝操作系统信息 + Copy operating system information + + + + 2、获取授权文件后,进行系统激活 + 2. After obtaining the authorization file, activate the system. + + + + 导入授权文件 + Import authorization file + + + + 加密狗检测 + Supper Dog Check + + + + + + + 提示 + Tips + + + + 选择授权文件 + Select the authorization file + + + + txt (*.txt) + txt (*.txt) + + + + + 重新检测 + Recheck + + + + 异常,错误码[%1] + Abnormal,Error Code[%1] + + + + + 正常 + Normal + + + + MainWindow + + + 应用管理 + Application + + + + 进程管理 + Process Info + + + + 工具箱 + Toolbox + + + + 版本 + Version + + + + + 提示 + Tips + + + + 系统启动失败,请检查所有配置工具和人机界面是否已经全部退出! + System failed to start,please check whether all configuration tools and human interface have been exited! + + + + 错误 + Error + + + 未发现系统模型配置文件,是否打开系统建模工具导出模型配置? + The system model configuration file is not found. Do you open the system modeling tool to export the model configuration? + + + + 开始停止系统 + Stop system + + + + 开始启动进程:%1 + Start process:%1 + + + + + 启动进程:%1失败 + Start process:%1 faild + + + + 启动进程:%1成功 + Start process:%1 success + + + + 开始停止进程:%1 + Stop process:%1 + + + + + + 停止进程:%1失败 + Stop process:%1 faild + + + + + + 停止进程:%1成功 + Stop process:%1 success + + + + 强制停止进程:%1 + Kill process:%1 + + + + 显示 + Display + + + + 退出 + Exit + + + + 系统模型配置信息异常,是否打开系统建模工具检查配置并导出? + There is an exception in the system model configuration information. Do you want to open the system modeling tool to check the configuration and export it? + + + + 加密狗退出 + Supper Dog Exit + + + + ProcMngForm + + + Form + Form + + + + 节点应用进程 + Application process + + + + 进程名 + Process name + + + + 所属应用 + Application + + + + 状态 + Status + + + + CPU + CPU + + + + 内存(MB) + Memory (MB) + + + + 主/备 + Master/Slave + + + + + 重启 + Restart + + + + 刷新 + Refresh + + + + 启动 + Start up + + + + 停止 + Stop + + + + 升主 + to Master + + + + 降备 + to Slave + + + + 强制停止 + Kill + + + + + + + 验证 + Ok + + + + + + + 权限验证 + Permission to verify + + + + + 运行中 + Active + + + + + + + 异常 + Abnormal + + + + + 主 + Master + + + + + 备 + Slave + + + + + 已停止 + Stopped + + + + + 未知 + Unknown + + + + QObject + + + + + + 已设置服务自启动,若需重新设置,请先取消! + The service has been set since the start, if you need to reset, please cancel first! + + + + + 设置可执行权限失败! + Failed to set executable permissions! + + + + + + 文件不存在! + The file does not exist! + + + + 服务配置文件不可写,请确认是否具有权限! + The service profile cannot be written, please confirm if you have permission! + + + + 写入服务配置文件失败! + Write service profile failed! + + + + 取消服务开机自启动失败! + Failed to cancel the service from starting automatically on boot! + + + 设置合成器服务开机自启动失败! + Failed to set the compositor service to start automatically on boot! + + + 设置sys_startup服务开机自启动失败! + Failed to set the sys_startup service to start automatically on boot! + + + 取消rqeh6000_compositor服务开机自启动失败! + Failed to cancel the rqeh6000_compositor service from starting automatically on boot! + + + 取消rqeh6000_startup服务开机自启动失败! + Failed to cancel the rqeh6000_startup service from starting automatically on boot! + + + 调用系统重新加载配置失败! + Call system reload configuration failed! + + + + 设置服务开机自启动失败! + Setup service startup auto startup failed! + + + + 未设置服务自启动,无需取消! + Do not set the service to start, no need to cancel! + + + 删除服务配置文件失败,请确认是否具有权限! + Failed to delete service profile, please confirm if you have permissions! + + + + + 已设置HMI自启动,若需重新设置,请先取消! + HMI has been set to start, if you need to reset, please cancel first! + + + + 启动器文件不可写,请确认是否具有权限! + Initiator file cannot be written, please confirm whether you have permission! + + + + 删除启动器文件失败,请确认是否具有权限! + Failed to delete starter file, please confirm if you have permission! + + + + 未设置HMI自启动,无需取消! + HMI self-start is not set, no need to cancel! + + + + + + 打开服务管理器失败,请确认是否具有权限! + Failed to open service manager, please confirm if you have permission! + + + + 注册服务失败,请确认是否具有权限! + Registration service failed, please confirm if you have permission! + + + + 注销服务失败! + Logout service failed! + + + + 停止服务超时! + Stop service timeout! + + + + 获取服务状态失败! + Failed to get service status! + + + + + 启动文件无法写入 + Startup file cannot be written + + + + 警告 + Warning + + + + 正在运行 + System still in running + + + + StartUpForm + + + Form + Form + + + + + 系统启动 + System startup + + + + + 系统停止 + System to stop + + + + 验证 + Ok + + + + 权限验证 + Permission to verify + + + + 退出系统前,请将所有配置工具和人机界面退出! + Before exiting the system, please exit all configuration tools and human interface! + + + + StatusForm + + + Form + Form + + + + 加密狗状态: + Supper Dog Status: + + + + + + + 正常 + Normal + + + + 本地网络状态: + Local Network Status: + + + + + 异常 + Abnormal + + + + 未检测 + Unchecked + + + + VersionForm + + + Form + Form + + + + 版本信息 + Version + + + + 主程序 + Main + + + + 数据库 + Db + + + + Web + Web + + + + 主程序路径 + MainPath + + + + 数据库路径 + DbPath + + + + 无版本信息 + No Version Information + + + + + + 已安装 + Installed + + + + + + 未安装 + Not Installed + + + 无主程序路径 + No MainPath + + + + 无数据库路径 + No DbPath + + + diff --git a/resource/fr/workBench/translate/fr.qm b/resource/fr/workBench/translate/fr.qm new file mode 100644 index 0000000000000000000000000000000000000000..eb1e542a4884671561df641b2a6fe6c04152f0ea GIT binary patch literal 26663 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 literal 0 HcmV?d00001 diff --git a/resource/fr/workBench/translate/fr.ts b/resource/fr/workBench/translate/fr.ts new file mode 100644 index 00000000..b8de0c42 --- /dev/null +++ b/resource/fr/workBench/translate/fr.ts @@ -0,0 +1,1418 @@ + + + + + AppMngForm + + + Form + Formulaire + + + + 节点应用 + Application du nœud + + + + 状态 + État + + + + 主/备 + Principal/Secondaire + + + + + 重启 + Redémarrer + + + + 刷新 + Rafraîchir + + + + 启动 + Démarrer + + + + 停止 + Arrêter + + + + 升主 + Promouvoir au principal + + + + 降备 + Déclasser au secondaire + + + + + + + 验证 + Vérifier + + + + + + + 权限验证 + Vérification des autorisations + Vérification des autorisations + + + + + 运行中 + En cours d'exécution + + + + + + + 异常 + Anomalie + + + + + 主 + Principal + + + + + 备 + Secondaire + + + + + 已停止 + Arrêté + + + + + 未知 + Inconnu + + + + AutoStart + + + Dialog + Dialogue + + + + 开机自启动 + Démarrage automatique + + + + 系统开机自启动 + Démarrage automatique du système + + + + HMI 开机自启动 + Démarrage automatique de l'IHM + + + + 自启动设置 + Paramètres de démarrage automatique + + + + ButtonForm + + + Form + Formulaire + + + + 验证 + Vérifier + + + + 权限验证 + Vérification des autorisations + Vérification des autorisations + + + + 设置系统开机自启动成功... + Configuration du démarrage automatique du système réussie... + + + + 设置系统开机自启动失败...错误:%1 + Échec de la configuration du démarrage automatique du système... Erreur : %1 + + + + 注销系统开机自启动成功... + Annulation du démarrage automatique du système réussie... + + + + 注销系统开机自启动失败......错误:%1 + Échec de l'annulation du démarrage automatique du système... Erreur : %1 + + + + 设置HMI开机自启动成功... + Configuration du démarrage automatique de l'IHM réussie... + + + + 设置HMI开机自启动失败...错误:%1 + Échec de la configuration du démarrage automatique de l'IHM... Erreur : %1 + + + + 注销HMI开机自启动成功... + Annulation du démarrage automatique de l'IHM réussie... + + + + 注销HMI开机自启动失败...错误:%1 + Échec de l'annulation du démarrage automatique de l'IHM... Erreur : %1 + + + + CheckBoxDialog + + + 工作台 + Table de travail + + + + 确认 + Confirmer + + + + 取消 + Annuler + + + + DbCheck + + + + 数据库检测 + Détection de la base de données + Détection de la base de données + + + + + 连接状态 + État de la connexion + + + + 节点名/IP + Nom du nœud/IP + + + + 同步状态 + État de la synchronisation + État de la synchronisation + + + + 同步状态: + État de la synchronisation : + État de la synchronisation : + + + + + + + + + + + - + - + + + + 最大ID主机: + Hôte avec ID maximal : + + + + 服务状态: + État du service : + + + + IP漂移主机: + Hôte de dérive IP : + + + + 读写状态 + État de la lecture/écriture + État de la lecture/écriture + + + + 模型(读): + Modèle (lecture) : + + + + 模型(写): + Modèle (écriture) : + + + + 历史(读): + Historique (lecture) : + + + + 时序库状态 + État de la base de données temporelle + + + + 刷新 + Actualiser + + + + 正在刷新,无需再次提交刷新! + Actualisation en cours, inutile de soumettre à nouveau ! + + + + 正在刷新,请稍后! + Actualisation en cours, veuillez patienter ! + + + + 查询成功! + Requête réussie ! + + + + %1 + %1 + + + + + + + 未知 + Inconnu + + + + + + + 正常 + Normal + + + + + 同步ID相差:%1 + ID de synchronisation différé de : %1 + + + + 读取失败:%1 + Échec de lecture : %1 + + + + + 未启用 + Non activé + + + + + 无 + Aucun + + + + 服务未开启:%1 + Service non démarré : %1 + + + + + 异常 + Anormal + + + + (首链接) + (Premier lien) + + + + 提示 + Rappel + + + + 正在查询,是否终止查询? + En cours de recherche, souhaitez-vous arrêter la recherche ? + + + + DbCheckThread + + + UDP绑定失败,端口号【%1】 + Échec de la liaison UDP, numéro de port [%1] + Échec de la liaison UDP, numéro de port [%1] + + + + + 创建系统信息访问库失败 + Échec de la création de la bibliothèque d'accès aux informations système + + + + 获取域信息失败 + Échec de l'obtention des informations de domaine + + + + 获取数据库信息失败 + Échec de l'obtention des informations de la base de données + + + + 获取节点信息失败 + Échec de l'obtention des informations de nœud + + + + [%s]数据库类型错误!参数错误,直接默认为数据库状态不正常 + Erreur de type de base de données [%s] ! Paramètre incorrect, état de la base de données par défaut défini comme anormal + + + + DogCheck + + Dialog + Dialogue + + + + 激活状态: + État de l'activation : + État de l'activation : + + + + + 正常 + Normal + + + + + 重新检测 + Re-détecter + + + + 1、请将操作系统信息(re_code.txt)发给系统提供商,获取授权文件 + 1. Veuillez envoyer les informations du système d'exploitation (re_code.txt) au fournisseur pour obtenir le fichier d'autorisation + + + + 拷贝操作系统信息 + Copier les informations du système d'exploitation + + + + 2、获取授权文件后,进行系统激活 + 2. Après avoir obtenu le fichier d'autorisation, procédez à l'activation du système + + + + 导入授权文件 + Importer le fichier d'autorisation + + + + 授权检测 + Détection d'autorisation + Détection d'autorisation + + + + 异常,错误码[%1] + Anomalie, code d'erreur [%1] + + + + + + + 提示 + Rappel + Rappel + + + + 删除原文件失败 + Échec de la suppression du fichier d'origine + + + + 选择授权文件 + Sélectionner le fichier d'autorisation + + + + txt (*.txt) + txt (*.txt) + + + + 文件不存在 + Le fichier n'existe pas + + + + 导入失败![%1] + Échec de l'importation ! [%1] + + + + 导入成功! + Importation réussie! + + + + InputDialog + + + 确定 + Confirmer + + + + 取消 + Annuler + + + + 数据填写: + Saisir les données : + + + + 请选择图片 + Veuillez sélectionner une image + + + + 请选择执行文件 + Veuillez sélectionner un fichier exécutable + + + + 选择图片 + Sélectionner une image + + + + 选择执行文件 + Sélectionner un fichier à exécuter + Sélectionner un fichier à exécuter + + + + Images (*.png *.jpg *.bmp) + Images (*.png *.jpg *.bmp) + + + + 新增快捷方式 + Ajouter un raccourci + + + + Executables (*.exe *.bat) + Exécutables (*.exe *.bat) + + + + 警告 + Avertissement + + + + 请填写相应数据! + Veuillez remplir les données correspondantes ! + + + + LocalStateForm + + + Form + Formulaire + + + + + (主) + (Principal) + + + + + (备) + (Secondaire) + (Secondaire) + + + + + + + (未知) + (inconnu) + (inconnu) + + + + + (停止) + (arrêté) + (arrêté) + + + + 提示 + Rappel + Rappel + + + + + 停止 + Arrêter + + + + + + 重启 + Redémarrer + + + + 该应用暂不能切换成其他状态。 + L’application ne peut pas être basculée vers un autre état pour le moment. + + + + 当前应用状态是否切换成其他状态? + Si l’état actuel de l’application est changé ? + Si l’état actuel de l’application est changé ? + + + + + 验证 + Vérifier + + + + + 权限验证 + Vérification des autorisations + + + + MainWindow + + 应用管理 + Gestion des applications + + + 进程管理 + Gestion des processus + + + + 系统管理 + Gestion +du système + + + 工具箱 + Boîte à outils + + + 版本 + Version + + + + 显示 + Afficher + + + + 退出 + Quitter + + + + 系统状态 + État +du système + + + + 系统进程 + Processus +système + + + + 系统工具 + Outils +système + + + + 系统设置 + Conception +du système + + + + + + 提示 + Rappel + Rappel + + + + 开始停止系统 + Commencer à arrêter le système + + + + 开始启动进程:%1 + Commencer à démarrer le processus : %1 + + + + + 启动进程:%1失败 + Échec du démarrage du processus : %1 + + + + 启动进程:%1成功 + Démarrage du processus : %1 réussi + + + + 开始停止进程:%1 + Commencer à arrêter le processus : %1 + + + + + + 停止进程:%1失败 + Échec de l'arrêt du processus : %1 + + + + + + 停止进程:%1成功 + Arrêt du processus : %1 réussi + + + + 强制停止进程:%1 + Arrêt forcé du processus : %1 + + + + 系统启动失败,请检查所有配置工具和人机界面是否已经全部退出! + Échec du démarrage du système, veuillez vérifier que tous les outils de configuration et les interfaces homme-machine sont fermés ! + + + + 错误 + Erreur + + + + 系统模型配置信息异常,是否打开系统建模工具检查配置并导出? + Configuration du modèle système anormale, souhaitez-vous ouvrir l'outil de modélisation du système pour vérifier la configuration et l'exporter ? + + + + 缩小至托盘 + Réduire dans la barre d'état système + + + + 退出程序 + Quitter le programme + + + + 确认退出? + Confirmer la sortie ? + + + + 加密狗退出 + Dongle retiré + + + + ModifyButtonForm + + + Form + Formulaire + + + + 确认 + Confirmer + + + + 编辑快捷键 + Modifier les raccourcis + + + + ProcMngForm + + + Form + Formulaire + + + + 节点应用进程 + Processus de l'application du nœud + + + + 进程名 + Nom du processus + + + + 所属应用 + Application associée + + + + 状态 + État + + + + CPU + CPU + + + + 内存(MB) + Mémoire (MB) + + + + 主/备 + Principal/Secondaire + + + + + 重启 + Redémarrer + + + + 全部 + Tout + + + + 刷新 + Rafraîchir + + + + 启动 + Démarrer + + + + 停止 + Arrêter + + + + 升主 + Élever au principal + + + + 降备 + Déclasser au secondaire + + + + 强制停止 + Arrêt forcé + + + + + + + 验证 + Vérifier + Vérifier + + + + + + + 权限验证 + Vérification des autorisations + + + + + 运行中 + En cours d'exécution + + + + + + + 异常 + Anormal + + + + + 主 + Principal + + + + + 备 + Secondaire + + + + + 已停止 + Arrêté + + + + + 未知 + Inconnu + + + + QObject + + + 警告 + Avertissement + + + + 正在运行 + En cours d'exécution + + + + + + + 已设置服务自启动,若需重新设置,请先取消! + Le démarrage automatique du service est déjà configuré. Veuillez annuler pour le reconfigurer ! + + + + + 设置可执行权限失败! + Échec de la configuration des autorisations d'exécution ! + + + + + + 文件不存在! + Le fichier n'existe pas ! + + + + 服务配置文件不可写,请确认是否具有权限! + Impossible d'écrire dans le fichier de configuration du service, veuillez vérifier les autorisations ! + Impossible d'écrire dans le fichier de configuration du service, veuillez vérifier les autorisations ! + + + + 写入服务配置文件失败! + Échec de l'écriture dans le fichier de configuration du service ! + + + + 设置服务开机自启动失败! + Échec de la configuration du démarrage automatique du service au démarrage ! + + + + 取消服务开机自启动失败! + Échec de l'annulation du démarrage automatique du service au démarrage ! + + + + + 已设置HMI自启动,若需重新设置,请先取消! + Le démarrage automatique de l'IHM est déjà configuré. Veuillez annuler pour le reconfigurer ! + + + + 启动器文件不可写,请确认是否具有权限! + Impossible d'écrire dans le fichier du lanceur, veuillez vérifier les autorisations ! + Impossible d'écrire dans le fichier du lanceur, veuillez vérifier les autorisations ! + + + + 删除启动器文件失败,请确认是否具有权限! + Échec de la suppression du fichier du lanceur, veuillez vérifier les autorisations ! + Échec de la suppression du fichier du lanceur, veuillez vérifier les autorisations ! + + + + 未设置HMI自启动,无需取消! + Le démarrage automatique de l'IHM n'est pas configuré, pas besoin de l'annuler ! + + + + + + 打开服务管理器失败,请确认是否具有权限! + Échec de l'ouverture du gestionnaire de services, veuillez vérifier les autorisations ! + Échec de l'ouverture du gestionnaire de services, veuillez vérifier les autorisations ! + + + + 注册服务失败,请确认是否具有权限! + Échec de l'enregistrement du service, veuillez vérifier les autorisations ! + Échec de l'enregistrement du service, veuillez vérifier les autorisations ! + + + + 未设置服务自启动,无需取消! + Le démarrage automatique du service n'est pas configuré, pas besoin de l'annuler ! + + + + 注销服务失败! + Échec de la désinscription du service ! + + + + 停止服务超时! + Délai d'arrêt du service dépassé ! + + + + 获取服务状态失败! + Échec de l'obtention de l'état du service ! + + + + + 启动文件无法写入 + Impossible d'écrire dans le fichier de démarrage + + + + StartUpForm + + + Form + Formulaire + + + + 验证 + Vérification + + + + 权限验证 + Vérification des autorisations + Vérification des autorisations + + + + 退出系统前,请将所有配置工具和人机界面退出! + Veuillez fermer tous les outils de configuration et l'interface homme-machine avant de quitter le système ! + + + + StatusForm + + + Form + Formulaire + + + + 激活状态: + État de l'activation : + État de l'activation : + + + + + + 正常 + Normal + + + + 本地网络状态: + État du réseau local : + + + + 异常 + Anormal + + + + 未检测 + Non détecté + + + + 未激活 + Non activé + + + + 已激活 + Activé + + + + 系统运行中 + Système en cours d'exécution + + + + 系统已停止 + Système arrêté + + + + SystemSetForm + + + Form + Formulaire + + + + 设置 + Paramètres + + + + 基本: + Base : + + + + 切换语言: + Changer de langue : + + + 常用工具添加或删除: + Ajouter ou supprimer des outils courants : + + + + 中文 + Chinois + + + + 开机时启动工具(推荐) + Lancer l'outil au démarrage (recommandé) + + + + 法语 + Français + + + + 英文 + Anglais + + + + 修改 + Modifier + + + + 工具设置 + Paramètres de l’outil + + + + 快捷工具栏设置: + Paramètres rapides de la barre d’outils: + + + + 基础设置 + Paramètres de base + + + + 确认修改 + Confirmez les modifications + + + + 基础信息 + Informations de base + + + + 基础信息: + Informations de base : + + + + 授权信息 + Informations d'autorisation + + + + 授权激活 + Activation de l'autorisation + + + + 主程序路径 + Chemin du programme principal + + + + 版本信息 + Informations sur la version + + + + 数据库路径 + Chemin de la base de données + + + + 主程序 + Programme principal + + + + Web + Web + + + + 数据库 + Base de données + + + + 备份路径 + 备用路径 + Chemin de sauvegarde + + + + + 未检测 + Non détecté + + + + 未激活 + Non activé + + + + 已激活 + Activé + + + + 设置系统开机自启动成功... + Configuration du démarrage automatique du système réussie... + Configuration du démarrage automatique du système réussie... + + + + 设置系统开机自启动失败...错误:%1 + Échec de la configuration du démarrage automatique du système... Erreur : %1 + Échec de la configuration du démarrage automatique du système... Erreur : %1 + + + + 注销系统开机自启动成功... + Annulation du démarrage automatique du système réussie... + Annulation du démarrage automatique du système réussie... + + + + 注销系统开机自启动失败......错误:%1 + Échec de l'annulation du démarrage automatique du système... Erreur : %1 + Échec de l'annulation du démarrage automatique du système... Erreur : %1 + + + + 无版本信息 + Aucune information de version + Aucune information de version + + + + + + 已安装 + Installé + + + + + + 未安装 + Non installé + + + + 暂无 + Aucun + + + + 无数据库路径 + Aucun chemin de base de données + Aucun chemin de base de données + + + + 切换成功!请重启该软件 + Changement réussi ! Veuillez redémarrer le logiciel + + + + 切换失败..请稍后再试 + Changement échoué... Veuillez réessayer plus tard + + + + menuForm + + Form + Formulaire + + + 系统状态 + État +du système + + + 系统进程 + Processus +système + + + 系统管理 + Gestion +du système + + + 系统工具 + Outils +système + + + 系统设置 + 系统设计 + Conception +du système + + + + titleBarForm + + Form + Formulaire + + + diff --git a/resource/fr/workBench/workBench.json b/resource/fr/workBench/workBench.json new file mode 100644 index 00000000..2eb87b5b --- /dev/null +++ b/resource/fr/workBench/workBench.json @@ -0,0 +1,176 @@ +{ + "buttoninfo": { + "count": 20, + "num0": { + "cmd": "hmi_explorer.bat", + "icon": "../../resource/zh/workBench/buttonForm/MonitInterface.png", + "param": "", + "desc": "Affichage\nde l’interface" + }, + "num1": { + "cmd": "DogCheck", + "icon": "../../resource/zh/workBench/buttonForm/DogCheck.png", + "param": "", + "desc": "Tests\nd’autorisation" + }, + "num10": { + "cmd": "debug_tool.exe", + "icon": "../../resource/zh/workBench/buttonForm/EngineeringDebug.png", + "param": "", + "desc": "Débogage\ndes projets" + }, + "num11": { + "cmd": "sys_command-platform.bat", + "icon": "../../resource/zh/workBench/buttonForm/PlatformTerminal.png", + "param": "", + "desc": "Terminaux\nde plate-forme" + }, + "num12": { + "cmd": "sys_command.bat", + "icon": "../../resource/zh/workBench/buttonForm/ProductTerminal.png", + "param": "", + "desc": "Terminaux\nde produits" + }, + "num13": { + "cmd": "push_debug.exe", + "icon": "../../resource/zh/workBench/buttonForm/push_debug.png", + "param": "", + "desc": "Débogage\npush" + }, + "num14": { + "cmd": "file_sync_tool.exe", + "icon": "../../resource/zh/workBench/buttonForm/FileSync.png", + "param": "", + "desc": "Synchronisation\ndes fichiers" + }, + "num15": { + "cmd": "ReportEdit.exe", + "icon": "../../resource/zh/workBench/buttonForm/ReportEdit.png", + "param": "", + "desc": "Édition\nde rapports" + }, + "num16": { + "cmd": "NetMonite.exe", + "icon": "../../resource/zh/workBench/buttonForm/NetMonite.png", + "param": "", + "desc": "Surveillance\ndu réseau" + }, + "num17": { + "cmd": "tsdb_data_manager.exe", + "icon": "../../resource/zh/workBench/buttonForm/DatabaseCheck.png", + "param": "", + "desc": "Données\ntemporelles" + }, + "num18": { + "cmd": "tsdb_data_export.exe", + "icon": "../../resource/zh/workBench/buttonForm/DatabaseCheck.png", + "param": "", + "desc": "Exportation\ndes données" + }, + "num19": { + "cmd": "Custom", + "icon": "../../resource/zh/workBench/buttonForm/add.png", + "param": "custom", + "desc": "Personnalisation" + }, + "num2": { + "cmd": "DbCheck", + "icon": "../../resource/zh/workBench/buttonForm/DatabaseCheck.png", + "param": "", + "desc": "Détection de base\nde données" + }, + "num3": { + "cmd": "AutoStart", + "icon": "../../resource/zh/workBench/buttonForm/SysStart.png", + "param": "", + "desc": "Présentation à\ndémarrage automatique" + }, + "num4": { + "cmd": "model_system_config.exe", + "icon": "../../resource/zh/workBench/buttonForm/SystemModeling.png", + "param": "", + "desc": "Configuration\ndu système" + }, + "num5": { + "cmd": "model_studio.exe", + "icon": "../../resource/zh/workBench/buttonForm/DevModeling.png", + "param": "", + "desc": "Création\nd'équipement" + }, + "num6": { + "cmd": "hmi.exe", + "icon": "../../resource/zh/workBench/buttonForm/PictureConfiguration.png", + "param": "", + "desc": "Usine\ngraphique" + }, + "num7": { + "cmd": "db_manager.exe", + "icon": "../../resource/zh/workBench/buttonForm/EngineeringManagement.png", + "param": "", + "desc": "Gestion\ndes projets" + }, + "num8": { + "cmd": "fbd_designer.exe", + "icon": "../../resource/zh/workBench/buttonForm/LogicProgramming.png", + "param": "", + "desc": "Programmation\nlogique" + }, + "num9": { + "cmd": "camera_statistics.exe", + "icon": "../../resource/zh/workBench/buttonForm/preset_config.png", + "param": "", + "desc": "Configuration\ndu point prédéfini" + } + }, + "page1": [ + "num0", + "num10", + "num4", + "num5", + "num6", + "num7", + "num8" + ], + "page3": { + "count": 3, + "group0": { + "value": [ + "num0", + "num1", + "num2", + "num3", + "num19" + ], + "desc": "Suivi opérationnel" + }, + "group1": { + "value": [ + "num4", + "num5", + "num6", + "num7", + "num8", + "num15" + ], + "desc": "Configuration de la modélisation" + }, + "group2": { + "value": [ + "num10", + "num11", + "num12", + "num14", + "num19" + ], + "desc": "Débogage du système" + } + }, + "restartpng": "../../resource/zh/sys_monitor/restart.png", + "startbarbodercolor": "#ccf4d3", + "startbarwatercolor": "#00ca21", + "startpng": "../../resource/zh/sys_startup/start.png", + "stopbarbodercolor": "#ffe1d9", + "stopbarwatercolor": "#ff6840", + "stoppng": "../../resource/zh/sys_startup/stop.png", + "sysicon": "../../resource/zh/sys_startup/sys_startup.ico" +} diff --git a/resource/zh/apc_if_srv/translate/apc_if_srv_zh.mo b/resource/zh/apc_if_srv/translate/apc_if_srv_zh.mo new file mode 100644 index 0000000000000000000000000000000000000000..a72246b19a74cecf8317c4ea3824e9cb993d8428 GIT binary patch literal 513 zcmZut!A=4(6vXIhkDfjB;7z-9(S)TNF0NpRfEz{QjnwjBYnFD?78L)(Z}Knv7T>Z7 zaPXzmcJiigCjC7<`EFnxAS|!dg|&{?~PC-B37BCst@z2yZM}4252- z!~*C9#PWc1@|921aWEQ;diz9C$b!^p4;sg8O3dTo(>KdPD4h_Q3+uplpC^49?{$^k z94zf=X=X|gYFH`r7KDYPFVNr=)DI~CN1EwCWefgB-V-W!2_ur z^x?sUWE;7ipJLZrs_3uU_(p~0NTD!uKp+dJ(r3|_|(s}pEhET#Z zj|jC$q=Sxs$q(>PL&;TcMZsOh!1vp$1IyROD&#We4h>i9zbf+2MpL4^G(0CGZKjri zDr#!`K@XZ`pZ1p8qnxLf?5Dz278wx2lZ3>2Iz{t#nRiE*CKiLnI)ldhiG%B6_DGw= zZc2-HR4vh~K9j-91%jJ63(+Q_Xw+-fjkEar>gV$>$Ddy=4iDljA6vqt|A$ep*;+C+`bLniL5HY6D&Q6f6)sow_hE@*GP|Hdape^WA&?-@WJO_v7?LTY_;CI0IyX zQ-BSGqX}FBo&j;-J8%y8155&Ek4e&7pa5J1`}grkr=5s&1lCa3gcT&i0TO8f0M{_? z(3#hgvq(@b4tptC(HfqwO?Ph z#}4}K9lzCy4oU}4TmI_Kpz{sR{8LY~ zXNjOXN~j49s~Xlcq$PD#JFg~HRW1-NaETFz+eElbN8oX44N{}HM9G4V?o>@f965FL zpkB$$$}{ + + + + CAbout + + + 关于 + + + + + 逻辑编程工具 版本 V1.0 + + + + + 关闭 + + + + + CDiagram + + + + 错误 + + + + + 一个输入不能连入多个输出! + + + + + ====================FBD图检查====================== + + + + + 当前FBD图中没有模块! + + + + + > 模块 [ + + + + + ] 的输入 + + + + + 连接了超过一个节点 + + + + + FBD图检查结束,共检查了%1个模块,发现了%2个错误 + + + + + 读文件模块错误,模块不存在,请重新安装程序! + + + + + 读实时库错误,停止运行! + + + + + 实时库连接错误! + + + + + 保存模块表... + + + + + 写数据库错误 + + + + + 保存操作完成... + + + + + 数据库保存失败 + + + + + 数据库已保存 + + + + + 数据库保存失败 + + + + + 选择 + + + + + 文件中存在输出参考模块,可能被其它fbd图引用,确认删除? + + + + + 当前文件中的模块没有库信息! + + + + + 从数据库中删除数据错误! + + + + + CDiagramScene + + + &撤销 + + + + + &重做 + + + + + 没有与模块 + + + + + + 的当前端口相匹配的类型 [ + + + + + 与 + + + + + CFBDMainWindow + + + 逻辑编程工具 + + + + + Tab 1 + + + + + Tab 2 + + + + + 文件(&F) + + + + + 编辑(&E) + + + + + + 帮助(&H) + + + + + 视图(&V) + + + + + 工具栏 + + + + + 模块库 + + + + + QToolBox::tab { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #E1E1F1, stop: 0.4 #DDDDFD, + stop: 0.5 #D8D8F8, stop: 1.0 #D3D3F3); + border-radius: 8px; + color: #222244; + } + QToolBox::tab:pressed { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 1.0 #E1E1F1, stop: 0.5 #DDDDFD, + stop: 0.4 #D8D8F8, stop: 0.0 #D3D3F3); + border-radius: 8px; + color: #222244; + } + QToolBox::tab:selected { /* italicize selected tabs */ + color: #4444ff; + } + + + + + Page + + + + + 属性编辑 + + + + + + 帮助 + + + + + 连接检查提示 + + + + + 打开(&O) + + + + + 打开 + + + + + Ctrl+O + + + + + + + 保存 + + + + + + 保存Xml文件,保存数据库 + + + + + Ctrl+S + + + + + Reload + + + + + Ctrl+R + + + + + 另存为 + + + + + 另存Xml文件,另存数据库 + + + + + Ctrl+Shift+S + + + + + 退出(&X) + + + + + Ctrl+Q + + + + + 运行 + + + + + 持续读取/停止读取实时库信息 + + + + + R + + + + + 显示信息 + + + + + I + + + + + 新建(&N) + + + + + 新建 + + + + + Ctrl+N + + + + + 关闭(&C) + + + + + 关闭 + + + + + F1 + + + + + &Settings... + + + + + 关于(&A) + + + + + 放大 + + + + + 缩小 + + + + + 恢复 + + + + + 显示全部 + + + + + Move view + + + + + 显示模块库窗口 + + + + + 显示属性编辑窗口 + + + + + + 设置组信息 + + + + + 检索器 + + + + + 打开检索器 + + + + + TagInfo Refresh + + + + + 根据Taginfo更新当前文档中数据库的点 + + + + + + + 删除 + + + + + 删除Xml文件,删除数据库中数据 + + + + + 只保存Xml文件 + + + + + + 检查连接 + + + + + 从内存库读取 + + + + + 从实时库中读取每个模块输出端口信息 + + + + + 数据库中删除,Xml文件删除 + + + + + + 左对齐 + + + + + 复制(&C) + + + + + 复制 + + + + + Ctrl+C + + + + + 粘贴(&P) + + + + + 粘贴 + + + + + Ctrl+V + + + + + 剪切(&U) + + + + + 剪切 + + + + + Ctrl+X + + + + + + 顶对齐 + + + + + + 右对齐 + + + + + + 底对齐 + + + + + + 刷新界面 + + + + + 只删除数据库中数据 + + + + + + 中文 + + + + + 英文 + + + + + 状态 + + + + + Execution: + + + + + Open diagram + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 错误 + + + + + 同名文件已经打开,请先关闭已打开文件! + + + + + %1 内容为空,请检查! + + + + + 数据库保存成功 + + + + + 数据库保存失败 + + + + + + xml文件保存成功 + + + + + + + 文件无法保存在位置' + + + + + + + 数据库初始化不成功,请保存成xml文件,或者重新运行程序 + + + + + + + + + 开始保存文件... + + + + + 故障树标签:%1在数据库中已经存在,请重新设置标签! + + + + + + + Save diagram + + + + + 同名文件已经打开,请先关闭已打开的文件! + + + + + 打开文件错误 + + + + + 文件不存在: +%1 + + + + + &%1 %2 + + + + + + 实时库初始化不成功,请重新运行程序 + + + + + + 读实时库错误! + + + + + 读实时库完成! + + + + + 确认 + + + + + 图形的修改未保存,是否关闭? + + + + + &翻转 + + + + + 现在被选中模块是 %1 + + + + + 现在被选中模块是 %1_%2 + + + + + 现在被选中模块个数是 %1 + + + + + + + + + 找不到当前fbd文档! + + + + + 打开检索器... + + + + + + + 找不到该文件! + + + + + + + 数据库初始化不成功,请重新运行程序 + + + + + + + 删除数据库的相关数据... + + + + + + + + + + 数据库删除错误: + + + + + + + 取消数据库删除 + + + + + + 文件删除成功,提交版本库成功! + + + + + xml文件保存成功 + + + + + 选中模块左对齐 + + + + + 选中模块上端对齐 + + + + + 选中模块右对齐 + + + + + 选中模块下端对齐 + + + + + 复制选中模块 + + + + + 粘贴操作 + + + + + 剪切选中模块 + + + + + 文件被占用,无法保存在位置' + + + + + 该文件没有保存过,没有库信息 + + + + + 数据库删除成功 + + + + + 数据库删除失败 + + + + + CHelp + + + Form + + + + + CLuaEditDialog + + + Dialog + + + + + CProgressBarDialog + + + 进度 + + + + + 处理中... + + + + + CProperty + + + 名称 + + + + + 输出 + + + + + 输出名称 + + + + + 输入测点串 + + + + + 输出测点串 + + + + + 控制测点串 + + + + + 动作名称 + + + + + 使能类型 + + + + + 超时时间(单位:s) + 超时时间 + + + + + 控制动作串 + + + + + 失败逻辑 + + + + + 重做次数 + + + + + 再次失败逻辑 + + + + + + 转换个数 + + + + + 输出Y名称 + + + + + 输出QU名称 + + + + + 输出QL名称 + + + + + + 输出名称1 + + + + + 输出名称0 + + + + + 进程逻辑 + + + + + 输出名称2 + + + + + 文本 + + + + + 颜色 + + + + + 字体 + + + + + 大小 + + + + + 页数 + + + + + 机组个数 + + + + + 调节死区 + + + + + 最大调节步进 + + + + + 最小调节周期(单位:ms) + + + + + 通讯超时时间(单位:ms) + + + + + 通讯异常延迟复归时间(单位:ms) + + + + + 调节异常延迟复归时间(单位:ms) + + + + + 停止充电SOC + + + + + 恢复充电SOC + + + + + 恢复放电SOC + + + + + 停止放电SOC + + + + + 机组通讯异常数据策略 + + + + + 实例名称 + + + + + LUA内容 + + + + + 端口间距 + + + + + 图元宽度 + + + + + + 输入端口 + + + + + + 输出端口 + + + + + + 类型 + + + + + + + + + + + + + + 机组 + + + + + 最大功率 + + + + + 最小功率 + + + + + 最大放电功率 + + + + + 最小放电功率 + + + + + 最大充电功率 + + + + + 最小充电功率 + + + + + 额定容量 + + + + + 调节超时时间(单位:ms) + + + + + 使用可增有功输入 + + + + + 使用可减有功输入 + + + + + CRetriever + + + 检索器 + + + + + + 专业: + + + + + + 位置: + + + + + 设备组: + 设备: + + + + + 表名: + + + + + 检索方式: + + + + + 设备检索 + + + + + 表检索 + + + + + 点类型: + + + + + 值: + + + + + 点名: + + + + + 列名: + + + + + + 数字量 + + + + + + 模拟量 + + + + + + 混合量 + + + + + + 累积量 + + + + + + 常量 + + + + + + + 通用 + + + + + + + 其他 + + + + + 值 + + + + + 状态 + + + + + CSetGroupDialog + + + 设置FBD图的属性 + + + + + 设置图名称: + + + + + 图名称不能重复 + + + + + 选择故障组: + + + + + 所属组,组类型,刷新等级,复杂度 + + + + + 所属域: + + + + + 所属位置: + + + + + 所属专业: + + + + + + + + + + + + 错误 + + + + + + 读取数据库的分组信息错误! + + + + + 未知位置 + + + + + 读取数据库的位置信息错误! + + + + + 未知专业 + + + + + 读取数据库的专业信息错误! + + + + + 所属组:%1,扫描速度:%2,复杂度:%3,位置:%4,专业:%5 + + + + + 故障树标签不能为空! + + + + + 故障树标签长度不能超过40字节! + + + + + 读取数据库错误! + + + + + 当前域的组内故障树数量已满! + + + + + CStringListDialog + + + Dialog + + + + + 添加 + + + + + 删除 + + + + + 选择 Plugin 路径 + + + + + PowerControlGENPlugin + + + 总有功目标值 + + + + + 总有功上限 + + + + + 总有功下限 + + + + + 总调节使能 + + + + + 总有功 + + + + + 总可增有功 + + + + + 总可减有功 + + + + + 状态码 + + + + + 错误码 + + + + + 0-使用0值,1-保持最后值 + + + + + GEN个数不能小于0个!!! + + + + + GEN个数不能大于50个!!! + + + + + + 机组%1有功实际值 + + + + + 【调节死区】值错误,合法值:大于0 + + + + + 【最大调节步进】值错误,合法值:大于0 + + + + + 【最小调节周期】值错误,合法值:大于0 + + + + + 【通讯超时时间】值错误,合法值:大于0 + + + + + 【通讯异常延迟复归时间】值错误,合法值:大于0 + + + + + + 机组%1有功设定值 + + + + + + 机组%1可增有功 + + + + + + 机组%1可减有功 + + + + + + + + 机组%1调节使能 + + + + + + 机组%1分配有功 + + + + + + 机组%1状态码 + + + + + + 机组%1错误码 + + + + + PowerControlPCSPlugin + + + 总有功目标值 + + + + + 总有功上限 + + + + + 总有功下限 + + + + + 总调节使能 + + + + + 总有功 + + + + + 总可增有功 + + + + + 总可减有功 + + + + + 总SOC + + + + + 状态码 + + + + + 错误码 + + + + + 0-使用0值,1-保持最后值 + + + + + PCS个数不能小于0个!!! + + + + + PCS个数不能大于100个!!! + + + + + + 机组%1有功设定值 + + + + + + 机组%1有功实际值 + + + + + 【调节死区】值错误,合法值:大于0 + + + + + 【最大调节步进】值错误,合法值:大于0 + + + + + 【最小调节周期】值错误,合法值:大于0 + + + + + 【通讯超时时间】值错误,合法值:大于0 + + + + + 【通讯异常延迟复归时间】值错误,合法值:大于0 + + + + + 【停止充电SOC】值错误,合法值:大于等于0,小于等于1 + + + + + 【恢复充电SOC】值错误,合法值:大于等于0,小于等于停止充电SOC + + + + + 【恢复放电SOC】值错误,合法值:大于等于0,小于等于恢复充电SOC + + + + + 【停止放电SOC】值错误,合法值:大于等于0,小于等于恢复放电SOC + + + + + + 机组%1 SOC + + + + + + + + 机组%1调节使能 + + + + + + 机组%1分配有功 + + + + + + 机组%1状态码 + + + + + + 机组%1错误码 + + + + + QObject + + + 加(D) + + + + + + + + + + + + 运算模块 + + + + + 加(A) + + + + + 除(D) + + + + + 减(D) + + + + + 除(A) + + + + + 减(A) + + + + + 非 + + + + + + + 布尔运算 + + + + + 与 + + + + + AO控制 + + + + + + 动作报警 + + + + + 输入(D) + + + + + + + + + + 输入输出常量 + + + + + 常量(D) + + + + + 输入(A) + + + + + 常量(A) + + + + + 或 + + + + + 大于(D) + + + + + + + + + + + 比较模块 + + + + + 小于(D) + + + + + 大于等于(D) + + + + + 小于等于(D) + + + + + 等于(D) + + + + + 大于(A) + + + + + 小于(A) + + + + + 乘(A) + + + + + 乘(D) + + + + + Float转Int + + + + + + + + 数据类型转换 + + + + + Int转Float + + + + + Int转Bool + + + + + Bool转Int + + + + + 输出(D) + + + + + 输出(A) + + + + + 防抖延时(D) + + + + + + + 逻辑模块 + + + + + 输入选择 + + + + + 按位拆解 + + + + + 储能机组有功分配器 + + + + + + 功率控制 + + + + + 发电机组有功分配器 + + + + + DO控制 + + + + + LUA脚本 + + + + + 脚本模块 + + + + + QPropertyEditorWidget + + + 测点串 + + + + + 请把检索器中的点拖到属性中含“测点串”的行里 + + + + + 点被拖到属性为“ + + + + + ”中 + + + + + actionAOplugin + + + 1-上升沿触发,2-下降沿触发,3-高电平触发,4-低电平触发,5-PID触发 + + + + + 1-动作停止,2-动作跳过,3-动作自动重做 + + + + + 1-动作停止,2-动作跳过 + + + + + actionDOplugin + + + 1-上升沿触发,2-下降沿触发,3-高电平触发,4-低电平触发,5-PID触发 + + + + + 1-动作停止,2-动作跳过,3-动作自动重做 + + + + + 1-动作停止,2-动作跳过 + + + + + add2Plugin + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + add2fPlugin + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + and2Plugin + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + bitsplitPlugin + + + 输出个数不能超过64个!!! + + + + + 输出值不能小于1 + + + + + 输出值与现值相同 + 输入个数不能超过64个!!! + + + + + divPlugin + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + divfPlugin + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + inputswitchPlugin + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + luaPlugin + + + 宽度不能大于1000 + + + + + 宽度不能小于40 + + + + + + + + 输入值与现值相同 + + + + + 端口间隔不能大于400 + + + + + 端口间隔不能小于16 + + + + + + 输入个数不能超过32个!!! + + + + + + 输入值不能小于0 + + + + + + 0-整型,1-浮点型,2-布尔型 + + + + + mulPlugin + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + mulfPlugin + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + or2Plugin + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + subPlugin + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + subfPlugin + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + diff --git a/resource/zh/fbd_editor/translate/platform_zh.qm b/resource/zh/fbd_editor/translate/platform_zh.qm new file mode 100644 index 00000000..be651eed --- /dev/null +++ b/resource/zh/fbd_editor/translate/platform_zh.qm @@ -0,0 +1 @@ + + + + + CAbout + + + 关于 + + + + + 逻辑编程工具 版本 V1.0 + + + + + 关闭 + + + + + CDiagram + + + + 错误 + + + + + 一个输入不能连入多个输出! + + + + + + ================ + + + + + FBD图检查 + + + + + 图元自检失败 + + + + + 当前FBD图中没有模块! + + + + + > + + + + + 图元的输入 + + + + + 连接了超过一个节点 + + + + + FBD图检查结束,共检查了%1个模块,发现了%2个错误 + + + + + 读文件模块错误,模块不存在,请重新安装程序! + + + + + 最后刷新时间: + + + + + CFBDMainWindow + + + 逻辑编程工具 + + + + + Tab 1 + + + + + Tab 2 + + + + + 文件(&F) + + + + + 编辑(&E) + + + + + + 关于(&A) + + + + + 视图(&V) + + + + + 工具栏 + + + + + 图元列表 + + + + + + 业务类型 + + + + + Page + + + + + 属性编辑 + + + + + 连接检查提示 + + + + + 图列表 + + + + + 1 + + + + + Group0 + + + + + Graph0 + + + + + Graph1 + + + + + Graph2 + + + + + Graph3 + + + + + Graph4 + + + + + Group1 + + + + + Graph5 + + + + + Group2 + + + + + Graph6 + + + + + 组信息 + + + + + 模板列表 + + + + + + 保存 + + + + + Ctrl+S + + + + + 退出(&X) + + + + + Ctrl+Q + + + + + 运行 + + + + + 持续读取/停止读取实时数据 + + + + + R + + + + + 新建(&N) + + + + + 新建 + + + + + Ctrl+N + + + + + 关闭(&C) + + + + + 关闭 + + + + + 放大 + + + + + 缩小 + + + + + 恢复 + + + + + 显示全部 + + + + + 显示图元列表窗口 + + + + + 显示属性编辑窗口 + + + + + + 设置图属性 + + + + + 检索器 + + + + + 打开检索器 + + + + + + 检查连接 + + + + + + 左对齐 + + + + + 复制(&C) + + + + + 复制 + + + + + Ctrl+C + + + + + 粘贴(&P) + + + + + 粘贴 + + + + + Ctrl+V + + + + + 剪切(&U) + + + + + 剪切 + + + + + Ctrl+X + + + + + + 顶对齐 + + + + + + 右对齐 + + + + + + 底对齐 + + + + + + 刷新界面 + + + + + 显示图列表窗口 + + + + + + 打开xml文件 + + + + + + 保存为模板 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 错误 + + + + + 加载样式文件失败 + + + + + 初始化所有图元失败 + + + + + 读取配置文件失败 + + + + + 输入输出 + + + + + 数学运算 + + + + + 比较模块 + + + + + 数据类型转换 + + + + + 布尔运算 + + + + + 逻辑模块 + + + + + 控制输出 + + + + + 功率控制 + + + + + 脚本模块 + + + + + 告警模块 + + + + + ALL + + + + + 监控 + + + + + 其他 + + + + + 状态 + + + + + + + + + + + 打开数据库失败 + + + + + 已生效 + + + + + 未生效 + + + + + 初始化图元菜单失败 + + + + + 初始化图列表失败 + + + + + 初始化模板列表失败 + + + + + 从数据库中读取图【%1】失败 + + + + + + 删除确认 + + + + + 确定删除图 %1 吗? + + + + + 删除图失败 + + + + + + 更新组信息失败 + + + + + 当前用户无编辑权限 + + + + + + 创建路径【%1】失败 + + + + + Open Diagram + + + + + 数据库中已包含此图,请修改名称后再打开 + + + + + 打开文件失败 + + + + + 图检查有错误且生效状态为【是】时不能保存 + + + + + + 保存图失败 + + + + + 保存图成功 + + + + + + 警告 + + + + + 当前图未保存 + + + + + 当前图未使能 + + + + + 请输入模板名 + + + + + 模板名: + + + + + 名称不能为空 + + + + + 模板名称重复 + + + + + 查询数据库失败 + + + + + + 保存模板失败 + + + + + + + 信息 + + + + + 保存模板成功 + + + + + 确认 + + + + + 图形的修改未保存,是否关闭? + + + + + 现在被选中模块是 %1 + + + + + 现在被选中模块是 %1_%2 + + + + + 现在被选中模块个数是 %1 + + + + + 从数据库中读取图失败 + + + + + 导出为xml文件 + + + + + 删除此图 + + + + + 选择导出路径 + + + + + 询问 + + + + + 文件已存在,是否覆盖? + + + + + 文件打开失败 + + + + + 从数据库读取文件内容失败 + + + + + 导出成功 + + + + + 打开检索器... + + + + + 找不到当前fbd文档! + + + + + 确定删除模板 %1 吗? + + + + + 删除成功 + + + + + 删除失败 + + + + + 选中模块左对齐 + + + + + 选中模块上端对齐 + + + + + 选中模块右对齐 + + + + + 选中模块下端对齐 + + + + + 复制选中模块 + + + + + 粘贴操作 + + + + + 剪切选中模块 + + + + + CFBDRetriever + + + 检索器 + + + + + + 专业: + + + + + + 位置: + + + + + 设备组: + + + + + 表名: + + + + + 检索方式: + + + + + 设备检索 + + + + + 表检索 + + + + + 点类型: + + + + + 值: + + + + + 点名: + + + + + 列名: + + + + + + 数字量 + + + + + + 模拟量 + + + + + + 混合量 + + + + + + 累积量 + + + + + + 常量 + + + + + + + 通用 + + + + + + + 其他 + + + + + 值 + + + + + 状态 + + + + + CGraphicsScene + + + &撤销 + + + + + &重做 + + + + + 没有与模块 + + + + + + 的当前端口相匹配的类型 [ + + + + + 与 + + + + + CGroup + + + Form + + + + + 注意:修改组的【所属专业】属性后需要重启监控系统 + + + + + 添加 + + + + + 修改 + + + + + 删除 + + + + + 关闭 + + + + + 组信息 + + + + + ID + + + + + 名称 + + + + + 描述 + + + + + 刷新间隔 + + + + + 业务类型 + + + + + 所属位置 + + + + + 所属专业 + + + + + 更新时间 + + + + + 版本号 + + + + + + + + + + + + 错误 + + + + + 创建系统信息访问库失败 + + + + + 获取所有位置信息失败 + + + + + 获取所有专业信息失败 + + + + + + 打开数据库失败 + + + + + 查询fbd_group表最大id失败 + + + + + 添加组 + + + + + + 告警 + + + + + + 请先选择一条记录 + + + + + 修改组 + + + + + 查询此组包含的图失败 + + + + + 警告 + + + + + 此组内有未删除的图,请先删除图 + + + + + 提示 + + + + + 确认删除? + + + + + 删除失败 + + + + + CGroupEdit + + + Form + + + + + 名 称 + + + + + 描 述 + + + + + 刷新间隔 + + + + + (单位:毫秒) + + + + + 业务类型 + + + + + 所属位置 + + + + + 所属专业 + + + + + 确定 + + + + + 取消 + + + + + + + + + + + 错误 + + + + + 创建系统信息访问库失败 + + + + + 获取所有位置信息失败 + + + + + 获取所有专业信息失败 + + + + + 组名称不能为空 + + + + + 打开数据库失败 + + + + + 查询fbd_group表最大id失败 + + + + + SQL语句执行失败 + + + + + CPluginManager + + + 错误 + + + + + 存在同名插件: + + + + + CProperty + + + + 端口 + + + + + + 显示名称 + + + + + 图元显示名称 + + + + + CPropertyTreeView + + + 测点串 + + + + + 请把检索器中的点拖到属性中含“测点串”的行里 + + + + + 点被拖到属性为“ + + + + + ”中 + + + + + CSetGroupDialog + + + 图 名 称 + + + + + 不能重复 + + + + + 选 择 组 + + + + + 是否使能 + + + + + 设置图属性 + + + + + 是 + + + + + 否 + + + + + + + + + + 错误 + + + + + + 打开数据库失败 + + + + + 获取组ID失败 + + + + + 请重新命名 + + + + + 图名称重复 + + + + + 查询数据库失败 + + + + + CTemplateWidget + + + 删除此模板 + + + + + QObject + + + 输入测点未设置 + + + + + 输出测点未设置 + + + + + 未关联所有输入端口 + + + + + 加(D) + + + + + 加(A) + + + + + 除(D) + + + + + 减(D) + + + + + 除(A) + + + + + 减(A) + + + + + 非 + + + + + 与 + + + + + AO控制 + + + + + DO控制 + + + + + 输入(D) + + + + + 常量(D) + + + + + 输入(A) + + + + + 常量(A) + + + + + 常量(S) + + + + + 或 + + + + + 大于(D) + + + + + 小于(D) + + + + + 大于等于(D) + + + + + 小于等于(D) + + + + + 等于(D) + + + + + 不等于(D) + + + + + 不等于(A) + + + + + 大于(A) + + + + + 小于(A) + + + + + 乘(A) + + + + + 乘(D) + + + + + Float转Int + + + + + Int转Float + + + + + Int转Bool + + + + + Bool转Int + + + + + 输出(D) + + + + + 输出(A) + + + + + 防抖延时(D) + + + + + 输入选择 + + + + + 按位拆解 + + + + + LUA脚本 + + + + + actionAOplugin + + + 目标值 + + + + + 使能 + + + + + 0-NO + + + + + 1-YES + + + + + 动作名称 + + + + + 超时时间(单位:s) + + + + + 控制测点串 + + + + + 失败重做次数 + + + + + 输入控制测点串 + + + + + 测点 + + + + + actionDOplugin + + + 目标值 + + + + + 使能 + + + + + 0-NO + + + + + 1-YES + + + + + 动作名称 + + + + + 超时时间(单位:s) + + + + + 控制测点串 + + + + + 失败重做次数 + + + + + 输入控制测点串 + + + + + 测点 + + + + + add2Plugin + + + 转换个数 + + + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + add2fPlugin + + + 转换个数 + + + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + and2Plugin + + + 转换个数 + + + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + antishakePlugin + + + 0-无效值延迟(输出无效0) + + + + + 1-有效值延迟 + + + + + bitsplitPlugin + + + 转换个数 + + + + + 输出个数不能超过64个!!! + + + + + 输出值不能小于1 + + + + + 输出值与现值相同 + + + + + constPlugin + + + 输出 + + + + + constfPlugin + + + 输出 + + + + + constsPlugin + + + 输出 + + + + + divPlugin + + + 转换个数 + + + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + divfPlugin + + + 转换个数 + + + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + inputPlugin + + + 0-NO + + + + + 1-YES + + + + + 输入测点串 + + + + + 是否输出测点串 + + + + + 测点串 + + + + + inputfPlugin + + + 输入测点串 + + + + + inputswitchPlugin + + + 转换个数 + + + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + luaPlugin + + + LUA内容 + + + + + 端口间距 + + + + + 图元宽度 + + + + + 输入个数 + + + + + 输出个数 + + + + + 输入端口 + + + + + + 数据类型 + + + + + 输出端口 + + + + + + 0 + + + + + + 1 + + + + + + 2 + + + + + + 3 + + + + + + 4 + + + + + 宽度不能大于1000 + + + + + 宽度不能小于40 + + + + + + + + 输入值与现值相同 + + + + + 端口间隔不能大于400 + + + + + 端口间隔不能小于16 + + + + + + 输入个数不能超过32个!!! + + + + + + 输入值不能小于0 + + + + + + 0-整型 + + + + + + 1-浮点型 + + + + + + 2-布尔型 + + + + + + 3-字符串型 + + + + + + 4-告警型 + + + + + mulPlugin + + + 转换个数 + + + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + mulfPlugin + + + 转换个数 + + + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + or2Plugin + + + 转换个数 + + + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + outputPlugin + + + 使能 + + + + + 输出测点串 + + + + + 仅判断使能端口值不判断值是否有效 + + + + + outputfPlugin + + + 使能 + + + + + 输出测点串 + + + + + 仅判断使能端口值不判断值是否有效 + + + + + subPlugin + + + 转换个数 + + + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + + subfPlugin + + + 转换个数 + + + + + 输入个数不能超过32个!!! + + + + + 输入值不能小于2 + + + + + 输入值与现值相同 + + + + diff --git a/resource/zh/fes/translate/fes_zh.mo b/resource/zh/fes/translate/fes_zh.mo new file mode 100644 index 0000000000000000000000000000000000000000..4d032e5d90e99c7491680176e75d89422b07f4c7 GIT binary patch literal 496 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 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/alarm/icon_中.png b/resource/zh/gui/icon/alarm/icon_中.png new file mode 100644 index 0000000000000000000000000000000000000000..642c410844e46d6f8fe6e7d993fe611d7e88d728 GIT binary patch literal 261 zcmV+g0s8)lP)4u*Y0002YNkl zI}U4u*Y0002XNkl zO%8%E5Jn%yMB*jXg&U8eF1(C-3-RYH9>EJ3b?Y%?hZ!<8wREiTB`jKo$JYnh>(VEY zh2B2@8cTt4;0nml3@EL^UZTw!m;w`E+qIEAd;^BMF16LOZKItBL63Q~hAof?UPbno zp8O= zQ9{Nr^aj8w<}iidg*O=W0r{MT|KU#sU>=VcL0@t=8jzk0FoTKWIdi}?PSBaud<@8a zVmuVZx0u9s1>i&04u*Y0002VNkl@zy#R-N+d7efT6#xJXP71Xcv{>*F2?$Q$-?pW!zsz z@*A;M8vs}DMw0o{`LnddTSS|v#EL0i6ODnpa-)f`#A~9xDoN!{d|Wh72zH7lq#-`6 zrUf_FH&zRIi4R2K5AGTfFCV8S8Uc?l-B_u`3(?_^5=jmmpYDn%0|-AD+yDRo07*qo IM6N<$f_&L!n*aa+ literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/alarm/icon_高.png b/resource/zh/gui/icon/alarm/icon_高.png new file mode 100644 index 0000000000000000000000000000000000000000..93891e3ace5f28f843d8e98d63cd2b0521328a96 GIT binary patch literal 253 zcmV4u*Y0002QNklG!{^qhHInuunNe!Id^!FIkNtsWo00000NkvXXu0mjf Dh;e1& literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/alarm/trend_dark.png b/resource/zh/gui/icon/alarm/trend_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..1e403e5f7e87e777db443ea24c0add5c7f8a78a7 GIT binary patch literal 438 zcmV;n0ZIOeP)4)jvzaKo|z_=dOZe=wJr1&05kAAn59-po^1qbBU9i zgPUCihl-oKT?ChY0avB{0M@K2f>03)nR+Mprm<l5Oi+r# z>?)*P0m2cDO%vlq!|yKiKO|Nq)J|-BV15rQ{v&z8`H1}!z;VGIJF~0K7%eDvj-pkn ziQ{H=T&fS$YI1W1P;C>vK6g{yJ+kC)J}t6D-xmI)hr-eH%b-uSOKvf}S7Q@51Zt7^ geBIpt`-uPx$wMj%lR7gwhmO)N~Koo}mho;il#Jbc#(%wK%V7-B!K$pS_Parq2D{v<_us4t! zs3(vFqRVQcVOk5%3|dknZH17oe5=VY^S<}~nfC_5ii}po!9S?7(wTJXS=a-?7Ovi_ z>}koy(x43^vKUG*c6SG5f+_`S7*9tE5|4}Xc) zAoc9ILrU_<=~@>`(gWi{xLUV`KRNt>6|FVJ_F7>JElCy%rYEW0RgUhL>c3(rV3qX1w} zIJ#ZN|FX5eGcrS4G+O;i*({)y>I}=GUi3W&k%F7J(dyQn$rPTyu(FS3^-{BO%7?PZ xe>~-~8vv86Nb9gfp_gfg|Nm#Gtmw+5`vm#z<{J(_``iEk002ovPDHLkV1lEy?BM_a literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/alarm/video_dark.png b/resource/zh/gui/icon/alarm/video_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..7147d9d5a847c3fafbd93ec2c6033aa6e0a50c18 GIT binary patch literal 400 zcmV;B0dM|^P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf0VPR9K~y+Tt&}Yi z!Y~kplX3?%0#gf`!Qq&}BQY3kt2qKQXpkrbntO19UVsz83!83!3+a%VZ`$4D<#m(E zRt$z?#w6nQ`XuFC;mpuW?(ZTpYvYe9Pi-3@Fyjq@#8Ik2oElwFIWJ~wnp0mZR+avA z0Evv0hp;^gY~=1NE>8rGvNJkSGBZ!|&l%7&ljT%CV#nzX0K^r$IN3y=k&4E(@ zX)#^$g0HTqVY)OaMss9 zXa@HrZCX?J!eWi0?WriXsXjrT(yw0)69QA!bEgJR+*RA*FHLan<;({^%ZN? u|2CUxFi2=qI_Vyu-&Ym8cxcm{499OKA_J%vc1{@p0000` j=fCd5JU9QH*bZ?8<`Wuax@BeB00000NkvXXu0mjfmC;>y literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/alarm/wave_dark.png b/resource/zh/gui/icon/alarm/wave_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..b18454fa55aeceb6a00df0a4671fe406540c0cd0 GIT binary patch literal 613 zcmV-r0-F7aP)){m5QSe)kz_mO0)Z+^+ax!TPXIoF$r5RUPhfI_kOlHqH%M}V$R~)_$W?Fxp=}bC zIyG`sQOTe`MtF7>cw%v2x^k^PY(OV-VT^r29A(;IEZsOSsC*R!bSG=#-(n@u=Sd^i+!FMYv0K z0u&=oLD#W;`K>DYp&PPRfD1SDiIH_dCRkbdDFp;gQsAL1^;rNe+%N{iC&DD9!8o3e zceyGj0}S1b2ha_ey~r^?mK9*aQr#h{gC25r5tFE>=BfErE&XrvrRjiN~tN9DG^cm+;B7dTBk00000NkvXXu0mjfaTO7b literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/alarm/wave_light.png b/resource/zh/gui/icon/alarm/wave_light.png new file mode 100644 index 0000000000000000000000000000000000000000..1df62d88bbe119c4f9ef2e9cd6c89e83caba35ce GIT binary patch literal 963 zcmV;!13dhRP)5dKzoFIb+5Qvpr|F%@7cz^NeiDqmXFNZk?(Ip6txl!B@BW57h zeSf$BAb4#8(D*u-tz}`Vt6FC4GBoDUW zOxR_m>GI{4nwo2_l#@Xcn{+TR(xS3wd{_W7NKQfcZvHFHdoDSb!8iiZ@vKPiRKI#q z8l~{HE|iXKVKQtzSOB6sezFxmdsu3ycxQH4_54yzDSoWc2`&6jR4hCtyicxF%fgv~ zbp>E4swYnwHA!@nApwWm7M_*fg7P^7FwvW_!uX`z&=%phX)90*hO$f2{8k$Cnq$N> z07mR6T9#KQBWV?G1pr3o1tN3Psc_Z-5kb--!u5;=7ph+kU5d9q>L#25m@AvBAo05`v-*Y!f}NI|)7TIWxa#>DL$9aoVB8o=Zbo0N^^n zq&4%9c3!sPmD12gVGkCYJ=*B4@^ztnX|bN-YRcIdS>2G7t;Sm&Wt5u{>5&?rbYiIiOT< zuJh$)jn-^lOc+tNRDf}+q<7^~oLNmtH92Ox(xuCd^J0>tPgk=+zEq^SGt-k<%^o+b zX8TMq)XD|T6db{8Z?&2gb82`?Y*sAn&YwFhr_3(|yPPg;LMzRvtbnrjhW7wkL|iv3 l_}cZ{hT5#>7`RSXe*m;E`eM+AO@{yg002ovPDHLkV1n#hzT*G@ literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/asset/record.png b/resource/zh/gui/icon/asset/record.png new file mode 100644 index 0000000000000000000000000000000000000000..3841ef3476342698b32dc3b47761c8f197dc33da GIT binary patch literal 1028 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 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/bi/face_light.png b/resource/zh/gui/icon/bi/face_light.png new file mode 100644 index 0000000000000000000000000000000000000000..0d4918102cfa8790b43047a18181ae263ed973a5 GIT binary patch literal 2612 zcmZ`*dpJ~EAD%Hx=xk>~r7c1(rCf?Z>WrBrw~R64Rv{;$Hl5s>h#2IqIF;tOlyRTQ zEkz=Cx(byo9Aea|j^ong7P*}@&hvcF^PT7W{@DB7zu$Ui?X`cu^}cHoXjF4Z5|+eZ zFp#CiAvy+wbpy|TiHm@{r)O;j00}>fqk$NVRGaX^rtOlF2f0s{hbZ>JzfZhNVaQm* zasI2{clDmP?U%79K+kk2eXYKaP0^NT8*?A+NQ_sCc{tJ%DK4%o@;u~2NYx9Y_1x6+ zd$WrgRxvY+r1Z)3Nz&9N3~3}j0*gT~WC+8>Vu%|A$PTz4x#( zOF@x$ZepQ*xHBSaTc_KB-Z@5ZS8uuJm%)0IxuEY0OYiAlI|^6jh)Ut2rSkfIubxo! z)@do|GhYo+uE+h}Ai_K2`{l^Db#Kx$LMk4(>FT2_tNS%oKkYT}Z^)~jT8>cK7gAPQ zu)o_-cV?_r<9^i#{Zmc`xL zTE(JB(>jC1b5#9Gdh5ix3+JMA*}VblpoyNZ3RqF}+* ztGjyTM!qFqwbhhBng(hX#Ej>SMpsJiaPV~#6Y`wslt9h%mJT%2H%E1Rx0cqE*X8W^ z0kJTCzO*|77A{3I%?BPxV1eiT!TMj5#ki3$LA@v43yW~@@v(nUbV9eWKB7Wv&t z%9mkovu}%U6o|cKP%@;O$-yJ6eo-O~_flO*HK0H!>qSLPRp~Sj%;j|^#NjgoM^t+0 zt6lz2W_+}=vj~rne;Zl!FplVwO*AVw2t9xQo$q?9(cA0ulvNCT?eXyHNNQjGbbG76 za4@%Ef8O-BBg0Lp^qkmJ{O_uLzh9;W2yKr|P1=c3r ziN0Lla}Yw6Mg|od%8!BNsb+NsH6l59B-Iar2OQQDY0-yH<;@>%rkSdUBd)DqOaiCZ zBeAeFg*FC;xFi%KOgm(0vT+%1TOD5cbAep#a@-BAxs6^}aB zD_HDGh;<~ILJ9oxSuJ?T(hp@R7aM36YN9>~KWTsYsX%fv*E~=iq5LP7zgNlkZ_<4E_HWJt1F>?*hKNNy{pwIDYVHcwq zJZm^Sdtd*nLU*q6&iuvu7sIp9j6UBXhgeAFeYg&yQF%GKE}AOq=-4~6L=tvT%oMsQ zubS0gQwJ*F4oOpUob9zx_ZkW_zp%oUM~nW5mnhPES8mT$_FoEaFrEH#d!Y4Oj|5Tm z>g{4f;_4(2Xbu$&{*ZFu&C(<9`nzkB(p`vQH+W(|xo=J$5vlj9G?<<0Nqk*|Us47x zB(3wH?&C>ogtad2*1p%TYVE>2260Po(v1zcN%DzA8r3ORq$qks_ z+-x89@B6;jDC=C>e7NyM7I?q1^ssHwEg2ig$mRX~Xk}n74;x3_YI2K7)hBYK+s3*_ zzrR&9Jq&RP#48hyTgZ^OOrFz5rW*sNY3{OVdxts~ds7~`4K~8SXH4wA1P!NRlvX=4 zQQWL+htssFHL(WbxV%LnJ0IwyrKF_H4hJ*{bb@6T0FEP(^GqaKa6pJX8&Qhi+!PMfga8T^@d`_Sf3lzb=&xEfqzA zNX5TSu=m+ly^hS|$754q_cZ0KUn?Y9%^@S%n@%UT75gOe;LZy(Fa>GKA>@T>U*eM? zu4n;$U!aHXTQ~8k(C4$FwDR9=ENuQMnhpG-hm@0@jfMZ0=5x~kL|lA;tyT+gua)qtU2<($Y) zf+&%HHpjUxG-BLkz;?HgUj1<@;x@I5xg7S+LwGt4?P+`%q!s!USqm;@>MkGXz2Ng_ z(6nd$C0b~$`4e@6>hVTStlSjhISWol1*bB#k>~=G(MoPox_mS>BR@8nuyjMrE<1%aCIMkTcz6dBO<9&Eh75bxMR}FQT*ckB0?Lxg58?P7&JeYD>;f^`9 z-9rYU_C>->!9e561XnG=>16dJ!Gu_{*#I1JX&G(5I9!9Jex>sU(KJWz_sxKrTC<1S f(iUwhHm_5c=-_cZY{dxt4a8WQQ4f_JbdUNQ>b|X$ literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/DataOpt.png b/resource/zh/gui/icon/hmi/DataOpt.png new file mode 100644 index 0000000000000000000000000000000000000000..9028f9e2ca8aebb6c46f28c8b88f7e8cf2510455 GIT binary patch literal 805 zcmV+=1KRwFP)Px%-$_J4R7gwhl|N_{K^Vo~x2{nk#a*zl5VW+j378__3W6pWZf7r`MTCe55t{@o z6od$-NYFwsU_?Ph3nj9D&PZZ+7AZutmn2C;I><(uy} z@6G#W1pnxhf5gFm(3+k8Z`}{;y1Ke{tXpSa2G9=39EmegBgQt4H?%ikgCf5&l}^ZAx>0Q-McMB-^2f7$aR-W?qs z8%#lJm+QJk5o;7cP6YkF?_bG+q>arG+xGewBtosLeIm9a!rK6c8qQH?XXlotrj3_H z-~yZjWP55?y>n1X6#(OiZVkimSuI>omhAkn;=p>Icg|cdKO1wZQmJ&+OQce2Cm=Hb zhl3zET~qj+)ME`n=|ZhJCc+D(bX%4TFRAMdg5YL`s#}2c0Qf+1vxs~WLEB286DEyG zQr%K2l|C-V-+K>mqR~JX3f@7>qPhR(k|eoi);0tc3dMbv#VM`P7e)RRrPOXf%3AYO z6a^!H@(MNtIgVrJ^DXylk)0#C6~H@lnWhR?3tKS^wK+RVN-N2iO-=UL`1ttzY5{58 jil9Gj_*WmkwZOjvE7EYC!#nNd00000NkvXXu0mjf_nmEX literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/DevRealData.png b/resource/zh/gui/icon/hmi/DevRealData.png new file mode 100644 index 0000000000000000000000000000000000000000..af8f8bc641d5e82e2588e7851929bf32c7f3f1a6 GIT binary patch literal 795 zcmV+$1LXXPP)Px%)k#D_R7gv;mO)5UaU93Lzn0J;WrG$8O(v8VFO7|PD9D*;&<^jthNF`m9HulV zX3TS53RD($NSZdmgvEOAd5FS;krz7%tCNQ?!OKPq6ukuD`^SI!=I~A3zt&D~yx;Hp z`Tu_Z-}n9hq$tWQ!(b^QI)~c*J}_q7(RF>xlq5-#3pIumwHd>ZuB&4ukSr^V|EaI9 zM|XEOY_?ODx)v8dqEILZ)yo(Xx~@L7fc$ zFwh?<8*k+s5iW^>>gwtciS(hfv-7yrB!DOp{USwCt{MhXqOififs-KS0+K`&;XaB1 z?1{){h_`EG2zXp@&%XN^O1;nc`Re>41kFfx^eJj_*;;f#~8Z~-~oVZ0Qe=8k0V$H5HPx%hDk(0R7gwJma%ITK@`Tnx3|Uw0=bPTuCO?cYEPdIPJdqe*510 z=FJfLT)yw0jbqxW)mESMvz4+23n5(3^Bw?nskw(A8e=YpVYrh;BNIpnG3J)Y`?AQgZ-3V&*qV5>MCb^)GwD_5?{Oi$wGkphA+wvR12gZ2sKb z{29k#4e%y2pVnG$bb>WNrPBOK*G(o`0Yo&)%=Z8)0(=9&^KNBfW|8)6BT1YE$4T0I z76n1@ihSR{%?vAcV2e2^lT!WDc+Fbb|m*5jig{z;$!^N~N;hsYm}0XlBMg zIy{WG0Dm>c9JBXMYVXgDB;8!WX4$-_#yPx%B1uF+R7gwBmd|U`U>L{0PjV5n!w%l+p@I&fQvDD711vOeafe=<4q+a4=%qNY zCpR(PJnT}C(n#+)&%+A+4<;2{>!gQzQmBG0(vtU)w{1p$Bwae&Vs1%zzn}Mc^2w7> zDwTR5B^Qb48kTS{^AAm<$7Gt~`?4V3z7>pwNbwR1nTlK`NF;~&b$|{4Twg?m%-oO? zIbFwZl}DqYLWmbb*aBFba~$WD7euCM-cu)1YKE@k9e~>lpa9@1fL&(()vxHklff{q zA{xDcTCIj&uQzwmB*Z`lDd`FkTSOF{Oo>Dyu&mcG3lA*#usMV)igP%D2xn2AdlQ^enTdcfs`_^oeKe}^lUbZv$LV^tvfxfA)n9tNHH-PM)lS- zwt#89x3(T3ne;~DVAHCKV$nvqTn>0PYSxYD9Y%&&EQbC4mwkZix;Q>A!?x|QR$cT4 zhmt{sY;4>@JRZl%$w$=d^^0<+?yJdgcX)Ljz#%|)=1%cn@Y!|oG)RW!eI`5^0IUHx z@RQ+k6><|m4#3aQli_lp@l~N^_*dBKez#Wj1Nj#j^ZbEGZ`S|-0000Kma$I5Kn#Yzpbm^3*~-kqidg9K3n@#wGV>m#BO@<> z#Kg|f3du_!fsL0yYAg1J0Y^GTBp0D0tx*5PXXoV4c22ouWm(dPj(VZ|OVFSmkd)-5 znOPS4yX&Y@y`rvan#leg21(D7UjGy%X#(5;*OF!)%O&MWLBKdz-${A{=D=LieM->8 z?Wf!G;MqkIkfc*!I8#9{%Q!ii$+y;A|+LCk`-Pr9i z44T;*c&QcBsMe0W>LT!GwJpbP3nGe*?lM>xZ3!jiX14eh$jla!-hnOOhu|lj0NXZ5 w6y&h8*q$!h{ntCyy;P~Uj2BR0px_%% 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 IM6N<$f>U{4)c^nh literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/alarmManagement.png b/resource/zh/gui/icon/hmi/alarmManagement.png new file mode 100644 index 0000000000000000000000000000000000000000..b383b247ffeef9203f442db4780951c22b7dd96e GIT binary patch literal 1281 zcmV+c1^)VpP)Px(yGcYrR7gwJm2YTMXB5VtbCXF}2PSJNg%+VuoYJydBK?DIMkkDvHr{(%!MSyD z;J`YC>eN=W)}dlQIOm^@b?8u7%Qoh6Z=38xM@u7EO*dwsR4OiFM}@gMyg@2-&U?@L zUK-Zbw6^;&*!^^Q^WO72=RD6jA^b-VEre5DU7h7{JaF)&879t!5xK-1%{pqxu)eMTFY+%MEB3xqTdcY9`td#)ri0F4_#4PJcyTjpF z4^TTZF6w&do!JaBr|Sd^z#f2#0JxcX1i%OpT@hGOl;Z$3FTW4qJGZ9n-@_1g1Gc%G&qh#^oOs^yfEon6~mlMG~F)@)tfq=S7k|4@o4WNjK zoXkiNA&(g+bUoB80;X&aa75Fzjngw%6y-gDKAzO=D?r2ogq}o*0TA~){$U26&-a4I zu!xJhHR1VVWjRp8Qb2L}fzn+bP(5 zL5%=fFJHclD_8olckdny58p&lQK20?_1@I9ADcJ7fs&FE5xK6*S2B16~4&%aw zi#U7s403aGap%q*Tbm_ImLQQxK!Ae5ASx^U;#_Qy{Dp$6%61qD!5Wo}SqWo3@j>GC=ph%jR-VD)x%bcCHwXHk25 zJ0g+qaO%`YcDn`!2JBqR%1Z6l?c3LAR~rnzjYW$V&E7g$Rxc1?%gh;26a{s4Z`s+3 zs+yY*VrXax%a<<~0Wmf;+u&_u##L+e)vX^dJ*VWY26k3+Gg_)e`V0CqGisdR=>lPcK rudffLX<_~P*X$Nft)PaP5b?ub`iw#wM4~9200000NkvXXu0mjf0Q*o= literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/alarmShielding.png b/resource/zh/gui/icon/hmi/alarmShielding.png new file mode 100644 index 0000000000000000000000000000000000000000..59a11146f709bf43c144c58d979b4f85c99eef63 GIT binary patch literal 1100 zcmV-S1he~zP)Px(21!IgR7gwJl~G7rR~X0t-)*7}3YsCJ;G_?Iu+VmeiA!kbGA3-ulALqv<|=}d z4a`fYgGn7L?4{6x4|9lb8;Cd|!`^e$4kr_qX-kCqurZ;fbF@>0&2>{&VOtaLH;*JG z8snBe40c}v_nhzi&i#M?{};l4^iZK3DdlBmUea2BQb_G%fb6@>h->Y1{69ca$_PN0 znB9=p`rh7KOPT+Rgb+uFNHOyzt@YLH+8pUZp-`>I{TMK86uIhFIg6AfEScf&j}%(A)=R=QA>nB0enM5*BrWH`FyvSO$j$bS1Ob>?T>{Hrd0rrn)TJyRouDr{gP77%*x8jlIvOv$>bjkQ&UraTo#R*wN8`W^(cxMn*=EOeS~r-s|%ftgWrhz&4GnM6@%)3ISbSTU+ZrfBx;9FWF18EDHkz1E{L1yh23p6$<)p zbaeFi*x0V2oG&(LX?e}acze57#|i}{`}+DkiNw6g4T_4q`$8T*OqxibzP=v4y%&tV zcQzIxT|uBgz>l7up2q^+ip65JvDjyM<;q@YZf-_v>$ycDI+625k;vI+EsMJWJ`B(+ z02Z0CWHv^lopmQqo~Slva9#I6n6Y_(|A(lms>(G(Fc|dsd{3G&Vr-oAl$DiXaBvXQ z)6*Cp9zGD1wzmnc`D@>8Z<8H>elh9KcZx}VcXt;Y$AOV>zreP(oPx(5lKWrR7gwJm0xIEbri?HCpVVTjxNzUQYeM8iUar1l7W^@dJBTKtjWE%8w}dg z2@@2Z4gG_&I;<#IZ2KTxSZlLx;EIYf_ojc?1j|BwiHLSXO820&GKyO5ZXPOx+Ix@t z#iq+*lC?ev{vLmv-}#(B-*bM1|LD+eI89AWrIPf}n8SfUI2`_IH*a?ZQWT|{$T1JF zqU(C({{d1It&0e!ENfGqoSghMJ?aN#q^jz9W*jgKy*@MBf0Rzsw8PB!l9_MCpl78PO>aJvqhpPiWi_5K-2N~o#QDRRng_k)uwr;G9`vB=?~gA zUW`P-qr$0hS?AMrXIqL*}pnV%wpE0IWe$mi1zI~)+{9|3TXh@8y$ zfe7Wy7&MIVS>Z4xdw{2PT|b^4xvHu!19a|g-#!6^FF^E@2r&S{e&Rkc$g;f0?RI;a zsp>8$WZO6qiG)8DJI?8Jeglwa|Nh604Gi=P^(k9|aIUYf$7g3}OK;x%K5*m4cgvP# z#WIIItLicbQ&rU|fR1{-UIYRiC@wC})ps#(-9!}J(ZHsIOw;_r?RG!e($e;vqWI2q zc6Onnq5@rAo%uu-AfgY_4R(|fGrIsR0`O>BGxqI!6eA-e`9LBw(eEEqMmq()2B80M zQQQMcI6DP>1wg3sKG4|M7_MHuhG6hqHrOvjv>m}tK|hPK zWrBu>hjIOS6hlLUsI08amen32`eQd4{RW^kAIRhJU~X;>_4V~AC@4rlbAuWi8$C{E zp;wYH&5TokJv%Wmp%)buRp$dOF5W^Y6hcSGtEj816Q;RKrzqM*BAm>uf#2^#dwYBG zI$aFurCV57!1(w@oId?ZGAjU=h-mxU*zVERr*=DAp^J-)5DW%UQc{A}*0yBh2L|59 zg$v`DnVG@J$a&1q&tr7-L-h1?qqeqI$omixZEyQ+kSxoEE|>c@5hZ((d1`8^(c9aL z)z#JHW)M&z@0FF6q!292!qU^BbMq6nZJ%T&XEs<{TZ>q(ttnw- dvB|lD{sO>v`V1WVd~yH)002ovPDHLkV1kEz3se9A literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/alignBottom.png b/resource/zh/gui/icon/hmi/alignBottom.png new file mode 100644 index 0000000000000000000000000000000000000000..b73c5297b490f36e581048492ba061683c844b1d GIT binary patch literal 321 zcmV-H0lxl;P)KmOF03KoEvMqm(J2N=i%N0NemKbB;7zgq!37Nc4Y! zZvgZZa055greI7AtR)_+Ef6EE=CL#SGv%0QHA-yD&l%S7C3(c$q#(}L$(jXcL zs9f)Wt=nT@A4-0vbt~6@k_t(M`-NtvV!n0ma74T>&r&>NH<)OBG$0nDs$KX=`4kx$KN(wb3MtqYCjD3YvouXkY&VBj@e T+deMz00000NkvXXu0mjfP7sQL literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/alignHorizontal.png b/resource/zh/gui/icon/hmi/alignHorizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..71eb1db93a03fb93be10770c644d9548903dcba3 GIT binary patch literal 361 zcmV-v0ha!WP)KmZ46>KoEw%B{&dBP*-sez#CA+Ji}Qe5}ts&Cjg1W zqIiJc&;*IN2RL!(kOtuAxyH_nZGmpZ8w`~Ls^!LVLPKx{v>F(Z=so8 z0B^v`r75rvJV@FM1_G{Ip51f?nb{0D0+ucv`goS~vO057Ta+TQ3EI7sLP zkh{N@H200=eL?RIDm>17q1Tq0Mr*ruD*#Ekq@2$qS~eB*1r2JWfkNEt%xuucCn;3^ z?;M?^P!0UHMe)MZ7ST?NdOmO(X=%_;+Ez5xDS(+hdYt)uJTz#}=aZVAYD?b&ozu`% zqnyml=9M4ibq7hh@37Gca8=X32I^p!G<^6{$>IMmXzM{Au~Swu0XsDZ00000NkvXX Hu0mjf6#kk` literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/alignLeft.png b/resource/zh/gui/icon/hmi/alignLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..d3d9d15c973762243e25d7079364a1da24fdfea3 GIT binary patch literal 333 zcmV-T0kZyyP)K*1c`QKp4jHKPVjy9qE#SJ|G6LDV{!31_%WMWE2LV zfDP#10*{dNL}CPr^p}E*A}n!tHnQFDNR}<#>HSIf>7H|rHqviJ=?s$OBo&QAP3GZR zgQPX^27CiQkvcEH(affmAz%y)fmsCk%X6qP1QkFA%+0I_6_MnCuTY=v=ZOEISV+nf zYCYZxy(b_5qq@+}zdwOf1j&IzEy&DPz$yYHr~Abq=>vErZRpCG07Em&qmV~3|JU%$C5iB5*aW f%~9|EyHz*8)d@ItspMit00000NkvXXu0mjfPKSv6 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/alignRight.png b/resource/zh/gui/icon/hmi/alignRight.png new file mode 100644 index 0000000000000000000000000000000000000000..0a2cf34ce4dd3a1b84a87cca3d4b46cfefe87636 GIT binary patch literal 334 zcmV-U0kQsxP)Kmc4PpKoEsLc?ccg2tv)60^ET}UhEQ_&C{r2s{HTGn=_V6=Vox5#L#p&_E2d12Qv9noN?Wz#7Oyp5IX;U<@E>5%Hz9 z=mw3dIFI=1KsRW`sla)}Hw0dQk4~Uat9H?Snn6+y9DuDe&t>b(Y#9adeK230pr2|5 z0{8^poyk++4Jbl}TcEt<807*qoM6N<$f=xAqWB>pF literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/alignTop.png b/resource/zh/gui/icon/hmi/alignTop.png new file mode 100644 index 0000000000000000000000000000000000000000..c4df884b4bef85f8b3c81fb025f775ffd05b44ff GIT binary patch literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px_Tr z7sn8f&bL!-`3@QIwC-0j6EnM!kihQeAh{>}5fhJ0!{P!4vAhHCSo0XFCswhreKWe^ zx^Rn-Q{V&v|4lOL`jw~p=W3iUc3L3nqPisDHm}Q(*OsfYLbO?AYPoiHIN7$n>SGX? zsB6H)cg@t~_Uc#1EV30Cjf@*4JVHyqP7~O`uIa?%mb>bLY)- zk0u}1ylvh7{9LWm<-R&4E@4eynuKV6M_Fss9(YVY;$~o7xzm_{y zWb50ULirbrE5j8-=hp2?5Z+hk{yrh8?&TFHjeX+lonk*TZx)(sRkT6=+jpUFeBU%J V4P+uVJqCsWgQu&X%Q~loCIIxYejfk; literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/alignVertical.png b/resource/zh/gui/icon/hmi/alignVertical.png new file mode 100644 index 0000000000000000000000000000000000000000..a9d4acd1a093bf8c0b94356e01bcc168e3c579d9 GIT binary patch literal 395 zcmV;60d)R}P)4RxwV)KoA@wIw&X;QN%?azz<@Ic>`@qO7a5C3!tQ= zrOE@gfb=QyfE1*oqzJWBcu%@)_AFu{C(1~xm1g7}-`?KYSyff&0%x7L9JLY2isat? zKHe3zMV6X6l6L@J0sI13M$$<0EaHX$E&$w%$h%kXyx}GK0IoEy9ew0*{Zz3gqlM;~ zh!lYggCHVV#C@vq0ts}sM@=j0Y0gQORy160o@r$?0PyJO9@olfj(W0wu-*G$@Dy=3 zsE1~rDwZ7Y6ue>h3wDf1J^*;$%Y7FU5qXITuXSt9D*#`P?j6{G9QB^At>77jTi{JZ zN-IXKD;%vvy@yMy9rPRxHIGRasR#8ou*jntTe@d-sd=E0f_K;18jVI%&EFapADV9+ pt*0@yLTBgb@E^Ya#_9btYygfkSmci|kk|kK002ovPDHLkV1iQ5rndk9 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/align_bottom.png b/resource/zh/gui/icon/hmi/align_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..b73c5297b490f36e581048492ba061683c844b1d GIT binary patch literal 321 zcmV-H0lxl;P)KmOF03KoEvMqm(J2N=i%N0NemKbB;7zgq!37Nc4Y! zZvgZZa055greI7AtR)_+Ef6EE=CL#SGv%0QHA-yD&l%S7C3(c$q#(}L$(jXcL zs9f)Wt=nT@A4-0vbt~6@k_t(M`-NtvV!n0ma74T>&r&>NH<)OBG$0nDs$KX=`4kx$KN(wb3MtqYCjD3YvouXkY&VBj@e T+deMz00000NkvXXu0mjfP7sQL literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/batchCreate.png b/resource/zh/gui/icon/hmi/batchCreate.png new file mode 100644 index 0000000000000000000000000000000000000000..8f40fc7e7784df4b35ada4e651450c888bbec9e3 GIT binary patch literal 430 zcmV;f0a5;mP)Px$Xh}ptR9Hvtm$6cWFc60Sg%`M|ux3~)E#w+2Eqx0M-@v;ku=6D>>}~F@u_6p_ zpyNAO!a8w)L52`Q#ybm`pSEmgS46h60Foq0MP#QP1VOO(fylDV$^J)yIF2_&^gu*wR|h_@+SUr7)$s{p zn~)KpR^=K1djRZ}QtL5$BLFkM1Nb7MI}ZTNQlQzC$Ji5t3j9j|X1)c`ygsX<)AU&> z^<>O~AqANE1;9!~4nEO|=nTMRS(X1t! zl-`&&#m2^~s!F>($gkeevUZOma_KmcdQKKoCWL5Le`M5MSqnMFW@$a0jG>l#mi!Lg*lL zU>ZR7X>JHQNJIffEBzHCvtB#K@`;fw+ne2ep1-qyvufKGOT^V8lqEseb4(&4LH$*A zbumap)&Md9Ie?Uxdr#Qq3&0znZTmQoh-?8A03HXrzN>1^F%^LOQ6OgE2HcwF20(4D zld9H~?iBlqSVjjz&H(oAT~%X~Wy}PWZZs(MgH-h+_O*Ml4J#sU@(qAz0K0)~ z1|znQcDz5iwGxs1FQBLeaq^=n)mOJ(s#^69ngYU4^_9%bhXa07*qoM6N<$f@l`Ns{jB1 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/blockInformation.png b/resource/zh/gui/icon/hmi/blockInformation.png new file mode 100644 index 0000000000000000000000000000000000000000..a752d1633440a3efdab1ad8ad2c39234b4da20eb GIT binary patch literal 814 zcmV+}1JV46P)Px%=t)FDR7gwBmOp3|K@`Tn?@STU;!ZqJu!x0Vp`fTJsCa^)MPPR}g*Kvsf{i4g zg()Nn7N#%|u}nYU1RjA z49NEb4Pbi|&F*L)MJGhx53T`n1(32aCQ4$^_thi!VvIi0N#OQAO7)!vJ@`9_ z`yT|sW)bPP)?Q5;z+YdmD-Gt4KuW2@A{=O~y^SLB72p$6#!%$USO5q<#B(@OnDKqjrV7nAg56e*=V5sWXF&qf?K zdTX`XtHrgVCLF{)i^P|WF=I)e)*yxeI%A#GTAz3SR-HPRE`VVi%P7fhPC*24|T3#4aRULrT7l6~o zRL?pEp6Bf=6xM_yxbFgHRRt3OdbO@@S~Wid2_Sr`|I2aGW{m%ax> z^J<5+uCf!*M?j{NBBz47lxFJXb^}0qjnU;*gBG`b*%?K4Yub{0-!G=?6-80KR9gR5 z1W(g7>M}+j%40FftOI1U-ImhzBIRXf);S{;!DT=$kbJWetl4b7tkr6tv+GDkt+gX* zPxJlY5{Vm&aWd=3NiIAfvFBHcL?lcOFllE1@X5_McT^+c4D~3~fO-tE=*8y^nCe3G2cM_yDnFA-ssI2007*qoM6N<$g0gLVQUCw| literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/blq.png b/resource/zh/gui/icon/hmi/blq.png new file mode 100644 index 0000000000000000000000000000000000000000..d51134701215de3d4da3ca217814474774fccb75 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px`-A z7sn8f&bQMX`I-y_T&}_kE6fwjz4tV!uUMJso6KO}(Hj`=6t!$2 z|BI3Z1?LpmyLG1Zi%l%~SFt-o>!wR{qrdyFu-X`9j;)ZA<}n zvmHcD)1J-eGZdWkIa%p_>J_PpG38%HQv^@SHkfg4RWw`wA~a><%(skJJXi1;a+*rM zGn%wAB5g`Wm%^v@_a+BkU%@4MK-m11WuK<-ibb0ipILJxJHO{&x<}UCgspW?j@#7~ fe@b1?cR)0_!$$h~F0BZl&lo&i{an^LB{Ts5M#FEL literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/bottom.png b/resource/zh/gui/icon/hmi/bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..32ef16c5e668716c88b2ca50e13b4f7bfd44465d GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px|Rq z7sn8f&bL!G@-`a?xXK4sg)KP2kRxDT&$q%TU$9Gs36rIoTyHpqbo&B$YN05=3dEUB7M->#< zwLFh9EO}rV{!?m!P)6e#{^G)C-%hPm3hY?v<<%(Fv3ISQ!L?gytK2T67PR(g+ekCr z>ts6fi6thshVh-Se8m2w`ytwgO1UeZ=k9TScbCcWtwdngcl&mS-mTYk7J95|EUwSB zKeu68Th#Pji}eGgn7Tgx+TGSPCy}@Ierg4Shn1bc$Nv`2K<_emy85}Sb4q9e0Q{+T AssI20 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/brokenLine.png b/resource/zh/gui/icon/hmi/brokenLine.png new file mode 100644 index 0000000000000000000000000000000000000000..270a70e0640f88ee4913fb686d81f28f2103ec58 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkR@w zi(`mK=i4dXTnz?1F6xi27U_MBv5dKswem@@M$o5eOAo(JTDD}>jDu!JgBA(d-n`A6 zW@qatSa|oh2&2WEn~4`wQ}*yzI$oULI8&6trA2Ay*QoGCCVQ)PZ)m&AXQkV;cX{GO n(-(RV52i(~FID}u{{>t4Dv2#~)n^z2ZD;Uw^>bP0l+XkK5%ous literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/browse.png b/resource/zh/gui/icon/hmi/browse.png new file mode 100644 index 0000000000000000000000000000000000000000..b4649dcad1e5badc0c718314848f2a178f81802b GIT binary patch literal 471 zcmV;|0Vw{7P)4mdj1UKoEw%AntJoqywA^a1L`OR1niaIv{jF2RIb~ z=Q$))K&3`3nJs~f@cnUe1dNEn zWo89X>zqgWuRsGd?jGKo0!66U`>K!3Y%D`P5(fZ9ZcVHhX$rUBpT774vym-o7>Vh*T{ap=V|p_lSFIZbjv4g17SlxQ^b zhQO`PFe-+L?ldWb$1U#&tl_U4R(-Mwzx*d7NS+qqiiv04g8itkT7eAQ>2#$#_S5@g zA02Ia1C-h)0Mobta-?vzUYA{f`g|^}WS3{CAX;`IeOYyXN&oM6>m7agtRi805aIv; N002ovPDHLkV1j+V%*Ox# literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/button.png b/resource/zh/gui/icon/hmi/button.png new file mode 100644 index 0000000000000000000000000000000000000000..1e309ebdd525850ccb6955f3d7e1091e4ed602de GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px_Np z7sn8f&bL!9@-`U=wAuH(w`x+hU{WdJpX1Ub(huw!yI;qxVWeTOZ$_%VGC_+4`8+!loWW!-9(+ zxJ1_OxX9SisJlUM;%+9P>FFy)~xk_@yWbd!UfMt4;@?}6~X@MQ-CkW6&{CY+Lz44;?%R>-uAkDrL4Gi`sv5F pEBgOQ`IQ;Fd=9p2{wMy0W$~YeFIkNaeLz1lc)I$ztaD0e0swPubF}~f literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/byq2.png b/resource/zh/gui/icon/hmi/byq2.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a5191d60b57b2957d7f33d90fea1a3da962f64 GIT binary patch literal 499 zcmV5QaY<65=6Y-@p<`xOQ*?xB+kih8wVCg+OdrMY#da39ygA4cPtT-5dcgNE9WK zvzTh!8m8MgWD!OArP1_sSM}H3Q(XoB^_yBs4NRxg*S4AM1J}TD!)ydxOL}^paH)OD zxgawufct3Z(cgzr-?^kg4z!#CIpidQ+yGrkN0N?!j`soFyKPd*9rgSD4p0Hx@ruoC z4M5U&|1Nwn6QEa?<@2IDI&sKj1X%@s0zb@b(}4r(oFe-EO*9pC`i^@oN{ zkAzk;pr9%=B#r0Td*^p&TeUT>^Vie;nRt{)`(wZO^_y zi4$PM%$7apbsb(%|Fa31@XppFPyG+xbp?Eq^x}Xm>TGfAyP(UF+2Mk`9Gxs{tRf|AgMMFd5=AVP$Sq=g3dXC+ifMGI-szfCSI zqFvy^%5YIsE)=4{?n{%vY9t+`k{V~8Gq1%t_xXDIUKB1pn|pu1d(QcuKi_jMm*sy- zU;ANfYzzi)FSg(=45En!_Ti0Ge+nD&JIvrqypB&WTd&t!zUOrS58xiWid%6M;|a7H z>#!=%D{vxp&Y?)#(fs}?X1f7xz-zb>FXK&|#$w!nXYgQFVowJ2EzaUPY{ip#-^9n2 z0rjWB zpV}B%6vYBTf<=OT4J^bm(Zg#K_+&mSrnaP$3^Qpoiix5qUna%#eHa#Wt&Go>WjS4z z<*evS1-deI`|^Cz$S)>m#2OhA8~Hu_j9O6?Q>jyBygYS=(&o&6$*3V3I*#>tI3pbp z!?;xRYEblNed_K{+Y96$X^xDHv>#82RkT+82$wj&=VrvrJT0jFn;7cPv=L!)aBFn*UeckAcE4nMcp@xUAIa!y&-#Kl-JWai%h0000jU*RJ1@J+Nfx8>dR1&K?_8IUxcWTf;Pb@ zEv%so%r-JIBB-$LNJbkbb|WNlbeuc(;hb0BZuh?4=)lW``JJ`Tkse#U25(uspkfR4n+7{Dkt;$WPP>u?^f_`g7Nuo6e( zdc1`lc{YF{+=pej1rzNYP3i0FYj@U-mv9j-PLSQD^KDpzX$d$XGXIy<>vi1~+04V) zcoOeb=sku_soPfC0rlc)(fFUL9AKyD+aS(IPb;P79`)mK9FLPlS#A7RhR za4KeFIcoS654Ou_Hr~Mv_yr@P@h4$1-bA^f=i&q0owi%?E~aAO3tb?*cp`M*cNfwQh9bVa&yqcq0wBWhQ$tj^f@nPNm+ z$qQJB?SkLR@-?o)cP;FG!xkJ>08NTzn`{FFe~J>97j{BSV>`Qs=+CqQXiSW4e;b1f z@sud>^aN<&0GuhZ>Eoe<2iNpRuqCA)=q057M{z0B~9Sim)c7@x`i&&l5# zv0m)fXnym=S`?IXPnPQxT#nWGUxRLdRE1E$Hsk)Cw#Uc(14s0jGg6&sT=u`rY3HoW^eftKZkQrjK7K?H{TLrYgH^T<8 zupi-Xg$slLotxwZhVh>#nSHFpOa4Cbzg~lsuzbO&>t#Z bJ2BR0px`}E z7sn8f&bQMZavm}eaJ%pMf4lSz-WW&q3xYBS1xuLS3s}v8Xod6@PCveNPR>`Nk{n*J zH^yClR(SuZlS}Byg^^;XSblK_T(s@*;LSO%w`A3CfB6T|HJJ}@TwMD(OGNOS=#AQm zX9Oc!^v^1W=I*j!%L@H!G(|}%S75fWdP3eq>kAs49#0!e-~3NeIFO^&xO?X#N!zJK z)zVLRuJFCpte024aQF4)9i{fCSCqXzwZYEQaaC6CM#iuMx^wy?!z=Z9LPZ(YvS-_0 tsuI50ub}-%v9n*$x4eyWiX@8-gYU_XM;;;3?LeP0c)I$ztaD0e0s!`ab2$J2 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/cam2.png b/resource/zh/gui/icon/hmi/cam2.png new file mode 100644 index 0000000000000000000000000000000000000000..0ff47ad7683e1357915c4f431ad9ff08e9045179 GIT binary patch literal 766 zcmVPx%xJg7oR7gv$R#9%7KoFf-{D&oz6O{g0EK;2lq&Y#|6T~?|ofD)vLDCbH+#o$c z+Y^LJEcRdN37Saw4|b|SyJ$_Yanc}JmSMba-psr=APih_9RC1-lRaUlS(b6k-V28U z4A2Y!Qa6@}0z`ZV0Iv!JS(d$bf#Nvk-``&wh%@hF#7zH>(R4ZuJl-3U*Xwm*LAi89v_Ql&zDGpKX0y2{isGR!u_r(VFGI(=ZGJ-}e(l{J_a!TV+uCB}0!2|Y6GGe*(H}%?h1vsnqP6~#=lRl^zJ5mb zP-7*ZO*#4da>&c1l-%%%QtGV>hcWLegn zWu2wlZ+E;KWtU}n#1_&8l2UfZzY(Qfj26i5ud*yd*NR+5&3+-GTcy;(1u`Y!-E&n{ zRWcfle%sQxK#qkqXY>k|Z(6@%+Cm7Pw5CU8S*ENrB4SqDleyK21>#EhzTa3_m(5m> ztZ;qbPuU^ZMi8-GY^L@sz)7c?qJ5AL-FipQR?*mZR^+((IJ}vRonb=3I^>UZs zdl#R(W6a?^VX4+S^*rx^h-UmjL{@&lS|g&l>urOKI#$A4lwF+%WzzjK?=1k}&6@1m wtXmdzh+~_HYD254DxR~m2H)!rN#c;0f6DgBDkKID(f|Me07*qoM6N<$f}pHo2BR0px_rz z7sn8f&bQMp@-`U=wAJ@88#Jx|zC`+jhDBpuL*4Bm=*i;^@iQMhkXy;Qr{x%H zqsS8(uExbBdLEn!>+^yIFFwunxOeQ)UcVHF1!`|sT|1`UF5dB^G3C!VSeCg&smDB1dTgF*?b>kPh4ElFwyXp3u S1nB|&&*16m=d#Wzp$PyuBY&d+ literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/checkAll.png b/resource/zh/gui/icon/hmi/checkAll.png new file mode 100644 index 0000000000000000000000000000000000000000..1702acb982b8171971694f698bef4c3fc270d962 GIT binary patch literal 328 zcmV-O0k{5%P)K);(^*Fc`-1e^7TSF4D|h2*Yy@I0C&vdxBnpd%R1I z5ZEhm1Q?jpp+RyZW5*84fOw`@mi)_WzxgQIwq=UUCQ+t@UfhACA^Z4cW}m(ZNv}W& zG-h_X33WLGO#nIukQ#UcR^4?FYRs$(Krv+RyV22S(SrB(d am78C!e{fQ?9ZCKG00004mOWC#Kn#VyFx12)r7PON34lVqIRTp+z)8pr*qng$ zYTQzRZ;&G-CkTbL$!6oVVTObmG~=;lOM3cwvOU^tHk?AvPJ;3;fzF2vM5F+m9h2m7 z19-rz>Z&i!sE-UHQdyw!Kt5~0sp{g#KqBIR*XY(9SO6jO0;qt;$Y!dl{@XxS$(yN- zW&4>)sI&w^TOYbAI{>noENR=-0Cz+EH=o+T)BFjxkXLIX8B?2v#JiV&eJX(fKLdL11Zc8^Yy9C0Z_7h6QH(ib0C50 zfzqyP$^Z7H8i5`EGZBFu|HJp2^8bELP6qS^B0{uo3a7#E00000NkvXXu0mjfw(84- literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/circle.png b/resource/zh/gui/icon/hmi/circle.png new file mode 100644 index 0000000000000000000000000000000000000000..7bb11686a4dcc885cf89d937a6c8a7de19dd53ca GIT binary patch literal 447 zcmV;w0YLtVP)4md$a(Fc3x`ncU+Ja0k#q$U%2^fYSjbPy!tUI`DlD zaXK&^;11#noP*bc5c)C644Gjs9!b03^RDETXMNvu4|}=`;61ac9Nh&UXxz}X zF(#i%P~Wwq5e4lS8YV#H9FPzsv&1{qh=X*WHac7Ybu2Sot2rO(jqf9mHPt=mQgjUc ztQz~6_PB!K;~cM!gNT$qz0@_a0k)P<$U0yvB3C7w1X5VeP|AYqd#PpEo1KW9Vme8X p1I>V?4x1?r_gA35*yH^L{Q#xpmi>vsbb9~*002ovPDHLkV1kggySM-V literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/circularArc.png b/resource/zh/gui/icon/hmi/circularArc.png new file mode 100644 index 0000000000000000000000000000000000000000..41ed7f67f8b8327886ebaddee245ccfeff6f8e4a GIT binary patch literal 356 zcmV-q0h|7bP)KmBEd|Fc3u_tGz=9q=YRYmpSit!j`fnqy%!Fi%WnG zLI>MHIAo%=j3-V2A+h31mKD#>|DG?$S@nI-Bk=YRmzU8~7`=N15vhR>U<1?zodEm- z2UQI@!YV!9BC-cQ=kC-&tEyk|Law9OgvE*V9fY;3NPA=o@8zL66=f_nuqWW58nA~Fh8{C$+;$4s==cw!eK` literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/combine.png b/resource/zh/gui/icon/hmi/combine.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9b07be9ce5882084aef194332f86702c1f7d09 GIT binary patch literal 322 zcmV-I0lof-P)Klrav1KoCVA#*#$upuOHeo4JoSk^4-c-T->^R6$i5+aSJm>JI{;7Mn#it!TvZDb1e_W` z7r+m4Y{-R5f&d;sY51{s2dV^M11v+s0+p(|PtN#JmCA|88Q6v1Xl3|=1_NEN8~3%c zJ|{>-94+dts+l+9%g}1$-``833O6aSod5s;07*qoM6N<$f{X=;!T2BR0pkTVE zi(`mK=i6xqxfm2UoQ;2(?!VQ)d9wJzC;_#L)@>V(wRxPx%!bwCyR7gwBmO*F}K@^7nx5g%i9+HaCL&1o8D_Bs`gF-|_TA`WQ6g+rPLBWGZ zL4*p5Jp}Yn@FJ+-MJlK}vmp?u9&!+@*h4|V3I!D_B9*4WmPDJ~C({rqB?+5Ui+fsT zcK+}E!<&DWut5)P5C?xi$z*Cjkv~jC2LVKx`8z-_m?`bLPhYLKpcPOunL2J+tN}#o z3vya1b!9y;8WP}sxJId%d$ot$N4lkIJncYLZ^vv$rQlsU(;G&Zx=>V%F6(y znW43Iog{fr1l0TxOrx1NY?+qao1 zNJ{%FfbQkxUp?7u_DciMHs9x&>Kt#?S}z2JNokjuIYdIpWg-d{3iF%u`Fy33fDra; zBJ6GEyxv+VZ8qb^(aMWbPSZ0bgnfeu!^{}b+PNCUQ6iD(jK#Ws09Z7jlIg0YrNz$i z@$scb0?DL((z5WVQPb30*WYjVL?Zai%(JHJ#sKsvr4BW#QV6k!$eLuvq}I;9AdaMz zy8)VF=BdCDB!q|)Ss$4BqtmVD3MhFu%MI^3j(U0QGjp#W03tA zz!1P^0)rBXL?{}KmCR8nmrIdcF88yUEAxFU)-`9MjR^6;AR{WJd;?Ig?|TPa*KL~U zLJS=t@}DzfMr&tRtDu_znUKAwlykm$m)eR5q87$2frJn{0GcMEisx1O8U<{vtpSuh zuM*E>GT&MPRkzQ+3*a1p>2evzaye&qwX^EA6MhL$-1j-{y48EEWl%L%Vn(PJ;91|N zkz#SvLtw5Fjcz$X#G@tv0G=om3WxLge7P-Mtk_$!Y7OVDqBML9q|w;h%M0000Kmcfm}Fc3vwR@`Y}OGpO`hhGQK!L~pp33bc?I#^0b z32X)75DR644HE;ouwRN4+mYXR{&~K{L-slDzrdm|2|-3i<_(k@*ss zhxbYnF_;&$1)A6fk`BNZume^pSkbRKNec(`WM-F>^*~GD6R5({pEM4OVefc;B&}l+ zgpD_0SoPOpsmt|ZFDb@Pf{tdk7*3|Va0HbE-BS%5=u%VBdGVbH>Y}U*d&`TIa!z#9 zi)VmbUOWsM`T%h+QhL+w?NR6!>o6=|2BPb8Nxz;6s_8EBYe8n#0L>Us8Oqk9D=)@? j<~Z-h7#07&Te&&|YawHs=CjKmBCHJKoCWr5qClbP=Y%kmpP|}P(hLkuq(iH;1)Rl zQ#x=7qyj<(=8#!wWv!9cSP?@07i;Ew{XDZfcG34e*U-&XC<|x-#k&2;G_w*|dDuxh zPX!gJIdVV)JPoW`QZ)<6%pQRbxEopXCTX7wO6^e_K@O4%;2wDQ+|JC_bAUp-4w4!G z-yr zfS2LgDFfU1^#N!D%*^({t9!@cqO8^hnOOtuM(i)3l=KlNCw+o^j_QPU1lB_cOspu# s+g5sbmeh^i`zuh6{@-t60sVc@H^19o;bXFK7XSbN07*qoM6N<$f+`h{h5!Hn literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/cut.png b/resource/zh/gui/icon/hmi/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4dc61e3cbda6d19197c64e69a3c109a022a2f5 GIT binary patch literal 548 zcmV+<0^9wGP)4md#ZoF%X15_Hl;{))_EFfH~-F69FayCW93jOa==P zV9s@5$N)01GcXaDgIZV?njiM<^MSrt(_QM)w5of2wB2qwg#9`Q%OQ!5`-0B7Q@{g_ zq*VuI0@Q$)wD~6@Be?}8z`O&~05e`_LZ?n zia?z=T&-|Scbh%g{_+mlkVM{eI+q$2qn3+O^<|fRQcev^1Kq%d1c9;fp|)2BR0px}N_ z7sn8f&bL!f^Byt~a5>(=q@k!9z%>13vtNPcmyPU`{DPQdXPjP_B55gMd1KPi-8si5 z8K3O4*K27IlbN;SPj8mRGG>+XNLi&vNw#sXf2F1@vDH(ZUU)6zv8(vs2{WH?9=Q4C z+Me~j3^rS=Ogl@b{gZs!vH5bDXzI_49ZRks-`%lhnd_0sa~NWL!zCGaWX@$=Gw~b4 zGM8{k-KhDU+cvVY?)dU(b8W!x{#|oRZ(e&_+9iGV-wWNv@rL(I4d-3tHkGxvZP>AB QInXN%p00i_>zopr01k7R5*?8l-+H@Pz;5?AO`3Lzy?V6dl>;XV3WcI=>%j0*Z_F< z5HJC35ah}?q*16672dFP9(?_Oj&!rKEJ>!SV_+Wmq}`6d&S7S!^jI}g)fMmsoFnl7 zTpLY3fLRP00c$f`{Y1Qxh~y%26_KU;UEsMLkSvKfX z_?HdLEb&mN>axc+o?9e;Sc~PrCP?p0b_hguTChKfhEu;C*f+3^nCDC?#ki|hc2%p1 zR9kHn3iPsiOKma$3$K@f(&h}Ov?#3nExXm6u$U?HSEpFkhMM=&oC zQ>L&G@&E?J-c)~S%9JtKDV!Y4!4kaNy#s@VKMXfFv-|%$yTk2u@;ql3*xQN9pB6H+ zys%#vYKulfW_IzDpMs>WbJ7XW-AcU!nWV=UM^wnnGT`1{Uw{YqFM(6{uOv-c3z=CD zSO%3WfHU{!z;RGnU(&jYD|SYii_Dy?Abxf`_SnqFWOYO_p`Jg-UdaYHa@%-pyfwC! zP>Ho~;VOu&JXX0~ZG?t?CIjHZZQ!wC3PG$H`oJ6T2^{#Dgw4|q(%JyZnXpO4L%`( U*8spWrvLx|07*qoM6N<$g4evbAOHXW literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/delete.png b/resource/zh/gui/icon/hmi/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb1bada4b8dcf60f4703ea0a5d6910b429cfa7a GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px}K^ z7sn8f&bwC~xta|GS|8rO#Qa5}DbC?S>+-UTPWlN4o4>G?U5xCQJHuS$h?#=Np(o0U z`kK!w)B4M9x&HKivFF{3-~X7d9I)UyY;1HhZ0+_%QahN;wR;rISFgSPSk8ore?ibj z)}Y9@Gg@;_uI;k)c%8emS|Y^9b<%_;SAhnla^ni&TN8RbCN%qAi(S>hqq|`@qr{CB zk=EBlx7^q@>ARQO@9EBSTjw0Ua6_EytJ)N+Ll*<`op#P~F%%CvEOF3oLB^v{ov%J8 xI{gzq8DCu4(OhbAzNN;v=5}AH@gI>dOd?lSOD+^GSPJwigQu&X%Q~loCIDr}d`tiU literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/devInfo.png b/resource/zh/gui/icon/hmi/devInfo.png new file mode 100644 index 0000000000000000000000000000000000000000..14302840afe1b23e6723e205a3b9ce248a2197d5 GIT binary patch literal 347 zcmV-h0i^zkP)Px$6-h)vR7gv`mN8BPF%U)PTNE4sEDCNxLA^D_+CBlL=_t4bk)R`GE`YSDwhS!= zx1c}^MW{B~jXY?P5(=bb$B{kt{CR&o8jazcy9$A408S`DF!PsExP~$IGZkdxdw{`O z#|awwS8@xQPM=6?y_4BA4S9bP3qgI% z=g+S&#ytRZn*#DzlPAL-wM2BB62#2wd<(m|M`O-J*LCE*r{(fn`~ade(Y7n9>zew$ tj|YjBLP7o+2@Q(V^L3Q%yOrw$`2&B_cyohCo^SvF002ovPDHLkV1kv9k1qfK literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/discombine.png b/resource/zh/gui/icon/hmi/discombine.png new file mode 100644 index 0000000000000000000000000000000000000000..0d6b99135d4eec8ca74054495707371b9d4e3af5 GIT binary patch literal 307 zcmV-30nGl1P)KlsyWQ7_x3j#3dAy*iD#l8k^a0PNhw={qfC>$*U!n$A?<*J%^|JbB(=SAcQZ0p)+VVIwhwWFa# zubq5oT}B!HbomHz7H<*Eu7W1(y58OOlMw^Ds|^uJfwKR_#&4FbsX-`oGx#Z_td;4Pbmbd!#dZs2a< z5$FWw400o09j9;*_<`~28e3dRx? z8HU+PCMwJJt`?~0jMVr^xg-59-_?AS0{LP#AG^z`Y-eOc0To{h^wz>8+ftyN%58fe z$R@l`&L~@%!EE#xXw-NZA9X5_%=d=FLbb;Hzda{lgx@5f3w(X2;(9RmP+p@!FMZ-Q< zYd6xb4D4bnXwjuw$nNJ}69pJEfA5QLB5O~Ma|Oj}ng2hxzD59E0hq%b-VaRCX8-^I M07*qoM6N<$f-j-G%>V!Z literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/dkq.png b/resource/zh/gui/icon/hmi/dkq.png new file mode 100644 index 0000000000000000000000000000000000000000..275ec6317c078dd828b64e5aead1f7e2469a4105 GIT binary patch literal 345 zcmV-f0jBKmaz@OFc3vQh#p!BB-*Q>qRs}40BpbrumPDMi~uDi z8_@ll34nq+=%fp>5OIP75kh<^(mCh&`M%Cc8fluM4mE3`d^Jc!QoTM73f1p{O0~C$ z3;`?vj2}{4y-)H`86+Z80ErDR0NPLD8OgP89j|pF(g(1z;SxaKNoyQioLJRiAhSz% z9g|dx&RIfZl5+<(uL7DlK;LHExj~>zr@Vt|Rql%xXcgqumPhXg0InrBcvt1Ow}^DK zV(mhboxFMPIIvk;Z+w%Atjm?t`eQp&-mZHIWH#*pbOH42wn8Ge_1{sEHpa-}quI79 rf`ouF?MX(jJn;V>1?&I26(#^T3)fa;HTtpJ00000NkvXXu0mjfx~htQ literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/dl.png b/resource/zh/gui/icon/hmi/dl.png new file mode 100644 index 0000000000000000000000000000000000000000..ec16d8cd565ca577f065162a2b5580241d0d620e GIT binary patch literal 2902 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 AJ^%m! literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/dlq.png b/resource/zh/gui/icon/hmi/dlq.png new file mode 100644 index 0000000000000000000000000000000000000000..6184018f579e475073417ff37c240264e11a7f0d GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkT14 zi(`mKXY!x_|LvJ=8H8hVB(I2NW@Y_jPn;F)qPJkStIKk$n1iK%f0eo=ed%AeE3n&5 zS88j<6(udENw;}61kJe-H2a;M)E-B7J&82O;|C5fF!a32BR0px`D? z7sn8f&bQMX`I;33T=y@l-g|7#6SlV(zp}l1CNr-gZ-t_6yo~7#lRvU7pE&l+yioBz zP$^f?%kzS=Tt~-CxzMeaEL@QcXJ*#&Iiy>LaG9)rm7P7gqlaOh*oFTm3;IiS&K#Sw zbmP?B4vHIlnH%H|xLo@ek;%B$tZq$m*|IfzzV^mgTr6+PxEIU#%ER#6HKnBr*LF9> z2CqxbSz6Y{6_xywXU)Dz+2KRy|JwQ4k!Az5D~AoQ}#`YYQmsY|zG*(n|0T5K8Q* z>`bt+p*Z*jV6`p$1Na4J)(pwZ-8;S#i3O9qu15U#Sgk&GUlX9!QItnZsDdh(Z zBGf@3GLnVkorMBiDf|Y|i`09nA>c-_NvNd}o|u_Gc$}!1=E;APDrCY%;wcaR%mW!oh&zo)8DPb0N@9UjD{htll&t90000< KMNUMnLSTY2^U^T@ literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/dr1.png b/resource/zh/gui/icon/hmi/dr1.png new file mode 100644 index 0000000000000000000000000000000000000000..727edec5bd5b843d29416b97c873304e265dfd83 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkR`x zi(`mKXY!x_|LvJ=8H8hVB)4WMQ2o;5mKb1V`A9|NraVa%!9s zejF9#Hewf(S;A0LHKDmQp{7MYsc>hFiJ<^9-=dX{&mXfcHhr_gb+K3=hlGR#Lt(4p V-sLx=)qu7!c)I$ztaD0e0sxwiIokjL literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/drdqdz.png b/resource/zh/gui/icon/hmi/drdqdz.png new file mode 100644 index 0000000000000000000000000000000000000000..a9157540068dc2a193a53e338a25545ecd86077a GIT binary patch literal 390 zcmV;10eSw3P)KmN7~LK@^6+h*)ay1Oc0Qokxf_NM~t0f?mK2Sa<{D z2^4YwBeoV={f&j7wU{;_DbooHq~pqGTY9`C2~Buy3q0Yl*AoA`BQ+-VGoSx9>FVe~f*HujZ1?}Ih7 z5ikJylJ3oHH%cezstu^F8Mc7f#{1C&mu5C>1N!j@@~jSkqN4qwq)`)4T}EfX%ptR+ z8P1z#HW%dW9Oc>op4}eDEc_-g_L?1e?7=sZWwqBtQl}~K4s5&MlXUxQ zpb9M7tHY*c>*s*7&N@l4@E0!Ej=x74?{e0ETFfZ-2_baLxgmtd5JHi=w$bS==`9() kG+Dd4%3Is&cdMNNAHt@kK*GqZ-2eap07*qoM6N<$f;C^PyZ`_I literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/dydlq.png b/resource/zh/gui/icon/hmi/dydlq.png new file mode 100644 index 0000000000000000000000000000000000000000..8543cbaee41807caf34c57ff20459e9ab3b034b9 GIT binary patch literal 331 zcmV-R0kr;!P)KmN9AqK@^5Rjcw2(2iS6c(s%@mw1I#JNUo3@B?n01 z4fY7zy~aX|^aks&GBAS3>h8?0g0eq6W_ir;@!tNtnL$~WTtmaFP;LSwDVJ1Anq3qW ztNQ~*+gnlrY=9@=8TbKSfHyPCPn{b@LNdU|_#izGYj*BzO6yh?xoxO29VBV$!+)EZ zhfIJq@Cm#E3*fO1g#SmU!a0{Y=Qbgx``q#Vs@!qZnnBVR@DBU|Gczmdx=^Ls)|uG{ z@Er`0@7vfps4G}w*R_R3*}Dxa>Eb&u$iJTuW_I4%sY5kX_6s}!jjC!hRF^TE`}-(a d{c|f#zz*_Fi-xQ9XJ7yT002ovPDHLkV1kr=jC241 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/dykg.png b/resource/zh/gui/icon/hmi/dykg.png new file mode 100644 index 0000000000000000000000000000000000000000..e765c11343328e7e9bd3404b66553147b4120f76 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px_Bl z7sn8f&bQMx@-i9nxc+yaBC?%P`wqvIkemZ+53%(W%s#;3u|;G9qbToD_h~T!b91__ z1Mf^%Qk^(QT>D>`24`@FA?MTgjw-H2##Sp9iFBkGZ~4dB@r3Wd+?3bR+6?KFj$dF5 zyEl>XKwdrLhb;yS=JU5N{GsuJyR7trHkW6!%(k)%io(;^S$Xo$pJ!B9oUWmLW$#_> z-X-g}y3$hq-JJa9w5IB*U7t6-+dOTB#5SJQ64w&)8E$Xn&3?b-i+4R@XC**CF?hQAxvX2BR0px^^f z7sn8f&bQY#@*Xk}XniOz*1)@Zw{Z68SPIE* zb5`PtdmPdA_2j-eQ~Qeh%r51+{?zoiOZ+w{IgS8$^WKtp8VN087xfO4sh&XSUrRFr0JwBEM*6TC62#QljJ&T z-}>^2BR0px`A> z7sn8f&bQMJaxxhTxXw>v6jRvY{`^VVgJ};6`==#HPD|8`K2#;uFQ;>Wsl`L#P*ct( zPX&cH?K@ll8`Y~#XfQlYg=ncUN#_(-#_j8Q$kn}<1K?JC39|CHlPoFj@- i;?LH%Nrp(U)G&O#Y<^JiYzY(4cMP7celF{r5}E)*uy8a0 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/ellipse.png b/resource/zh/gui/icon/hmi/ellipse.png new file mode 100644 index 0000000000000000000000000000000000000000..1ca597462d4144e7934346b90151a98f3d2f2f01 GIT binary patch literal 369 zcmV-%0gnEOP)KmBDesFc3u_OzxxvcaU^oE_)6gKnYF-aViKUm=4H! zFQxP&%Oo7B( z+5@Gk?)!X?Gv5F+RsHgPhDuj* z$YNvBuG2BR0kesKB zV~9uR+i8Y;Oo}2d^N(FRWWD2Th?ty%O>_8-qH}@HueGM^Z&b1L{GRW-xBYupQ{Bp}1-@AtFS%kG*gy2F$!)YP*nF+eRUv_) z>_FkcrR`S?*gqY#U`)?`dwYV1(E*XN#aVx3O9R-qvYs++=6tTA`8+k~uuKLUAGdd@ q9$TwfpV=q%EPbB8yF=9;uwGuKbUStWl?I@r89ZJ6T-G@yGywpd99>ud literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/equVertical.png b/resource/zh/gui/icon/hmi/equVertical.png new file mode 100644 index 0000000000000000000000000000000000000000..ca1a9d8a9975cad4e034698b6fc2036068f42d11 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px{AI z7sn8f&bQMx@*Xk}aE%v8v`)Pq zaqVQ?rJt{#oRV=3JMFfQPo^5wClw%x_)ii;fA3Qv65)B8#7u$tGg>APkr`sN;a zx^?vfVbjOA+&iSg52{x!=}`#Z_~E6l(!yLWr_kjJy7x8Gg4{ROZokA(XBVm2^+qcB Q70@#bp00i_>zopr08RI2DF6Tf literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/equalLarge.png b/resource/zh/gui/icon/hmi/equalLarge.png new file mode 100644 index 0000000000000000000000000000000000000000..0091d9e1a4c53fe483ef78227a8a698b2c77336b GIT binary patch literal 428 zcmV;d0aN~oP)4md|O!Pz=VulpG7m1jUe(PW1+D2gnK~BXod5+YLNI zMhJ9(v>T)+odTf~G|;KkL(bdY<%sk1_0O6bgW;y&_}xP2Ia~B-bPbDv9$Tu_J(8Cb73qci#e-*#{xej+ui}#LW8>kw|uz17%HnVw2Cc ziVZV&q4+@{g}g-G1wliX_Zq+hfF*#vc^>WU;0;SeBA4{yR$&VOZ_NA}@*h-@gM0ya z%EeTJ0ubrf??pihxdG6eAk6#&;2^T;2LvtJBeR6p%zQAFh&=-MR!EVhDmpFU#>s_R z2nwaU_C2YEoPk6xB5IvaR|}CGexmz|wq|F~^}5h~@+@P9h?;@|IzQ1<(%H%c_O8LJ z0??VIX5B`wGFGfy$wROjq*FLJATI@K^*piAmi7OCzgy#g0Q>=2 W;Bb4DX+d}Z00004l|635FbsuXii`&0BXoUJy?3aO(B3RZ=?&Tr-IIxH zj^F~>T@YXanUE+uH9X`29wbxzK#4!QaU8LQ9yXx>*ryAUea=WkJ|ib{&h6d5kAkmV z1e$ZsgH%5NP8G*qUvAw2IHVgn&`CtHS5cC;C#hHVlJ2dN3?y5UuaQkIqPfmBiUGg{ zfJX2{@=ZkER|Q!Dd;@3{0^n@GtZpt?l6vrJAcgcIGL-E9`$mny^m~j9*GLA1Jp*VX zqdV_)UY5d>_97y+c9c~uqQO%5dW-W^6OcwgvP-ru_Snr5nELP?-AAO?bTs4kui~vv z&Iq-rBEl_9kBn5`^$=loDtAY-G jXw6X7{{C9fHXs1MaSU4wcXX;A00000NkvXXu0mjf;<2S3 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/event.png b/resource/zh/gui/icon/hmi/event.png new file mode 100644 index 0000000000000000000000000000000000000000..2eed17f679fa6b407ffdd1fcb6f5972c228ea53b GIT binary patch literal 418 zcmV;T0bTxyP)KR?AVtKn#5_xkCr!xVq6npaVKE>0nE62`(Y&ARXXz zkejYf2T*|-&%Bt$mNs?{fnm^$F5V}-m8{R+v~7!P$n8~F{v^>NcPJuH0LqEJN>!~d zA_A}h@Gz06!!F&^uIeleA;b_u8$zf(%t<>8vC+er|42mclax(KU5};hNW5aG0NerC z4)ZP|n@-bj#B6C(O(GJJM*szY4=0*}YDLxA6!eiNN^VrCYGd8b5@LJXERl%309XMy zdMP*~6>V4ayE(>j<71fW;y8bp^nF3f-M?#xED=v|$?f~pL4Wi`?z>aE3 zr0t%*+=$YfL=mw@N=^MH#KwUSpGZ{?N%L8Kbf6BUOqzUjZf;oSx}o87ZYtwz%D=H; zmsZ7^RY%}Ov(9Ua?3+PEni*^2sH*OoIJb{p=PbV5;r}b>mlFZ_1bRQXIu33P(f|Me M07*qoM6N<$g4$!So&W#< literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/faultRecording.png b/resource/zh/gui/icon/hmi/faultRecording.png new file mode 100644 index 0000000000000000000000000000000000000000..168f5d0415aca6645cde22972bd5cbba0dbefe3d GIT binary patch literal 555 zcmV+`0@VG9P)Px$?DD9?$gF?Ht zsNhg&pdE!yg+c|vb21iMNTGuu4xJqA;83XBOTob*xu;&A!5EX6;#&$i!@I-1@Bhv@ zoO{ltFbwlS5G(^U10VFKTLqnO~&H0U2Xs05>~8b!HAy z2AMaBAU#i3t@v;15w*NF#%coCBEMQ|@2TP?fGGf@s`yEyUjVE#^N)Xx_EgkcJIGr5 z&^Z+%%5@ji^*D}~`W1{Zb`#JBGe0@aS2vI`_VnfI#5i|}lxh%x34KwhK-=q~^Zs`^bt>g96z zb~bzCDG}DZGk`v0<_|qVSLHvsd$$F!JNP7s#+o< ze?^V}{qCH5SFKh*w>vQ`1`La#Z`BPu!~fA4253Xq?+jN#2H7{pd;&0`s*57B+q2gV zBG&Ir6xn?uOafYOHk+kOAOQ92LeBorC!+%JGprr7m&};-&AB#^Z~Mh!aU?BFqtVS@uk<=N7HPx%6iGxuR7gwhl(B0RQ4q$zZ*PkfSG@Bth@hAvmV!mZwGYScRTdTo6f9CiNWelc z_JS6c7S~^V?|FM=z_qZlut_>WEi3}ZWrcu;?Cr?QWi_ss;H_|lWV_v&+24HMn|Z{H z9?pn^Gf-ux|5NLNAn=t^^|CK%nr2Co90Wm7S4#OsJWbPKk|e|8JqUt1rPSO>argbu zx-bmqN$+DBBqE8m=0+GsuSo_)TtqUGc7K1c;u;CV)>9H|rTBK1aXpS-?*0K1ksgT` zMZsvqez&XN9)T7BxhWz(;DsbsMe42oisOUCF%*}AspVY5&)7!3B@bd{}hw$y5V0>}qr%(YWM?_Fcon#+~WXl%=2 zx68(8P698+2|=5DIiM6hG6zVd6l<$;Jd1mpsV+al7>^U>9A zx4ZY(pyPW4!2K*CdC!gRggxp5>}A>ahrM3!%g;Tkd{a(QIJ-+V3|o(;XsmK7qo^g7 otEVWOopn<*^-rm1iYnXp0~dKJj*nO`;s5{u07*qoM6N<$g6EDHvj6}9 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/fdj.png b/resource/zh/gui/icon/hmi/fdj.png new file mode 100644 index 0000000000000000000000000000000000000000..d8d2d614111a328e2206b33625932244939313ce GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR01_nk2 zPZ!4!kIuJY(Y%KZcx?C`6v!81?+&NQV{Q0x%tftk$ zbC3Qs%)iH+GV`W_*p^M~40$$Yp^YXlxi0y5ZjD=MqaS;Yht*)VjC9cN{5+_@}LhDW6Zyyb#V?W-t>mR<=-I~mrwbkg~{^D literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/fhkg.png b/resource/zh/gui/icon/hmi/fhkg.png new file mode 100644 index 0000000000000000000000000000000000000000..2ca61c1acfa3fa6232f3cb9c634c332245ec89b6 GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px{kU z7sn8f&g4J;|JyU$G6=`!NPZDBG%_+XFf#g=o|00sV5RGmhQRI<> z2~^7l#0EdvMObC89A$T46Y>zT5N15Mpm~>=7{9#3K~~ZE4PyR`F09s!@|+7KdA`f8 zoN>eDLBq4%Y_lR-4wsipNJxBHktaCoeVl{tXT>o2ld6aR|Nrm!(S-TbU#B(uE@n05 i7~Hy}#BX3=z`&5MZf5pS+-g41lMJ4&elF{r5}E+CKVcgH literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/fileSync.png b/resource/zh/gui/icon/hmi/fileSync.png new file mode 100644 index 0000000000000000000000000000000000000000..5c10001103b761c9fbb079c0a979066f65526523 GIT binary patch literal 396 zcmV;70dxL|P)KR?$tvFciEZ{#(YlFR}q;gE9f#05JjW1TX?jP&NQI zNWX54c7mW+JxiA3Dv1M;khq`7=h)|W@8vnOrfDz*E+$c#Qs^=zNWKENAGzgerM2=e0vP6aCCxDxjKPQwf>_peWI)!qlD?z7F>h-S)<*X~o z-`}r;1)#E1a^_g(VsTnk$fS!PS*_*@<^V1_yyoj z(gMI0fUWZn0LBTqT_+LCMX*WI0YKKWfT1}Gc5TuLNj1q^0NG*~8j;!aC@I^PoIm`8 zkYPbGdur#OqdXQ1Eq#*@l2v9tSh^o86k|owD(+N`$@S36VegC2s?5KS%1b!F-knF| qt)yN;*{eKmMJ1i#|97hl0KNfOQ+e$$c~zZk<( literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/fldkq.png b/resource/zh/gui/icon/hmi/fldkq.png new file mode 100644 index 0000000000000000000000000000000000000000..06d88c13ee45f9e8e488151ea73ee6d92b0b6b4c GIT binary patch literal 710 zcmV;%0y+JOP)@L(eiT(Au)^tge~P3Tbr7i1_ z19tY|>npSkqd1KpaVPwvDW#T3Pl*43@2~{h`w8_+-3sMm&*CoH(JiKwZqiOEjpA>m zK;Djh%lira*Md??m$3@>@D85fmQo1IuoRba&g)Z38*nP3zKvJ#dT{=U#c_x|larG_ zHzRs4aAn}I@^-QEqnsrJ5xAf@z6jAwCBNf%tkVfcokw^+)hW zjPK)HTvaM_SC^3TKHy=_d5=;}cdKb~{mr<8ctmrw~^2)q}# zKgiqIp`=PJk}BnI#C$u}@2~N-V!ms`Ochb!9efevkMMr@$CSIPKCJ3~PT?#6KZBVN zTGotcG_W4-73{`mxE{W#obwZ0i}7sC@7CQBD!$>S(4xSWZo8&5&-HkQfyyg#Eng9R*07*qoM6N<$f`aKKmOW0xKoEsrP|8R+5(l823T_Z91$B+iE%Cf{5x*3Hsf&QX-m$hbg4`2&m z1K?Ka1Atf0ll*M+XuWl2_6Q&g0J-8S0H!2AVm{H0Oap;gGxm@=(pwSRR~VKM;V6 zp4T8dU4SBH-W62Wdr*nTy_voJ2k5IIcXxFV$tPXuol+jxR|k!GMwNO)dVyq|4uPQS zqgsOv(#6YQW?5j8=sdmw99zs6+H@W!^(Hn}w8C%A1?{4y^=C~#CllyL08T*Ybjjc^ R9kT!c002ovPDHLkV1gaqn6Ll< literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/glkg.png b/resource/zh/gui/icon/hmi/glkg.png new file mode 100644 index 0000000000000000000000000000000000000000..bcdd73e270c80bfea84e779433f905f514c470c8 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px{YQ z7sn8f&bQMp@*Xnaaao^J9DRXPg3(N2v5E8nj+qSGK3F(T?P<}v=^G`b_+Uwm>htRs z8!ziU?-9FYy0FHiBSr4`vjt1D*tB+)s(fc)YB-#t#VFzOWS^8v5ktYe&SKGtleZu6 zl|AXrm~ti1{=}4>%D&gvGJINf&uj7a#Q~g!wsIL&A5@KO|BG$m)X?onudKR?!VaKoDIQzcio$3ZM@S(0~TE0qURu8qk0SRs$NK z0GBt(Tz1{wxet-totI1ucHet5CL7MWuHp>bPEompzCy^=Z=xtVbOe=B4(ER~bzvA9 zx#xLL@6$9DK@d=$W!YOH<7D7(gpE~IQ6x!1gu^gUv~5dko2H@bJkQuiMy6?^D2jsK z?S3QODab*ll%m*H1tU6q-~YTKpznKf7ss)&0q(gXm|!8S>$;8%avOImLd(z!5aoF; z#&M))s8ok8vMdXU)OBsG$SQ=zAm@IA03x~&x0Q#6g<#AE*Y=Rx1Aq(!5N0w2a&9pO zgiY|UY+)4wQCXG`!R=-Yhm_JVW6O2C9EKzC+egs#&u|HyEF^@u18{enJ1)n58UO$Q M07*qoM6N<$f)lio?EnA( literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/grid.png b/resource/zh/gui/icon/hmi/grid.png new file mode 100644 index 0000000000000000000000000000000000000000..2febe7705ac0f81c3766d855e6a51ca787339cee GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkSz{ zi(`mKXY!x_|LvJ=8H8hVB)4`59cc2saP{icMIxK3zvsD?Y;620$dgbkd1m{MCmR|c zPM2t#?^+?uyzhjnDK`(Fe6QO3iK!Pqc;D+;+&ek2JAr{gY^h@Y^54s%fEF-#y85}S Ib4q9e08E-VegFUf literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/gzp.png b/resource/zh/gui/icon/hmi/gzp.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec52aae6a26534a0cd5e39893daaa16fcee3082 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px_}- z7sn8f&bLz!avnC|ajo}yAGy%|qs8wTkGw-1lCRY@9{%G#} z{Fu1kCt%RjY)M@{23Z$e&*1;b)9oeMfj{bF3k>2TR&KhC5r*pVqQIJ&?XGo}uRH+Jg+svc9Rkn6qy6lJsp)mVfhl z8=AW=Ep(UKDTPHIE{@gzd!|g>^kx6Gu9$bT#CGaNn_pYIv;7zEZAaNF8VvG>go=A> T{~kCA^bLcjtDnm{r-UW|-V1QP literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/hgq.png b/resource/zh/gui/icon/hmi/hgq.png new file mode 100644 index 0000000000000000000000000000000000000000..cb37d9840ad7e39e3dbcd0eeb4f44a5c887a3753 GIT binary patch literal 327 zcmV-N0l5B&P)b;@5Jlf^VOsa;SL>3TA<6+La|fVK4!~771nDV|0+Em$I0Ze$P%xH^jThr}<$P&1 z(){oFE9=j~&|pHOh}3#nmI*+f=e2K*X&z^vzgsu_Gb3Y6?X=-ykN`7aZLJk+tpIE7 zCA~NRFTfU%hO<>o6q1t35tumV#5pIxM0*14fKiOmR0kb^6u^5g-uq&~Qs7TD)6k$t zsr%6S37qcmC*Z51?PT<-^*f+hX&uKHwL$S4&oM?nTHgYicdh#vqovjb8ioo|<;vPl z7;%kmQ@jt#{Sp~(c)YMXdRW*32`~pXr6*{kz22Un8&npyHG*Lfk=kj)J#Ew{hG#T9 ZTmakpW)s4W-#GvP002ovPDHLkV1fPx%vPnciR7gwhmOW?`Q51#Goh&3picKmD!GI|uC~RSoBEz9G2-z?>-$=@-F8fJ?6H z-fas~%60*q4}#qbog(T)*IF-A^gl-p zd22Z$nXxQuzEY{&E|<$;$ErI?j(p#L-z~2v>Z8fY$y2?(y>oyllC>fdk!^tMQ4}q# zt*w1)25@YU*7_zOOCh-3)J0}(tTxe)}FiKagq8v-JDp7+c^^Z9&V zHaqxQ1fx+D4yTq*YyB9Ic@c~_j`O9tlcPLSDRmZ*Z4o><2FTw0E#FtybtewW)y|x? zwo3qp66Z(+MaOZLmC`>=gs$s8Yz2uRM>dOso{`ZgK;nL)9GTpZa?kfWf$XOMbNlc% zprl@>wY>#!r&YRk4Qr$$dHNVRs!IWIq_wPDVM?hX5z7R&kQ!8XgT9X>HiBUHTD#wW zy}SoXB4WyWzZjBAXQFPn!gG>kfOkC4J2ccxO-&73R%THI<8h1|#vPH3z8hkaS<^tQZ%kmv!MNP3!hAXbaUalaiSVU(M%YIVoa69)#eBw qB4!=$FHGxIbl* zx*O05%nx4E5V=LMgqxErMYisJ&eJ`)NhzU*?y6804ITcS)l|v2yHj=^=GESYOC@BEgxF@Sz>W%<9N&O{LPM*%Sr?taRde5pgu%(5< tT+eM%_n#_xVMDEFBKVr6<+g6|pl=5LI%|zhtuO!p002ovPDHLkV1jd|k;4E0 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/hotkey.png b/resource/zh/gui/icon/hmi/hotkey.png new file mode 100644 index 0000000000000000000000000000000000000000..6c057b65c9ddf186653ac9d1978747a9c0203e1f GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkTkJ zi(`mK=i8|ld0Py4obL)VZJM?j;Ozrx%{>&*iHh^U4-_XzsG z_{?$Ck*|t1UtP)Kmc2~_K@f#M5IKZonD9kF1waS1Km@UB@nTxD(2s0ZCd&>LlI#DrkuI z4|G(sNYW)RAF`&_(E>PY4w7_Y7x;!9d+5CxNYV&cr;GfKh;;Mm;nQZIh*&!x>0+Ml zfXO#l8<3S7uYe0+77>p?IvoSIz_M?H;-=~&T-w>aVZ|EMy(QfNPY$mlqSwhrgRXZ( zWUd|@Zt~S0WY`pVb{!QLZEeBk5xxP}l4d0fs$W+ke-KrDt1uvvbkRO)FH~;_u07*qoM6N<$f;Y&EFaQ7m literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/jd.png b/resource/zh/gui/icon/hmi/jd.png new file mode 100644 index 0000000000000000000000000000000000000000..f15f4a034e28041d00554ac76ca52644df0d6698 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px`o3 z7sn8f&g4J;|JyU$G6=`!NL~@k%*y)5o;WMoMNeXD#+5~Z-E9+GExhx6eSKNk*w|Qg zf_^XDqAa$P{rdX&`i8SMVm5sq2?+@+jw|n%?~YJrW_D&?Db^TMCeUxAXB)wISIe%( zj)~dV_beNeBL`D2P}gy(6a#|~EBkIWBwRSyux!~g7NEJzCJ(uRa{3Bx_7}w*bvLSC jU%dFN?k5IjW@d&{%hlIi41ekebTNactDnm{r-UW|gziv( literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/jddz.png b/resource/zh/gui/icon/hmi/jddz.png new file mode 100644 index 0000000000000000000000000000000000000000..5e4f6eac87fd4d83439c8a76ebc405f76d076d34 GIT binary patch literal 371 zcmV-(0gV2MP)Kmb*;@K@f&NBXUy$h-e}R$hi_I!L9&003-@96#yX_ z9oTe$qlu7Q0!Rd8hgOWAmxQk}_Qhi+NcH)gK%E-ZTo&Z3sN z(mS&(#p4*bi$L6<4EAi@ufag3@1h+H)LUI2Y>LS;da$ZaejD$)y;DqH2e&Afh}=|` zY-;7gTaT_Q^U3l*0o_*StM^@`@SOsSa$Hp#&;Cd$PuI|SVEvZKR#A@-be4Z{$_Fo?EoMNt$S^I8l@hN_yTQ71wYCIQN_ zqz{BymeE?C=ZCG^B?1Xrf)-+InkL=R9#FutEachV;afzU6dTdTBcK=*!AR4T?&)nJ zv}m4ZQP(w{sH!T}8YD*nxO~KjZ}D&&SuD@k6$20i0TJlBP62BR0px_Zt z7sn8f&bQO{@-i9nwBA>&3R_TmG?zhnBja(l9u{ebr_%)UniVFzd^EpBgLRks(v#hP zRQo;~FPU<|d9~h@c?(KY1O$B<{JLt>o}KJo_--Q0|Ewv~F2~+-m%73f8p>(Rzq3xi zl%L_a!egd{e?eC1Zb>Hv27d~}gnAqWDY$kV1AR~Fn8jsWEtNj?_luFFk U1j=$82l|J>)78&qol`;+07`CW%m4rY literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/jx.png b/resource/zh/gui/icon/hmi/jx.png new file mode 100644 index 0000000000000000000000000000000000000000..717bb364f6250238d3c812f72fb0d0cc2d033a76 GIT binary patch literal 366 zcmV-!0g?WRP)4mN9C>U<`#ng&x2s2$?(O2tG!KK$9Dk9w4+Qsi)8} zM+o!|olB;ShAbTde^7V^<4G#UgbD<|AC{hFJ&E5+DNJFrNm!;NdWgPgW)-joDnTvK zlv3JIe6&X*It<`?bfO;FQIGQ|37KE#=84Vht2<|6Js|AB61d2hsn{fmSMe=xGh|Vc zN{M&CuY4!0isT5*k@~R$9$gc1Kd(krT~FEz;8XAu@Dr7IW;5K90w;MbEM(a^dJ_Sv z&^JSjEGh3Y@H!fMmrK=!@Ge21{#?RL$vJ9zSd*EfP(|8tFTjVHb?`H=3Gci_MSEb| z6T?>6=oR^wzbZN1dDMyqeL2gUOlCmd#DWKoEr=h`Un)*LNZv5IS%Nq=b~<64F6T2PwgH zkeud93Ah5ImEKC0*&UV@L=lX%vgCblzMcKEZ>DL&CF1rXl&c1joI?9`P;LBE5Xo&# zUonW}J;@V*gCjcxP0&_>WDJl80B0x1SsEASRdfW<0C)kgadaDL8hOe=n)g`A&dlC( z3DmcXmF3nfS5Xvq9%KRQ7TzMzBY@G&Qd9AywuA-kDDS7Za|U|KjDGmSlLTGG&9JV> zm-Xa8uVK5AY)c8!Hu4sOdObUms{+Vsw(I(oCJ8dLes<#b9!!1vc<$sa11VZ<*Jl7j zY8v%!kY)Zgt|9XCy3qpPR04gMK3Z*ry!8 Y2cuhNP0?o{(f|Me07*qoM6N<$f^iz4bN~PV literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/kx.png b/resource/zh/gui/icon/hmi/kx.png new file mode 100644 index 0000000000000000000000000000000000000000..82ab0e8ca7be9782b9ab773b6da519da1db86bd1 GIT binary patch literal 480 zcmV<60U!Q}P)KmOn~EK@i4&BbFBL2nsnsE+D+pLeb7nattdCp1{`5 z%El(CEEBY`5X=EmXk|KMp`^;l!mMmwcGnjT0l|e~vwvp4-EY2`7g1GK(biUi@+W~r zye%pySIT`FJdKVtC z40)dcU5lZMtrN$s^|fN;g5Ih@U18J>gIMNcWKQh_a0=n8l-kQ9Qy40e&h#A;BFm=fry-=od`xiwkMa0K_zaCTT|9`iB)__mm W=j;`RJhnjq00002BR0px`M_ z7sn8f&bQY#@-{h$9Q$a0?AVb*=L}02xOMHK!wXo&3)sv8)C{hzU$}8o5p%S)wReu* zu?fx&6C@5@-*e}*>i#{}3M`(JF1S?nYOHPfwQt!HE%9=r&5^r)c6YYzTUNekyUrP% ze_I?cN!{4_ly%1MZ=th1E}8YtxVg8Ct~vk9z+Ro?Qi^6`9ARCmiLQqIm&+Vy6~6v cuk9BWZbd!Thyp1=psyG_UHx3vIVCg!0FO#=#Q*>R literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/levelDown.png b/resource/zh/gui/icon/hmi/levelDown.png new file mode 100644 index 0000000000000000000000000000000000000000..5943b3af34e0059375dff45f8b9c6ef38af89c1b GIT binary patch literal 310 zcmV-60m=S}P)4m9Y(jFc3u_QF>Nj1e68h=FdS!%LwVO2w5Ovl}tbi zuCNdZAX^0GSJ+1PboRG@(f2)D=&%U|IK~4>A!l(jYbQa#Jtqh#K7jyUK$i%pfij+$ z0(E8*3ti+(SAUZs&DZjDM+f4LBIvLOS(=#t_;y~$pN}CL`M_D{JZhB+gy=Fu9H*) zEu)NaNHDY6{90rNFBH7+Y6z^nN8Z`fho_~G)u0sZ=N{$K8#Z24k-`g%hX4Qo07*qo IM6N<$f<&l(_y7O^ literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/levelUp.png b/resource/zh/gui/icon/hmi/levelUp.png new file mode 100644 index 0000000000000000000000000000000000000000..4a800fb56c6c7887fda63c7124113625685f0678 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px`S{ z7sn8f&bw0&@-`drxYldEGvJaI;oE2IE> z{%=8#p@q|QXAMgQrBxj(era}eWHAUgcs}~;_$i6k;pEcbgg^!MAgj}y85}S Ib4q9e0Fiil>Hq)$ literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/link.png b/resource/zh/gui/icon/hmi/link.png new file mode 100644 index 0000000000000000000000000000000000000000..58167394f5f90b2c646b5b7b40ef1f0f13bb4f12 GIT binary patch literal 1141 zcmaJ>ZD+!!c~!eAg2g^^8h(+^S*S%;J=qEb-?gCW?Deh@)rNQXXGo4OCigS+R2-|zST z{r}JZx$klVpLtjJtfnZ+o6SghGWNJ{M?3lc^7)>-WcV1TOSpiBa8t>98dhHJy=vs{4 zAC@`UO2LYrsoStnA1JEz5jCpOeR0rR6N!KUu>xwwsOgBc7`><~lDWIh(qIvSM`H9_ zQzbbEQpkoN%y52{i*O*qGkh>42*OSf;CPPZ0xTc!^MV)*h#Uu&9-2h6wIMMt^)JOD zs~BCu*b-T`TCFnGAcO2-mXAiGu0|l>CkVeYZepe8HyvM7L4uBI>lW6L30y^`jK*+` zCQjd`U|7qtrn6KgQZTlrSS-(QZc0s{EPohk7|Un}=ixiQ?-h26;}&G|&_QFiN)B$w z=Z3PxlnoV(>>@&=%_`<92qUM0ERZUM!G7J;P}NyP%d(g?9jurt%t|qu@EKj##85bp zN{4nwxRlV(^JyvBpNyorP&l|N9T9?Ip~;nyI%YrmBT(zN zkpUJH7WLL%LM`={xLRv3;g(#Mm|@*x{ogS+w@B}})8(cmi{-Y5Ch2vXH1)&3db-Jl zc#@Tp#oFKHh1ak9JTYp$=j?PNeSXv2BYIPJs!%9UnT-j)ulTQT?cS*`|Eqf#&$ka} zJ8u7;@OB-ah!+>Y#MM*xyT1Bqja8B+;@cXJ+Z&I+Ph9Mnz?8Cf^Nyc82Tz(G&ApnA zx7qQ;b#H!wy2GsmV_P?DNkmtKqUT=xxwGx-N6E%W$I4C-G&;B6%Z&ay|4H!jv&m0U zZpYc>N_zd|^L9Px&Pf0{UR7gv`)n7;iN5)qppcaKa7Ri#x$BG;B(yA0hhhcc z$Tp|TIU~qF!4|__6kLYwB8UYE`eqMeg&;lYL*`P#A%@~~r_L>HyWV>zfu6_n=l40k z^OxY13OOYQDIrSf4FF95Y=n?6|2wgi(DwFrP_NhD0T2No5JEmAVm!}hO;1m6rJ8^y zWHwvs&zwnr-rCx#D=8^vu~K@e&H5+a1?4gzr;hx+<@R904C zcXt;(Jx?${KQBu_9XkRkA&JpyYinV#R7+TIZy#o7XOD#?L2`s;k(YNCD=XiUf?2KC zV6|GYzrT+_;030prcz>ukQ`zA;&8O0xVRWyU0%%1%_(B6a%gB6;c!?JlOUx`+S(pU z$i~J7+S(o=5@Dx1xl~nE!DhQDRfa;ZFgiM_iV?H9<}$}o5rF=nS4G7o*zI-+ak<*D zv$KPuqH{+eRb=57CBS#=Dj2)29&Q1wqC(G${DPl^9BBX_7XB(FT zfj~s3(_K);=+kgG{6HyH&5utIEYAqRT{e(Xy3BEe9~&F{0bmk9c_KzBdPVWgJ+<{r z`IY~92T>4@$3x@e2BR0px`b~ z7sn8f&bQMx@-i9nxW)_E_7o{!*pbd`bg1_b$4=fCcMT5Zip;X+T!{IP|;J?>zU_+q6z=mJ8LEZ1Hljc_939!K#H^96OlW zUGf-KHToT}oVYuZ$44P_ZsX0cU`7uYrUK6;>Y-oX+x)tl|d*0JAK~OHOk-rvzGE#F}%#y+cv*i;4jb@44$rj JF6*2UngG)vV&MP) literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/ljbyq.png b/resource/zh/gui/icon/hmi/ljbyq.png new file mode 100644 index 0000000000000000000000000000000000000000..42ecedc9564a2cbcee41560506b5d70097dcf0b4 GIT binary patch literal 467 zcmV;^0WAKBP)~a*8F@dhSIEly%z$<`< z%FsUall*L3qxFtNBnPlDU4_<}>3br%_11BZPDJJgYI$p1Da@U&wiO`Z!2?Z)`fM) z*dUqOar8M0XrlC9n&XW24q$Bnj;TdFpg8Fnz|{0xdM~sb+JL+}+5z}BARfJ^>bvU= zl%lC;-W)HFVtyQ)ql*@Ok_yp<-YWois%sG-g6wr{Rhd&Wj|_iIQqfE%qpFAtsD&pi?gIb-002ov JPDHLkV1o2u%7_2} literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/ljbyq1.png b/resource/zh/gui/icon/hmi/ljbyq1.png new file mode 100644 index 0000000000000000000000000000000000000000..e8384f45975b2d5479aac2aa6cef106e0797a110 GIT binary patch literal 533 zcmV+w0_y#VP)bFwri0Bl+J%EeU)Qi$H^V`NiL=*yO8>+s1D~9fhnLDm^oT($CssZu<;E0*e zRa1S@DQSys_K1k60AK{*(A+T*C0}L^QxSgxC^GXnYeZE6=^G#_lA3DLhs^cG)*6)y zNHfdKecjUUqDW5r6iQaN)hWUK{-8lGi6h*iAn`SG}D$m5Pb1s)VnayU8s(GGw zyuilFIv0?33bkS~nIyM?@B7hoI=wb*!<0`Zpq^Zm6(I)VI35Q<@DT*TlQxpMirDsS zi!G}ob>%$EFsY;AaM%LyS}K)VsXDr3=JkNE#fR_zJmm{O6NWLf_29Pxw65&tzYf3; XrE0vsCBDpt00000NkvXXu0mjf8rtov literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/ljbyq2.png b/resource/zh/gui/icon/hmi/ljbyq2.png new file mode 100644 index 0000000000000000000000000000000000000000..20efb02436c1afbbdaae51fdac54a612a8f9c69c GIT binary patch literal 512 zcmV+b0{{JqP)`t$$_hwtMEIqxSRCOt}*H84G zm?Sd_UWDrrrSsx_k}pINdbfcMyLb=aL3(CuM=?WEh~D;SHf;<^Q0631kv8!qSVY`Y z6aQenPm*<`fPBzL79z4`bl$N!kxwZgcj^asA4UwUCwb}cNt#XbO}^e^wF%$?n6vdO zuwArG{Ex;LfcFhoMbKqjJ-)fzj?|~X{bdB4<4d?=b2FnUkBPr@+n(BEAoPkyh zkW^fOB{1{!RFJG2Iz>{a zNT(GQ6pDEDK{}axd1qKgqUL7@^gkU~-9b8?t)=}^SYF;u)~UC`3SAS0A!_h@iXNAc VLmL!uZpi=u002ovPDHLkV1i-ji7x;E literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/menu.png b/resource/zh/gui/icon/hmi/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..9a2b3018831172f6b49f895f9f3c77bcefe07220 GIT binary patch literal 369 zcmV-%0gnEOP)4l)-JoFbqYXiw=+tJVK}7J>JA4XoPH%-g)T?8NnN5 z1Lt5Wl_jc?12hQy0mBISoljBZ@8)^t75I3G$}WXIy`YF3ffLYMXaYu6{eFfA(B;Em zAD=6Q4e?J}c@bXgPWHY4gFTllw}l5}trL+0zikLf^;q@&7T%*1dHAU%y!-I55>nMG z%Y_02yN4Lhd3T7&!MMRf6B)dz8(EJ31)QxNRfvdZEn^-iT4${oys8>7;Y=Jj5Sn+w(%`6Zm^%vIfK`V zmRyR}FsSNPL?){!B+D8rO?Ru6R|*+c&fw&>@_=?{C^o*87qLHQ*q_i1+nJf2nX>v} P00000NkvXXu0mjf!FQXR literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/ml.png b/resource/zh/gui/icon/hmi/ml.png new file mode 100644 index 0000000000000000000000000000000000000000..0b901bfdcb552ca25534e576b7dc1ac2a0e2a026 GIT binary patch literal 468 zcmV;_0W1EAP)4mOW0xKoEt$hbSr1Ml?QxX{abT0!Q!>I0D>&61s4M zl$4d;5jY?o-;KJgvEs04#F-#TARkl`VjYfgiqud%9_o$7t<`yLB(29QyT>9AN zI)}%Ec4cvXoAwPGv1tS z#e~9=y#imhK(48J>?iPU&qY_)`8PQM&VXAZ*ImDhV8eRsIdE-jj2plXE4f?3f`)At zv@%mo9!@0P0Db3Ne^G1a@-|yIQ(#BZGDoDe`KG?;FUFdA9q2BR0pkR}y zi(`mK=i6%+IU5XkST1x6TTWVB>SAue>GI)llX&Kr#jU?Jr?9JfW~&5loF=K!mZnA80SJ7!+Bgi><;^}=YODFJ5a|?MRx+o!)_xIbYQ^lM!E5C10 z2tDnm{r-UW| D1r17B literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/mx.png b/resource/zh/gui/icon/hmi/mx.png new file mode 100644 index 0000000000000000000000000000000000000000..e44baa69b272ec61fe3fb4d57777d9580ad897d0 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0prE~{ zi(`mKXY!x_|LvJ=8H8hVB)4WKmd%lZKoCYBTi!JUGtdmw!80(NFr#_s-;?cF6wOJMoS)jqE! z-JPK{rq*arQxjibp8co&Q$eL?Z)xV{3|wO`CV^Z^?l9MN8=&axx)^93*kx60R)&J+ iBKmN81iKp2I;NJ>S^Z4^Ndus7H=|2eeq05)F08+ZiI zVELMe+nWQd;Ij52SSqoZ;F!#AW+JXl9)w}upP7$;@<@`^b z0?Z{{vPx%yh%hsR7gwRmN94(Q5eVnUpSi-I$VN6hZH-wh#e}ph!syL*c7ezPQk%0j)H?j zHwU|jgMx~>7j*5t7ZONCg%c_$D%C+8)Ip5kPL(JhmrPPb0Kq16wfbIf#BBi@O3dDL-O1A}0x@_AXCrYg_^Gl`V-hU4Yg60mx zFrEQ48dFu32otXBe)v)An2PFkjHJ`NLPXo+fS9=ku&(R-KLY)KHS+znLDS4#2C%6{ zLyyT=Q4lnD8^*RbQOTIGpp<*27pPEh@|g@iGV`)h@?g*Q7D60~vY{Xd z9+yg`RmXAi%zS|vQ$#eXZ3n;-5w1!pU(L)o2Mhz%b|BPp1_n>1Qmn#|J*_4R7KR&Eu~>W>X{tgveH96D;tIfX%$QH5u+SaG zOH#^0Vvub+Z;7x=CuqZ%u?!&JnUtA>Mx#DdsZ<(?ysoXf9jv>M2vY!tx4wN4&{(Oo z_&O=5^(%>EP0i-le7Riyln^8;0BHsNR#i%OByo*|5XS*h{V2?MUaPGg_B?Mrks=)= zgt!CHY(E&l%f9ayI$=L&2GJxUgE`D9rE1+0S(as(X6_;p<^W`R19{2!ec^dtU7u?Y zC-;dk$&7aZSGy!wZ#3v^rQ%lgWi6daf6j;U z`xMmCojk71_OGU%F3K{dnbUSP0q}xS>V`h|4fQaXDrGk882|tP07*qoM6N<$f+Yi7 AC;$Ke literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/paste.png b/resource/zh/gui/icon/hmi/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..5e334740075b26e7fc6904259382323bd4c53fcc GIT binary patch literal 364 zcmV-y0h9iTP)Kmd$O0KoEsLBHwAjCD1{f!>c292k9WV5^x=JuseuL zpoF9Xa$sW-w2Q}Ui(K*~B=$%9&Cc5$DEhu<2|X=BSrWAJOp@fy@6OEHY*5e_aE|m> zKpEZ}NyK1Y&>rYw3rIQv&%gnAO~H!ssgtyEKtIjwva=EB1y}=382XjQ>0vlJo)1ae zSOj6=U1&Dru~_PIy*NsW@spslnQf+>DK8vBB|+EJ0w;#lGz?z6C4#yr>%z`?ky6f% zX1#a>$mPY|ps5cK_u?jyq#AgSzzT0*Q~hoAHnSS2f7+hv9je7PG%FVb_SYtuSqF5f@#$xxCtXxys({jS8e=;uao&wvRQ&&LR9sg80000< KMNUMnLSTYl&75=q literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/pie.png b/resource/zh/gui/icon/hmi/pie.png new file mode 100644 index 0000000000000000000000000000000000000000..491b41d2f675334a6220a62f839c22e86f800476 GIT binary patch literal 464 zcmV;>0WbcEP)4mcebpKoCVAQSQ(|O2DZA=P+m7K}-kfASFNtxP!oX zE~J7$2c(0z0_U)^k}+d1L=gwRWZAnK=K1gJEFLvY!!7i16UtqJ9#a7#G671U0A|38 zs_sOj0X~5puu|2Zp*(|*M5F+Yz|tUH&472{C?e&bK=#8AU_6w-GzQipQe6cyCu{{7)47_!Nyj@q= zeVcF+wRGn4?u6$kv-|D>NT1GjsOKmy+n^g&9bH3CHmsveM3OfxW$LA0*atYEy2LkNW<~?aW%YrnZ(aZu^W-$9XGep{kXauNP#noUjZ}y+J`W z!O2-|E&>^BLO7NRf`i!5HNo8ms8VNQ67*lXzmJoffqntr33~4YPzP-Q00004mD_QHFc3wLGx^6QPy(qSaDO45N`K?>Lp z=pd9p38n(_p=B&%#3K*qac7v3#NEBx(ba0xbse|B-Az>frO^Fw!5H%lWI!z8~z^?s)O-#d2T^yhceLJK!WDRg7@ux&dnZZhN%&%D`9BSLpCn zM=^Jg@*r6Yq#|-q>!!Mfa`Mjzg*J5}a_T2Kb`kDsp)bRnP}BaQu~-B^Imbv2VBB@RO;Px&DM>^@R7gv$mQP3&Q5?s=ziA02!`+QQsKCIeL(nPcAT$w(n5^$jMTG@ILH?4h8o+4;54b!Gh9+U^{O-|v0q z{r-HvLs;cw+jiCZ^&9F7X}_n^>GV`7M^Gt2wrxjZu~<7ZIsh~hQ6!W%$sF9uWHPs1 z*ZpPQx3(VMWLa51l}ddp#{CoIIL?6}Kpznrn0bN-BLF6IIrv1_OoUb->R3r2$8jz(<08Nl0M03;o-I`YDdjGJ2AO#W5jp`fIa(=owj_`c&MN@p znauQsVp*0ewdq|f7FYTBW)s7VF0GSSO9GYBKNBN_bDan_Gd>Z`fU1~-Lt5*hih|nO zoFhbh9KcQ@st0)7^SpiGD*SU8O1)JvuBoYM-PqXJ&xLsv2QBwu^FXGd0DRYV{ng%N zg(0bNUH8WfD3M4sSXQJ5;NwIzmCN~dDwXR@ixZCjMsU`9q>Hwd^8%rTrfZ$P)eOL;6U)c9IjTI$xWtvc=dzXuk|*I%fKmAeswKoEvM9dqqKOP~Xz&FMfpkPgHSumkPDd?P!c z1n593z+}~vfg4cqHU7!X?PI=yeO#|73SOc9ODI1H8ng)(kq}7i8ma28X>PAcGl)oF zfN9CKH(>e@NJK^km^tQ^olD2IHQ=E&NJJta28L$Z19Mf)%s&A(T)*-N#HyN5p-Pa5 zWWd<2Ii7krb-To?>ZBZ3*LCNlH4ylUZoa@`-P}f?vv$7!?!XR!w*!A~VE>@bK%s31 zuPi3K2b9~n08$&uI!Fkl7VGBT=)Eh*fpx!BOTccQi3(u158pHNF>~~Npc79QeGd}w RrNjUL002ovPDHLkV1hnkgxCN8 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/protectConsValue.png b/resource/zh/gui/icon/hmi/protectConsValue.png new file mode 100644 index 0000000000000000000000000000000000000000..e5b7c6659fdaec0a627978f8fea0ccb975cf76f8 GIT binary patch literal 1205 zcmV;m1WNmfP)Px(Z%IT!R7gvumS0F)cNE9JC&@}mVrN1h_E3V-Jt&I0%B(9L&A>sSin&o~=lak} zp~YHOq_93XwX6=?4W{Tr2d&!onR|nZ!&;h$fg3|~urccfI&m1>Xi`KPHMwUw*ThAQ zf9ifux%r*n`P_4U-*e6-?6Eu^PbOgc1i(=ueyFPI&wHIow@>5y4(3Wvjw1A#zPQItYvbP$m{>71D-0h%OYO;uI@PEb-5<Nhn_>r8t`isD@oV`g*{@l-Tw3JeVN z|GJ-axZQ5+kt5Dxvza{r-D1Y5rujbH3B!ps&TvKSg<+|@MSXGz$B zK_U=wCXSiWN5rDYV?<~LsA(O}gP~BUM#OR;P(?*mj>W>iCF-Y1Rn;~{@y-CqB0^Ry zMmZ)EOQd#Y{fee(j}8Qqf^|3?pU3Ozhh$x(fs_b@prFTQy>olex(*W<*AcVt7F?_~jr!g6#yR_gcrf7}P?TKq0< zOC-I$z1z&o%g>>%t`1M0jN;U(_h7TxqK0A>Mfoz(r}{L_cR3x%?>gH`M?$MTk&pHk;4h zzkkmzbuuwAfv&D@gu~%Ytm5KgG&VNk@L_5ExI{#ccN%ubh6Jjg4V`{x2Ll^ado7{CxTJFjgxO-H{)=es0y&)VvvuM$1Lc04%yrf0)hq zPSVNDZvpr^{&jRAP3qKR>5tL3VEF*aj zU=5%Iu$1cz;N9(J*2L>BazwJ#f@6Z~6~G}PKr}AQ>|&1vu5mQ8qK`pJe1k@cc2WUF z;z{-c$vjjxHb-lnypggPFY+xlH>oIvQohGvPMFisUWWUORpcjq^MU~I>7W0{W1kb` zY!cCAj18Sv)Q04yGpJJ0Gd_p*v5LA1+bdL#T3=`1M{~b%Q<0Y^fNeKc$#<8uyRfTh zSta{9uDVf*bT0}K?PM;43fsw7#N8p4qb58R$?y{AsTSnQNUl_YgG9dB#|>qfE@v-D zUYS!w-fA8a{!zF|WM(Hd&p#u|N&c1~A0n#NyW+B)f;wC?+nZsq1(DqLg`x+QnN^dC kMDmkRCiD9L+?oaeU&d8@eVmSc6#xJL07*qoM6N<$f@0IYhyVZp literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/qybyq.png b/resource/zh/gui/icon/hmi/qybyq.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa8ec828c9abc77104065dc1cc9eed52449b6de GIT binary patch literal 548 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 Zz5#MDto_}YX002ovPDHLkV1gE+xGVqw literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/rectangular.png b/resource/zh/gui/icon/hmi/rectangular.png new file mode 100644 index 0000000000000000000000000000000000000000..42e9c5aae32dd03f06afa7944c2d548787964dc9 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkRQf zi(`mKXY!x_|LvJ=8H8hVB)4`59cc2saP{icMIxK3zvsD?Y;620$dgbkY1g2y(iWd2 zu{Gn$qQLI939c2Vt-QPoQyk3Y4g1Xe+;p258Dwq=Fz&a?o(MFX!PC{xWt~$(699C_ BF)siB literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/redo.png b/resource/zh/gui/icon/hmi/redo.png new file mode 100644 index 0000000000000000000000000000000000000000..ce5c628447fa336ec541a806b09e7d7027349bef GIT binary patch literal 538 zcmV+#0_FXQP)JJf_+1xEn9&AchySFuP=b~re zR?wFP&RQY${I)Ir~z=~sTwvt*&4N&=B&AW$H zem91$b!!L7G_xh}62v!7R5IpH(k#hi=&EQ*hTDQ{6$O$SNh{zYmq(&`sRt&oD+#?& zdU_(!tC?-x{fMR@dm1sIiRU9x$Fa-*m|2q(dM>Vj2mf7_ddyoS_ST^4n(WZE6FvjA z$G!!o8W`TodeWm(Str8AV?PS7%ru01x_U(3q?-{vyQxBPBeuRAH2h%JNm_HvRgR9( z>49WPHi%tE4`b82qCdx4U{JEzqnN_gG17;p9=;m*or$I%zD>!Ke2BR0px^;d z7sn8f&bQMpavm}eam_zkAN#oOCEF{uyae~v(mNXaF6_5%7j|J1b&{%l$|SJuOQ7fU#EA>M{*QaGwnYKljtG-P9|5C6aSajkN*QKAkwyDI{zyI+r zDDX~q8N)lji`6{ABH=}T>wX_HR&7(+{q+0U;0s$G&x(*Qv(Ed;@PTQ`E$f~@^|rl0 Pzc6^Z`njxgN@xNArlMzZ literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/run.png b/resource/zh/gui/icon/hmi/run.png new file mode 100644 index 0000000000000000000000000000000000000000..d58786e5c29835f75bece1aae8a203641eeb532a GIT binary patch literal 405 zcmV;G0c!qKmeEbbFbsx&5bwPa?$uA%5nuvfgE9d(LPt0z=xqR< z07fWJe!UUs1VxelNWpc}194XgVJT9Z#QtK(c6%`l1I{6rXQBK_(AC@q5m^DKI5uYa z9l$;eRsG1>$tHt{+|f|MsUASb=hDnqs`~P6kcb2i8osswYE|vbo&c)>+;ZwcRrg1O z=*jb(^2DL;Jgk)SJ(3>7${hbp7c!nQdQs5b?OwfF$;=ylV;rxz!S$hQ(IAIw7y)yazm_xCQ~yW z1Z=LOPQGkYO$?p>Gm*ef|Ka;h`Tq<0nE?0%6d$r2BR0px}B> z7sn8f&bQNi`I;33+~j?~R|)TJynANl%^T7$d~XR~;5D0S@K0!#z!j`5hjU;-a$8E;{j4m`!}T)F6~fzFYtwlbGou|lJ3 zvt7gYm~OeYHQHHV_HOr(i5e`z&wkytI>mldS8H$VQ@I$R(-}Nn{an^LB{Ts5ZD3>t literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/saveAs.png b/resource/zh/gui/icon/hmi/saveAs.png new file mode 100644 index 0000000000000000000000000000000000000000..01142b6bbff08bd133477f9b84bea2c4d5c1ae70 GIT binary patch literal 356 zcmV-q0h|7bP)4mN8DlKoCWr5gm;=K~hj6g&UA&dTx*$fFd`*oPaC% z3e>*|H-MfZ+#pEwricxr%^I`BHd0aa59QzOwp-N%xn!@_ptB1 zq@q>ic&g(J$Xy;X1t!27uyOewQIVuMe4nt%L(HrI?toHK;qpC>uNnTQ>mpphSFK`9 z>v(mj=&X)iEuSAGl62m+!Efn0Q7Y>o_AfHCC6I>`p`p*NTLKSeRt_y%0q?*fCQG`y zAKJX(mEC+?nAwM<+dqj&o9vf9NfJrQ+Sbf0XV+~r;03tx>wVU!bdtHG?NFi(@EDT- zWd7&Gy|8T$U5u5a=dO?1YLrs+&N&CciH79(9==aSPfVc{cY{s<00002BR0px{+c z7sn8f&a>Cm)-=WA=yI-b}ruHkj+Q&3plOE0AbklH^+LffelNZj=IDAaqxheF1 z*ao#j3*%n9t#9wV#H_f;-R1g<@;lFhes!NrFxz{!E@D$u(;2bQ&ACl$%=WQutJ7Ye m@Lk4FDCftH)Zzw~27R+bXJ7g~wBrPNkipZ{&t;ucLK6T0(Q`Zi literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/sc_down.png b/resource/zh/gui/icon/hmi/sc_down.png new file mode 100644 index 0000000000000000000000000000000000000000..ecee2723edb707501cd1cd3835acbaf40ef0ed1d GIT binary patch literal 15147 zcmeI3U5Fc16vt<&E$#Nhg4F7Q?3hxm)X97#lTF4X?RL|;Db2d4>EJ~r&2dh*NAF7}f1*u@AQ18s-WA-MwEVSaw z4M`^Fp8G%N-rv3FW?ts`$%%*84h{`c6ty-xo|%HzA@{R#1^hm>d(U}zS!Iszw<&7% z9qwm%g;D7xjm9%RKv1r6hOF9HDPaxN^WbIvT_hObODq!Jr(-nU9+(cfPJE$bo(6;novLV3$Rp7{Uqgv5zsgVkKaV7ZMZDvEX z*Tp%Q3XQr6>6zRlJ!V*d7Q-<{;UfY)k_hu+LWoBnqy>(Tv0Rkp6AT}b;5*9E%~vQr z2!AClwJ1$xb~V#MD-|j`jw!Khy=dw# znx%l9hu~B;^_sn-6+4TwD3a^xJ9f~}`p8_5FY~s7zd}hkS82=wvSV0z!>FYFT{hW5 zNRN%VyGjg;^p<^^t{Qdwfh3EHIxF6Z2Qsn)(gG*&49_t+%%~U^92Q7Nl5DT$fXdrzQdYMeSywLu_7?X&Ms7x_l z1aV%F;k=YqiXLIQQjKdi+^@5NeGGTAceYJ~rxv%i92LzwqfFVdfm?y8P^$#nhg$p0 zay4EhOS0mgZfV6W5TGX6MXjA-wUteo*1eodL*T~`$ouE0mw}EeFF%ymtA7yNC^~i7 z0;46kLzY(ie%!@EG(nPe{|_qKf3Os`eCXyDVrg}CGYf&7QUB*cbat{*mh}=)(`;)K zw;GnVcK(VkuC7+ac2{H4{fm-dCBt1Mdlked*{-%uX21W8TalHT*MCId;EUzm@1`{9 zMy31l(x4lac9eT{%}EQ*Y)ErJ<^GTQNBlIrWJ@Mr( z*!QDsW;EZpbmiiiRbOyxmS4E>P%;N0>-KKgbavU{v(Mgl^~n0KGgCuP-+LmwdGEV-&fm6u;FE#zH`t5Q)TtA-forc1 zzw_z`N7S67@~*s$>3lc(#KKD~R*x#d@0 zy!^Y7KeOYj>Ra>A9bK<}|I1NEc=emNPhLJZ@p7sB_^O^Zg_hk={ZQHV9VC?_^V8!T2ejI(T4c^O^qR-bK-}*87y1hEG%LCw! zRl)lf@WP9008oClCa3(V!d6vxDsjzliZEWUR8emLG8^kvP2UH7rU<7kI~%+9-nkfK z8QIuQslXSiL$G9x%(-x4Zrh|jw@+7$*v8yIrmms@73gbBy;8P4wVsVN;;QI((9Fe{ zMi+lyHnu59$V?T+m?6i7j1-qyT}X&bN{I`SBBqlY7?Brbj!$xe!U_o$y^=iBykfZl z^ef{UraGSA+)Rh8Y^>z_Rh8pvwOYKEh&%2ya#s|N7dcU6Q4iLewSBG5+TLIoq!lL* zJ>9jczUA0V5LYWYGk!J}3lg=j=DaG^b|TwrvO^TPx>n_cIM4NRGW51jb;d0>hGys- zEW--4eGmBwJ^iXB$9KGv(^ zXU5gx@P0Iv!CtfXEwi&Y3nB$d-?78G)yFMRLbt|N2v;bB=Bf_4Q1cyk(s9bUaF>m> z5HdqU!LE|x67$eb%Ql>vw?4z+PMsC+#DjUwhdGfK1yic7Yz&M5*e;nbHuB$*VIwl^EF$Cqxl?ah+CGS!Zehnw4$(345k8fh^t znud@xb+a{>9$~stjaVMqud|VTjCOP5Y@2{jE^KWHWvg*URW;XxK?P=GtrBb>YV9*C z@M%=Cs_DV$meYd*fkuW~(ApVR+q3Cr^;phDAqe9~-23OKm7q;3uP{`jSN|ZMWBN7C zg`1|)4q067hjAA=;t4Wb@PAOY{)46PwEZ`@5R0m-8(9eKjQT$pqO+6rl4egsBgeHi zajRi*YZtEQ!s=>OY42L)49%EJ=mZ$O-I*YyF zOcCX#4=(g{+||!9A~YStrHb5~HL5UdMYn$Fu9Iuuc6JqL`y{)WKRPqInNhJ=GzkWT zY*JigKA1{zVL-?x#YN_WsT3Cmgltk=WImWmabZBnCdEbOgQ*l3283)>cm{w!{z2bA05HP?@Z(+p)Z+l$<2<+LgUzV# ztE2f%ll99#eO4Gaz^uIOtJF)U2kR%!NLzm4?>jYg>(3|T!TB#Po?LeD{BGm-+$XD_ zoj-Zu_$6z3>Cue`=1c2d`Ex1j3>z^xcT|9gF%@eEmC3juSo>OGlpid(DyI vdp~@8_l50m>^S=6TKmCbF!Koo>O(m>onkhmg230&S0$sJ%ifJ$%&m<}v) zd>1;1k#dbhIv^F0gNMXfyo3k|MGO2GGGRz?!Ig64}lGk0|ih5xw{v!UeObo*$7wy17H}0GvEW zcQ1pKRL?@Oxz?p>PjF(LnRS6midXKQwTO5I-rT+0*e`$y@D2={R-c?mm%EOU2*7ZC|~jL}ww}o~UiBep4F~^%{!umi$c5a5#?0 z`EsNeC35#YFs8oHi7vQ_sBOV8jMb~1NMt);)F7LwQPei&97#su#I+KMtZJxVm|051 zHpLcNrm?$=4uiXIfGM!0ey{dYTm-3=a;BSWdWe__ssQvDBG*rVi&?jTMsFMR!N%#J)-O zn)#g5GDLVuYq3jmZ(IXs7wgIjAHQF6lYjB8yPVy$#l!S<(b`R~y2?{H>wevHjGjCB z|Auucub%aNIq-}x|KkBO>!y9B|Ce9O?VI`Q;+sJBndz~cUx%&ce!|Ue%I|i=_@52X OKMbC(elF{r5}E*8wrpYm literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/sjbyq.png b/resource/zh/gui/icon/hmi/sjbyq.png new file mode 100644 index 0000000000000000000000000000000000000000..c699b0235ab2d205f83594377666e4f8ef779199 GIT binary patch literal 522 zcmV+l0`>igP)4md$O#KoEr=QI3`Z9pvaaL~#dD0#fdn0|ih5B~U;P zz&%n*fDYg^*OUN~?~aDNMZ;nnq$G}%l~%i+ot>Zk#$I>IvP2v0t`#qBI=a6_Nkkq2 z%m54lJWzZ9@NRNd{kUf1DkBle0IZ#Z4adH7I8fDXlbyz+V|p zjtNI&_6(rw0=i&!#;AgcwVh+~Mh6M!J+AGjTgxmihM0*(*B6m4nG{a9Fqy3}+XMFm zXESd&E`}k;DaUt$eie~|%t9Nn5E7>w_U6u3WkwdshS7%%&A|&dcgSqddCs*WWWc=} z$GFnbueI3GiHXZ7fM2qNyX+-pp+Jrqd1g%+g>#-q%q9fAa=I(ZCXwzuvQ_D5#z=Az zS$JlQG;z9#tHvV}?#XH6tm^*eg~eCZm_imY31@DyC-!Av8ZpZ%zvPxtT~E_=k)~;B z<9BqdH{M75jBMQ}X&T-!GMhUlSKmdy>qFbqaN5CgD5x%vhh!33}YWdoR?Y(#Iq(hb<4 zsFIQT6DM|yDh~J()ouFx+9=MVu4~K@%ULLMf>!+m5v>7iC%(62=2sL1AO~=q2)Y3{ zwG*AiKtzqnLoP2PA!iwP%v=UR0(%0;034Y4?jaD-9zX%0V&+ZzUT87oz0niu+yO`| zs>Vtx^w?x#Gx!qP@*ZOqof8Cktx`5B$Wo#ASrufpve-mH)=I7BQBcatYLf&RDmMSe zBuKOJ*qA`Qit|KH4ReQW?}3sE?rB3r=TAP a0eA!F<#nVZ1b;aI0000KmcdQKKoCWrQSM0xq=TdcU;aHE03EmkQUa*}N(kqF zF&#h$l#mY0!DA7v$OepMU;L$!<-hj){j;Od7ERMI25v@CnT7s?MM_8-q&sXE=kL=w z>X7c}x42Z1=^X(`S^-tWvU4e^46ck%k3ePnbSc+0M@QfhSSEZKQODXHu*)U7CR76t zKkzTW+V&1O1eX=cmd^GbK+cJ)Ygz}lz#&SQ zMPEl1Z4-O|CrNur_qiXkXOzJ2BR0px{zZ z7sn8f&bQMJ@*Xnaag7gTPiX18z#G6{&+nGNY~|#BLeB00N6!I{y9zQ4oz5z2ri68! zm|n9n$JX*^*rg*9H=TC-YKU%e$<155gzrVe%`-zAnW4hEYiFn{v9!puIe>|D^!b;ZppuAcVw*8d*7=we?gR_5`2BR0px{(b z7sn8f&bQb0@-{p0v^^AeIq!A-j$9(MTVitxzj@CAEuR8SAr%qEo%8)ezHi<3=S1&Q zwUz_2nfZZQA(Q+}PgMVBP&+X5=BMcCIbU4oIq;uxw>^4+@21hIh0G}io2QF-Ic{1Q zqQZU3aniyV6;3V3MGJ#exPlbw6-A3UH75pp^v-drS+{{_XOql^RRRsm?9@eXePa7Q W)nDHy&*Bi!fefCmelF{r5}E)fCs0uU literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/tablewidget.png b/resource/zh/gui/icon/hmi/tablewidget.png new file mode 100644 index 0000000000000000000000000000000000000000..2febe7705ac0f81c3766d855e6a51ca787339cee GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkSz{ zi(`mKXY!x_|LvJ=8H8hVB)4`59cc2saP{icMIxK3zvsD?Y;620$dgbkd1m{MCmR|c zPM2t#?^+?uyzhjnDK`(Fe6QO3iK!Pqc;D+;+&ek2JAr{gY^h@Y^54s%fEF-#y85}S Ib4q9e08E-VegFUf literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/terminal.png b/resource/zh/gui/icon/hmi/terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..0edc5028aa8e0e5710c444b45aea4eae74405d58 GIT binary patch literal 420 zcmV;V0bBlwP)4meFy8FbqIndi@V0ut7RPfAmi$2%RL!Bqb9x|N3Es zut7#B6C@wVjd5(Cy@uXJcN{jB^khi}7U%PsIpk>;%0q&l#}q^)14_GA!EyssK&7f* zLw*)R%^)I$Ia-dy(*mWc9)1iGkrMdu9_@hx;3Cg}0$6)G@2Xl&2H8$NZQ5A0$3#H6 z1>n;97Tehk$ZB$;OIHKDj^*EMYJ;^v9@@mZuH;&iVhjRcI;BmQ-gp!QuvgX77{r4e z>FVhF_?B3EyIkMoSwyzL#-=+}-3BTLy5 z=%4Risi?w4fL0_ThX O00002BR0pkSP* zi(`mKXY!x_|LvJ=8H8hVB&UgOT)@3!*RCMdOJ(oxo$WXyZy|q>VOMto!?R?kPcIT4 z)U=#ldW0$FS9|;?xvd#j76o>pfwvQ4sJ>Zv2sdYjL?PicBMUE)QWAcHWg?BsV* STW$hvV(@hJb6Mw<&;$Sgpg-^c literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/textInput.png b/resource/zh/gui/icon/hmi/textInput.png new file mode 100644 index 0000000000000000000000000000000000000000..365487f426e1999330305412ea1b0e7bec61b0b8 GIT binary patch literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px|*& z7sn8f&bL!G@*Xk}aE%vW4hS-GGHZDDEMdwFUJ1qOKTR7Lm6xP+UtoD@An2zw(Ic=f z`R>nm_BS`_XU}TW+%mIelgEW?>}h38d3NfW-ZQ_v{LR4ln{V<2CdT%VgErypHjkM+ z6;m(8-TfKvd+lrgnKevWo(InqB|P8uxvX|ajPA;BwHwoG7U{({CNFx%R5O#Gb*jVD zM~7zafBOA+qsmk}v(1anwuh|0{z>gHm(*Ij^VZjDd0r$Nt+`y?@oetB{}(>}yO^>- Z{QEE0E6W-bZvwr<;OXk;vd$@?2>@>ubaVg! literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/textbox.png b/resource/zh/gui/icon/hmi/textbox.png new file mode 100644 index 0000000000000000000000000000000000000000..91e2fe6c9e0c4e863815c90c0f63768e9876b962 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px`o3 z7sn8f&bQMx@-`a?xXK4sJ=<|kT4i=?&LNGHY$f|sTYVmwC`9rpHB6j1A^v&%kCS${ zpP#Ds=hKVSv2?v&kdU_f-Qp!#K_(vRyWmgRG*RJi=8O_ o%abdwb4B0mYjRWGUo&gamr7G}y8Syv1n6Q0Pgg&ebxsLQ0PhG}x&QzG literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/tiaozha.png b/resource/zh/gui/icon/hmi/tiaozha.png new file mode 100644 index 0000000000000000000000000000000000000000..597c12010a7cdf093ccb19f9f96662cdab065fee GIT binary patch literal 433 zcmV;i0Z#sjP)KRxwV)KoFcjN~GimP&Dw z>ZCf7a{!lJK{^4EoH?6bBdK)Wmlc4Cn@(Jz9{^^O-Unj@z{+;!s@&L8K#RKDzW{IzVBhD4mOE0zFc3gr82aQ0zCkzw6x*Ac!sZ6t2)m^r{WduQ zzCn&a`pksFyF^hWn=r)8WM@3GtzEsVW$&{vy%u zyJ1uEtA>r5&l8^Anaw!_`s3=vvHv|(1K8z169Me-#yG4D literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/top.png b/resource/zh/gui/icon/hmi/top.png new file mode 100644 index 0000000000000000000000000000000000000000..db2d270f911d58b55218db39a186b409930a85d4 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0px`A> z7sn8f&bL<_`I-y_S|9E|W*e>;=MZsbo^pkW<#C-ioIK$lSxO&HFkx9bm96*V+7}l- zEKQ9PcS`7fV;0y@Ya=jm*^}d;SI;{gSgOLZBVFJCuS6J=X~5A|%Zz}lX}wBHau&z7 zo}Km3I5vG{?#t|;ozFk_whFoQ!;JT`o-W|%JnuHO zS=UK;Nq^i|%ZO85y95KTUXIxET=2D*L;8Z=iJaGN&6$4kl@)^^XWNdYI}7XHbNzC@ j&!4*e`|h86*Y0NKK4feA-rRoz(02@;u6{1-oD!M2BR0px`}E z7sn8f&bQMJ@*XnaakcNT)-E_>zg7BxM$Z9_H5Ys@@m777GH?t~311a7>zK&bfFD6i z%sT&0Iq~JLYsZPL@t2<`-MG{F?!7|rhL}Y=S9OP8?L3j2<=ir{hT%kfdf^(J6 zV>TSiJuhj-r*w0o%+!schVEyk?%u_9AZfz06>Y+5-@}gPze?dXYTjZhvb{ZS|HZ`Y wNs-Mu7fyT+x)40~#~uNbOaIGX8#7igmZf*HmKtqY3iK(1r>mdKI;Vst05jx$i~s-t literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/travelBriefing.png b/resource/zh/gui/icon/hmi/travelBriefing.png new file mode 100644 index 0000000000000000000000000000000000000000..f7cd96664db890ba3ec930a93b4a4334d22755c5 GIT binary patch literal 665 zcmV;K0%rY*P)Px%Q%OWYR7gwJmcNVCP!Pwzlih`F?g(e8#et2&34)EHU=9zwV!eHd78Y7rc!h<9 zf`xy8!W9-4HdY>7f?63tJH&+WNX0_WF&lAZeAa+)k-4oGwkz|XR-_O(?S1=IEk{2Sf2f%z&7ZDu+U?)key4~)} zY05M%RLau;R-)*~u^Hiyt7k5j^osA+g`~YjN{s%*X#5%Afsk-c7~b1Oyn~iy0k}1xlf4bO0I>3O%dt; z4xQWs=q7+BAbTRR%FL-8PxVMCbq&Y^(NHA5YgtxvALN*#5W!O-s^`Jx%F)J#ce+-? z8xh6f;L=KNmIBBJOB`lDtJbY+#V6N3aq`OwZ30;4U|e3)>M!wUlCH1tw)AL z^w9VHuYUzp=FxEln)urjE8$R;&s6oVN~2BR0px_Ko z7sn8f&g4J;|JyU$G6=`!NKO;mC=m4E)hn+Mm3Q~{&K8{i=fOuoo(DyS8|~z3?3AuO z-NA6T=7>kuNrumo3q#x{xvpEcjy2#JtIET_0k;G_&oE^DWQj==>{?uBQ}lad$HOfd z1xu}*K05kz$?OPmKT&FMUvM=a8=GC_=8fSI7%SZ{yu{Y4(#%eK7`qq|{3` ab1>BV*_5AR^9cvKk-^i|&t;ucLK6TCsa8?| literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/trend.png b/resource/zh/gui/icon/hmi/trend.png new file mode 100644 index 0000000000000000000000000000000000000000..15b7fb5ffb5b590474396a5a455b9f638e07c51f GIT binary patch literal 393 zcmV;40e1e0P)Kma$4hK@dex#6qwzovk*)?eYi4zYrTOEfottLtDYZ z6oOx&@dq@5a2pF-yI5F97Dfo~k?iJ0lg3+KX7{|A+1Y)q(P+dXw6YM&B0;NFL(&a! zIOo1S+ehO@tw)lQ@d*qXLOQ^P?bf(i%P2Ik-EBgV)CYE}{_=WMDoH0mJHmHtAN)E< zQY!03#k;qCJ!ws&(%DXZ*ayDG?6+xaiZhb51snr+VO;_1zz49ITVIrsq;zBroCD9m zQ#!)H3vd=;!?{2KNu^qgjUUte0k1&U_ARh&d+OYkl&&9NUz_$H*?!M$Qc}99kWytc zs$M0328tfFGhxHIdK82Cko%a3-HZ8}9h4SIIxWm-A|wk6*kvxJL`%QDJMpeGQKuBt ni>JKyc+H?*HT3^?tC@gr-UVZv_;?)#00000NkvXXu0mjfhUll+ literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/trtczhkg.png b/resource/zh/gui/icon/hmi/trtczhkg.png new file mode 100644 index 0000000000000000000000000000000000000000..0a789eaf7f3b30ecbda243b28d4a1469091e4883 GIT binary patch literal 341 zcmV-b0jmCqP)4mfdl}Fc5@yGrWfqT!K4*bdU~02`<4UP(n(e1WJGo zTmq?JGnX70jWD(>kRGx#H?~ga`>cOa5^CtB3Z*7!HRdGwP=88d63F!h;Ixp@0(iYg zzcF(IIF8j#nSJw{@-}X&ML#0hdV)^UXW;LHupz9=Y7u~gm(7|eMp0~jiva9A!Cul3 z_}_x}%UqIKkfe(ba_m1Q{N$gK*AdCxlEm2{>pGH64Unym>6!H;kZD7*s{u0gB-bTD zXMb83?n{Egwemr7TM87b7-)#fv%5j4lr88gn{8{ilcYuClnnB%=zU4@P@|UE nzOfT_3Y4v6Pzn9B>lT1-ni0P!pt#^;00000NkvXXu0mjfUZal4 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/txzc.png b/resource/zh/gui/icon/hmi/txzc.png new file mode 100644 index 0000000000000000000000000000000000000000..b03d2b603ec496f34a976284ee187bc4d9356fca GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0pkThI zi(`mK=i6%sc^v`-TrYZ?6qj2q5Sbg$G^ylUZq5yXPwGeNUwitceG&^^I;F!yc9F=7 z{S$Vr*lkt+xFl=!xA3&t>H-GLvH^2>_q{H8wS@1cVgifPg5x(GqyImbxv;S`_Jo^d j@PgZ#_Rft>iV3V@TLi-D&M#2|TFv0;>gTe~DWM4f?IT1P literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/tyztxs.png b/resource/zh/gui/icon/hmi/tyztxs.png new file mode 100644 index 0000000000000000000000000000000000000000..8e860f58384619d3c1f27475464e79f948b40ba8 GIT binary patch literal 407 zcmV;I0cie-P)KR>5t~2GJ-Zpx=BXJ22CcYMyNN4 zU;K82cmfA3PJlp5a)P#LA0c2^ppQI~I@x|0#}T)%$D6R+iN0ftOJbdK8vuGO&7%&$ zUPShDIjX92&OHMN0AA=C035k)0W@6q0KABNUQI-jBa>;Ot%wAJ@#<$GT0~nStL;%B z$pOI1lBm(QBBo)?Piz&3ZiJD*_blXwN{gKl}P8!r4>P!iMPI@ za7rC%f`;cLnm36%`o4_Vrcltlym^LBx!?ppEAMPa1ojNvB?2jt?1=44@4cEBJmtF9 zYRwoUiDxHkVkekrfB#Z7gunZl_({9}ocwbl0B6D!n3$O{z~}$~002ovPDHLkV1oHR BuweiI literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/undo.png b/resource/zh/gui/icon/hmi/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..8ef6ac5e4bdc4e025ee4e6f99c5d54fa730d6529 GIT binary patch literal 415 zcmV;Q0bu@#P)4mLXQeFc5~nY2|A2T5RnzI1`1Uz zb^GT5BvjFz^_L{+N@3=v6zJL{gi zJNqLBOPUyD2^0qJ3{_2mTkB@-`>uO5bY~?^8PD1R33{DpXPX$rBC~eg9_%#L7VMt> z_T!xwHC2P9Js|)q-{3Aj6N$CIF7T)z5lMgx;1j2Wqk+sLe=O_4RcKJ&TL2Ooh27YY z*NCHHuw-pV?}|rN^Px(T1iAfR7gv`mQiS1RT#(r-{p4gpyEyNVWL98JxrL`J;*9nh*;3D(42E)aAIYB z5H|2(1uIq*?887tCr+H8;KLp&bhO@cl6IsrWsyxbnXritDywwj1fiN-VbGQ(=d-6t zSWMF7lJSu~@9z^P-1|Fu-i)wbmcq%bA*jgb+P|bB+kR znfYgcKewP*EY{_D(btK12%tU8>;iNRFq2^zewNSYSGPJ$Q;?MYB>;PkDZiM>WWKV& z7Ea{k0PF#98Q?qsml=IT)DK{R*~GQhH=DsWfs)D8^Nz#w#*`0cGMO_r$Yv6WM6UvP zm($6vD0j+~4?}FqV zBAir8y}6z8q?GRiG@?|nvn5Cf|2=@;EtT%{%+1aHVFRS}R{*x4x3>qSCYa5L)~cfo zka!fJ1tLr-rCzNlPF^LVRi%Qbwg>qan9)^VjoSJxA&PSm@1dipUno}RZI4YEeF6tDV1pju_d-;G=}Y6&Qy#R;{a|drGB*WBxPy>;3LIi zA(GGMOVtM5(n=bkQp!UBjaloly=F}{5{VX>VaH34G3EYjHv0=n=}+5{pj7Z!-8fh> zhQ~4)b-ayi-eRV{Ff6=m$A-PjbUJe)&*sYB~0 zIbABz-r3nNuWtt$930&3IBt%JyOdIo*l_{SurcLh%>1|OcKi6LQuLxMo)0 z2u>!G`-z-+fEKO4Sy9+|z05RD#H-BI6^4b!Ba!HhicO)< z7<0t_cWeSl=`R83X$7f%pHV7E4-WbV*4@3Eh)-F|BH{r6lg7}Z&1R#I8aGTN(hu#} yQFhw_t*os4X+=<5E2Vq_K!Ta4wAR1Y@9{5GsXg9<(Qf?!00004mfdZHFbsgdtNPwVV<;Am+2lA+_s7qyvt?tC>E4URA4<_0by5I00Wk zduK}`IU@iO`37nmp6wMTk=x#<6+KE;MgSrb08};PtjnpOtQ#5M-}j6!xvTUQrG5Y^tqz{T_7uT zJu}r?#V-!Tat2Gb@<1Ze@OyLLbF{fA(PprA?trHiml3F9?VkFDT?>NEh1e$92ey>| b_q%lgyw0tBX<9=@00000NkvXXu0mjf$uOlS literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/viewOff.png b/resource/zh/gui/icon/hmi/viewOff.png new file mode 100644 index 0000000000000000000000000000000000000000..d1125b53867669cc4b302ed4efe9a32ee1cb1ca1 GIT binary patch literal 502 zcmVM(w9D-5{LEu_ouVi(#sokDESU#6a1fD`rUIyw$p^I>%&n3+Oq6@E@)=eb0^! zwo70SeAZ;&LUydbjg5qJqwPIRt@+q@vC2-`wAe_fw@C_Mj2T5JB5~LHn5Ov^xO7~! sGaz??!yghJT)pu_=8ZH5LJ>KA1Nw1||5TYg)&Kwi07*qoM6N<$f|x|!+yDRo literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/viewOn.png b/resource/zh/gui/icon/hmi/viewOn.png new file mode 100644 index 0000000000000000000000000000000000000000..b4649dcad1e5badc0c718314848f2a178f81802b GIT binary patch literal 471 zcmV;|0Vw{7P)4mdj1UKoEw%AntJoqywA^a1L`OR1niaIv{jF2RIb~ z=Q$))K&3`3nJs~f@cnUe1dNEn zWo89X>zqgWuRsGd?jGKo0!66U`>K!3Y%D`P5(fZ9ZcVHhX$rUBpT774vym-o7>Vh*T{ap=V|p_lSFIZbjv4g17SlxQ^b zhQO`PFe-+L?ldWb$1U#&tl_U4R(-Mwzx*d7NS+qqiiv04g8itkT7eAQ>2#$#_S5@g zA02Ia1C-h)0Mobta-?vzUYA{f`g|^}WS3{CAX;`IeOYyXN&oM6>m7agtRi805aIv; N002ovPDHLkV1j+V%*Ox# literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/wgbc.png b/resource/zh/gui/icon/hmi/wgbc.png new file mode 100644 index 0000000000000000000000000000000000000000..27c80cd4d23f7fa9fc7d5e0e3e1273a33d7114b8 GIT binary patch literal 531 zcmV+u0_^>XP)@e-HDaXexR`U6a~?Cev4&`KC|!&BRCrwu*bwWR;(H!fFo!2qgH@sh z>@p0^gN9pIaW05{P1>vy-NP*2bRa0PH)L^gWha7ld%t}ji@YyN#ksdPT58JBl26U|3USKy@4G#jWc+NPx!0|;Ux4Fc{+sm zib%W;+pRe+LwKR>;0WdvH+m8B`RHa{Q|*V`)`4hC$YPx$%t=H+R7gwhmcL6IVHn51PspHCxZ)<2hAOx#!E9Nan&ExVIw?pI{{+v;t%HR8 z2?|*<33qR@NVg0HOK9n8Aw>z@S}O!0Cwh5Gl!G(xt9RF?1)(<`&yVlt``*332$9FO z?N@^V*NA8;8fQjFDR(X!3*V(&*#NjUnq$Vtt1HN(Blp`dN6`WyKpi;F&iFvFN-+hANA%A?#bOaN zGtV{N>FF8T?RKn>#3QQL>zJIJ&;}&$V4-3w0{YtZ?uU)slJn;_$h$68U#VL*Xy0?%H8nEhty1o8G*>E>CM@gOX8`kN81H+Yw`IDV90GW4X!0*Eep;Px%{YgYYR7gw3mS0FyQ5?s=Klg`$KFo(*g!$m`!IwP*rYMMz^b(2PyKZ3C+MvXe zkv$}iOv*nG_Et?4dnwXJFx{O!1@1vjsh2_O9;yXfU?TW1Q;}eUllSI^>E>N4^uFD5 ze&_f3eShbB?mdKKdgz!qI9U+S+ok~+0|9@Pnqon)y=ROWHa6l_Gcz;EZ1EWt34$#y zgCxnXs#p+gOir%VYK%Ug??+aUAP6Ijq2@q+8|ldINgBJ_z94AyBTC zkUyjVqTz73q`!Xvi9`Y>lL^JeMnt1A<-NMP3U0SsPU$=Z;(6PHgRnrr-+OS(=ktw; zqIk8d%Z*4Rf~KY>l$V!7uh+qBE>!?KJ3Hv>>xI>7{g8L-CMW%@vGF{bn=hlFpa5R) zD>xiZMM-DpU3~cxfh0)~#fxZZY5AGAqEIOGuA-u%&ThY^7-4MeB?bo{AruNJ@1iJT ze0*F{>U27i|FTDp-S63pwzivCUtdQ@$8E?C3IUVvO$O zY6Lls<4i`6=gGslxj76EkEET(aU5o6XR*4vs+hy$c`7?^fOuX=$UnKifuv&h`VX(y zi;0QJKT?>@X7u#j2gh+S09FzN;R<7PIvNP^rme5~I;5mX?;Vxw!?4rA%p~ zMx$8)aF&QZtKJE6DS$C{0e}lot_1S=`U>Fn?tkhr5h?eG{{qUTm|rKmCXslKoEsr#G_zJ(Bqt92U?OP#12w|CD?)$Xio2_ z9jFyV2A>BvLdg0DvIEOZh9O_(%`C~9rolIC@D)k|CD2bm!!TiHIe?|kSm_IZiewoJ zYF$_}+XE={xRsyF*Cb~#pa<#9tQ4dMFeSP0^m*qe_0GncN{BuY;Oi*0tWgY3H}E zH*N#;7p-(j3qd?y#X|6`qfc4-O(f92f&g3r1jbuSJ3UoT00000NkvXXu0mjflTdk* literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/xdc.png b/resource/zh/gui/icon/hmi/xdc.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba144bb13cbfa7eb32b4995ea71cb6d71d3fda0 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%oCO|{#S9GGLLkg|>2BR0kesKB zV~9uR+i3?mk0^+^s3*Q(nVeU)K{MCen{%hH?8*a2kFqNN|KQoA^5D*&6ZL1xMcO5l zqcU=wUM_HNhq(9sN@u6{1-oD!MKmO)CxP!NW{id(Sfp#q2$7;xDsF+cu zip(rp@d&&DAHaix7uifzd8`g_1MC3@z_q&%R#nu|bqpNqkYlRq68^OSYp*BYaYmyQ zbgAo|+LR8OWML`cwqnv6r66>u(XM-UpYfA@@~-r=&hoie%sfx92oz^=rj@qndspX} zwZuPnyo?Qt{r*5V(Jx$tH)imKR?!VaKoFg~+&2wSfT%zRDo_Chh&ps23Q&O#R3HkV z0UB_5lbg$sjgW}sE?%-(#(Hnx%w&1Y^GsLZd5Ov`^b<%Ns=%z zVweSao*RXXse_ZIX{f5I1-TI5`8bYztwpwAbcA%l6@~z*!@!Q=?kJ3oilX2dZp4w0 z!;N;g7n@xNa!C!`XhGlixrTb};nZbW#!f)CMjXdnKRAOp>PVjk!aL|b6BgeiIT=8J z9YSbbY@|$D9i-YJV%UU0pA1H!v+& literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/yfjdzhkg.png b/resource/zh/gui/icon/hmi/yfjdzhkg.png new file mode 100644 index 0000000000000000000000000000000000000000..58a3bc75b6218c69b22463c197adb7cee0132288 GIT binary patch literal 336 zcmV-W0k8gvP)KR>2LzFbupy{9%NSkPYYvYyfP)2#nAX7@;F{gt7r6 zlnIQC@`y?j>Q>E*ldQUNl(XZ+4n+hduqnb)k_ftWW6|M-Qjgc%W_)-7=#73m0K1qW zN7Rc*ZDAqV0XW2LKXXLVksL^#Bet`*xu0HSa@2Xf4f0h5bE;sx^J~O@ z5)FZVB55j5OWMS0M9=E4wLAlZiw`BREf3YChE^ iR1=$n|8r{|0K5Tpe#@|(PxR{m0000Kmcb2zKoCX0#yfVP9)A_sfhA}OUO8zAmSCvB0yyZE z28Nr~Km!k$}Kma$3$K@>$#MA0r5en2|8L@<9~v=qejHhw~|6+&!m z#YV8Rv9L0Bb_TQ+(>?5Bsg?FZWWrmC%WT{P2?%?u-Pt#D=FYpjY-unUFbmDigi?V1 z1!#WsM$(@~(9B9vkn02JO|kA0unH{49>zdDGpkDq6Dnplgi5LbeKUJcPmt6E+CUk2 z0Yc6CXic<74tWEfB()?}!ZmP^s;fxq0w)eR1!@lZp{y_*0t>)7a0ILYufSHyMR2>} zE;h}q8FQRfJNZJ-CZ~UchSxQj0Kt5rKHf z0KYj3u$EumOWJW4$CJ3o1xh5T;gGVsY6KS{Fp}z#4MrVif;@Qvu!x4lmGw#07*qoM6N<$f=!>f;Q#;t literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/hmi/zlq2.png b/resource/zh/gui/icon/hmi/zlq2.png new file mode 100644 index 0000000000000000000000000000000000000000..678d09d708ccee78472cda8841d8d1d7f06f263b GIT binary patch literal 354 zcmV-o0iFJdP)KmcdQKKoCWr5eIJZfdaUpRSu*B(g7)f66gR^0v*r+ zp#mr&w=Zs?gK$SOiZmM;XLjubWC_XtWc~Hd(_hW3wy5ixA#^ebWd!{T&}sY#AA5&L~F69#aIz_KU4amYE6Knm& zHbn@bwAuTiRKi@>l?J#m>&1>LrkEuLyl^}p + + + + + \ No newline at end of file diff --git a/resource/zh/gui/icon/ipc/camera.svg b/resource/zh/gui/icon/ipc/camera.svg new file mode 100644 index 00000000..9ef7bb93 --- /dev/null +++ b/resource/zh/gui/icon/ipc/camera.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/resource/zh/gui/icon/ipc/down-clicked.png b/resource/zh/gui/icon/ipc/down-clicked.png new file mode 100644 index 0000000000000000000000000000000000000000..962230b5d848c265e59ae63086f6930b40be4af3 GIT binary patch literal 2635 zcmX9=d0Z3M7QPb(0TqK`k%Gb)5q^r)tuD}j0V5`$Bp1*$1nG%TTEsRVf{ zNV1k?^2+Hdytm`}zXnfXWaV694C%ZVaJSTw-F5 zG%UH%0+_$_rG(IcRc$H?(munIAE2#R?EUDRY!uXR3Re8_IRZ)=&q%Mh04&I1=jB)n zz}|mspT-3N(aqmA+zbTFftcQvZWch2?f=!0{S>hKqGO0B2UFhrs4c`BT#|cGI`$}2 zncm}mUyT0GO-HYK)_%{NjsBd9va#j5U4Hrn%G>mj%VBIWs&Lco@Y9dXrjH&?SVq5X zE$TSo)|jp zoo1GVbpkbllXR$V^2ay6C>~ z6HbPfos+tDjI&sZ)9mT4zkDfwTT7gk*8m_n;<9bH!Z|lZ#gd25-?3?NFL|er{3paByRRA~=evyPIg4lM}gm3O|Z) z_$arrp;cef`@2Bpl!aR4=U(e>{zeeaiZ$V_cZ1`V@&QXob+2rAIG$?2MW5j7UPP3R+!3gpjqulp%Rcfl z6Q#SL#5O0dohsW&JQR>R0$(kxow)qm=iU6O(tiFkGj1KVf9Kih zS|$ycgj(w+`Rs z$?^?vX`40t=MrJhFRsz|h=sR#`+;Omj5iIqb=e8SW?Wx~Ixsb2W0y?3Z>-^bhfgdF&Jz92Z|J zIVKUvyx{o4{gvagt%*|Er$LPW*0N{QpYmp4o{v8_Z>u_TLm>O4zio-Wx#83l?gce= zMdX~lQ1v0*faj5R+oUV9wVWVE0qG)K%Wm`h>9nB85<1{ZlLNeZ8+E`Uql}!hxicS% zCvgYZ#pW%#<+eMCVH(q^q}eT5MOI*^w%4( zFJUZDkGI26xrK6_BIg+FAzYi)!*!C;;wP}Z4f1jdwAm77?g;U{QCDsfJNE;z3P~w0 za?a8ux_@aLZPB6&%SG-{&}dpTY_Gb(&L~uyO0JzS3mU`2J8RWD{$AMAKq?k!z&DcG zQ|d+(Ifvm>@^>xkXTjk`&``2rt6kmvwmB#_DwzFBk2}G}@Tk@s6geW8hd333M0E3)^m~gJn`{5E;pf{aRMiR- zW%X}i9jlC4h6R{eYP(!w%AKb!{jCq|w#x0FxT_-qrab6ixBaCU^8Ot)T(-{OgMUbB z(!Ia)(h(~km}0j7$@r@e!UvB!Fjx9@$R)01Zg~^f{n?fN5s0zUFdxgQe#d8}7XK`W z{k;yv&>5!c1c@N_`lIQ*iLiK%Zw6H;`H8u2__5rp&32=*9!$u2?mi@ruK+3Zm1M@l ztysp-!z}$?%as98e{g|>bXnAwn|r^j^8I!>Rj^RC!vcYr~M6 z_=^QUmP2w?#Wm2p`GqL+PaQ1t8l^G4(!AJ6`aiO|&fbK`%Ks-8d*4z26KXZ9zS zktGM4K-j@ngPmtD+=1oLBJunM(}i#c8!8Tfb(?jf%vVB4V;ygbS^M24H*;h(aUG*YuJ1KYD6a~xtqQ{JsbY20J^fMK`5gBQ^Lq!)glQN(Tc*9jE*dvqW z&5a||JWz9dqQv`GAP!sBgEql)QQy#42^$em?_Xn)Zw;)P-V~32PXQOsNURxd0L!oB zzH38)i{nB!VGv+4PF`#O1D>%q(t~tYfLJ)>BMXP!{+@NE%M$^^uSJnft^jM3Y_2{| anMEGkD+f)#b+dzqM8Me=#Jc5oFy;Rs2Ie0C literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/down-hovered.png b/resource/zh/gui/icon/ipc/down-hovered.png new file mode 100644 index 0000000000000000000000000000000000000000..b91ab250ff3686b21f69e84ef54b6e2ba683b18d GIT binary patch literal 2743 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 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/down.png b/resource/zh/gui/icon/ipc/down.png new file mode 100644 index 0000000000000000000000000000000000000000..de66529fb47ba8eb7917c85c5d5b2fef21663cbe GIT binary patch literal 2813 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 aTqd_Ki@#S|rLh?3Y6eeNKbLh*2~7Y#Usl8b literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/icon-.png b/resource/zh/gui/icon/ipc/icon-.png new file mode 100644 index 0000000000000000000000000000000000000000..259bf2b8be2b1a3987eb4c219624efec2357f353 GIT binary patch literal 8194 zcmeAS@N?(olHy`uVBq!ia0y~yU~gbxV6os}1B$%3e9)PJLH?wti(^Q|oHqv<8G(XL z3;wOo>o@>pje^k-7!3isguo}d*fPj1Il(;09Y_!7De%+7mO*YugUuj!AYGg{S||X6 zd9+Xf2Eu5e01SlDLIG6jj1~&OKo~6)fPpYtC;$Utv`_#B0!<5r2X8MZiZ(ciuwLY6 zUBJ$@lXXMN(IAF)6@JMZ#R2c*?9)IF7z&`FVko$h)^0p9+Q|YIopQ7e=AmHz$06WI zh1(PCfX-~NJ6?G=bZcGD{Mzj9r$B)Z{TIW5l$EdS%^b5K;Ez!!j)uT!2#kinXb8|Q z1RO?34S|9C2sDW|(t*I}C_1pwG}_?-=7SN^;b~9_{mR5E&Z^vAp8N%r{XJd%T-G@y GGywoxSV33- literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/icon_Silence.png b/resource/zh/gui/icon/ipc/icon_Silence.png new file mode 100644 index 0000000000000000000000000000000000000000..0c7f6118dfba7e0974eca11645472ff7f28f5fdf GIT binary patch literal 413 zcmV;O0b>4%P)1vuwWp`2mWsO69~8t*ac~nW;^Z}W4KB`3){F20ya88nP(hp&M<;Rd2P?LO z)Fe%8gwdC1Muvf$7xHSpcVV<5m(BLmmw*h=NX`l${=3>!W$=6e3s3B}AbnP>MYjk#{uiCRqtTDvCAWIjdnl(j1bZR%Ve_F(k$%iY%v_W>0|y-}BxFTG2_;YjKj!n4-v~5RZUwX`bJaQXqxckUs#} zu?E0AFlNExZh8Z_3Csc)w5kT3}x`vL(cPhkv&#`MwI8Ap43QP9Rx8DGVO;H>&MKS6AJ_ddPi}f&E*Q7seg^m7^u~7>&%|^|WLVN_S z10Mi8;1`AOe;%$!`!-kSFdCNiWh?HC`rbhI)WRxhDl=xv9_&W+Vx?mx?T^Z%FZRcH ryOT@Tdg<1NZ&`eLLSOGQ(lo00000NkvXXu0mjf_4O*Y literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/icon_down.png b/resource/zh/gui/icon/ipc/icon_down.png new file mode 100644 index 0000000000000000000000000000000000000000..92a157f2bc64ee492cec155b423e01ca01b7db25 GIT binary patch literal 357 zcmV-r0h<1aP)IV2kH7{S0s$MUxCVmm{E3wVa094df&*|21{Nk%sTj);+sG!Z ztTZ4t-X)6jK6$^NL=5g9iL?M*0jod(I3NW+flJ_gY^{Rp*=*xsX}*mM32Khl_5a{Y5kzIie8|Z3G}RqoPy{pR^*TSm zW>Z(m1~4p&S-QtN&+8o8woSX;q}yGqZ7q)HhBdMcJZwCM8YTEe_IOb>_IR?B-C~<%y4!^!ciR@#|hKvyFw=lsaH+)KqP!HVTFPq zht7cO(yw~}`y%1J!Wu{codTEUrRv{dY6NTn=Vf~f0bj2Ne%W$p=?4G+002ovPDHLk FV1nq|n+5;? literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/icon_key.png b/resource/zh/gui/icon/ipc/icon_key.png new file mode 100644 index 0000000000000000000000000000000000000000..cee4ecb050cda49e0b5d7c7a80e0cf177aa5a0d3 GIT binary patch literal 14567 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 R)cXJc002ovPDHLkV1mtO`qlsd literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/icon_left.png b/resource/zh/gui/icon/ipc/icon_left.png new file mode 100644 index 0000000000000000000000000000000000000000..b25f030c8379f10f0da46713c6ee9b9b17ec0b33 GIT binary patch literal 342 zcmV-c0jd6pP)cJgiFqOFZV{fxOza5eZU9KR4>TrirxWm0<^1Om7rq_^SIS;Yd}6vP@j43 z*upq+Et4$EWN#T*tKgr?g03UXL&q|y>3UI3&siM|lUo&?j7I&5plb_b3Qr=8rJ_`M zehF5j;1t+%E%6KfYb3GTYB=>pV8(*BAI9M@`C3?T32X;ZoPW+p@;v7|O%+vaX}ZQ6 zVAGG{^QPwrIXDUTU*A6DtQ3dK|Kzc}#vZU0L~*a_Il884vUd+`%=?6Lu7UL+iU;Fn oVfl|h<__5L!*_Z8w2}sX06djoqRtpOYXATM07*qoM6N<$f>*+mtN;K2 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/icon_left_click.png b/resource/zh/gui/icon/ipc/icon_left_click.png new file mode 100644 index 0000000000000000000000000000000000000000..0552d0dd894032356a03fcd29394e30dc73e819b GIT binary patch literal 355 zcmV-p0i6DcP);tRS40pX9(J5M9`mAuh2uZO=uCc3B+}a85b3~8B>$8 z5hf?@rC>(7YJG6va_;%Qd(OFEEVuK32K&GZaG@)Zh--3(z!^}RMb-(_g~*;-R>=T@ zc>;;4b6tqciD~BW{ZE-Qfz=uO`|u8q%H`~_Bqx)GO7waoT=z}O9uB?EPX`A=WFlmV zLLsd}hi3C}MGBk)d#1S@AukHK#9hlOB~q!sllc~?*|z)I?~nd1a0P5RPB$0~J|dTs zNr311zs7j%tD5jHtOJ+TYH=x_Pb+e(^(5PR);um}z6<-H0c<)>w^6ASZ7q#hc(!5Tz=5DPBeBMGp!hsMm@jURt4eQn2UZpPQh9R7E_f z2Sud4h~QcDQt+~r?QXJ@nd~O=vPsQuk`_PM&Fp06H*dc8X14bF{VFOn1K=!xX#o2G zXaN2I_y*u@`YFgL={pW!ku!GM;tZx?K-ab8#W0Fm;b3?qkm_2X!ZiT%06yj?PXgym zW-PfDhhy==O1h>c3($KZ)iFPiAEXKw0o*AA&bc;Us@oO}U9YlXOEx#b8AG?Go}I?gwz5fR`N0tb$R@M2X2GGV+V;G00HUqY5bqx80U=Gy%F zuDSze6ptm9ktYHVz;b57WnToJER&%&GB?Xw(`3e4)n$>%3naBJ0#KPhpJh0>zv=fg za}%|u_GnYh#3V(b7n@l>h_qSMc@$F1H#Fz>MXYa=5&1%xC0jc1ITlr;n*$U8t}&# z^#ZaAXjNvQZ5lehYs++{AHClKYrta(I5Q1>3zW+6hOXh-=4kA@4xqI9QQQSKfItB2 z&4!1j)yan9BrNx%_y*{RE34(4fOxhgHR-8kk^ZWAPtu_+0JS>%-}N#WJ&6;kK|0Jc z@?rHk6h%Q(f7a)95D~`7Ij}2$qu}}N07#~Uw3-cf$+5m}LL!H8atZ9nTmTnEo2E_} zC-(v0fhdEP)ZH|P+3grXqmV?^D8h`_UV71rD+ zvGh890B`4_vcn^l3DF|qz}$ZTo(#!k zqySt2k-^2l7i1Nf8Y3=-!$H#NUhE#N%eq7l=}- zU|H>JU;}s(zol4=3Sw7Ua Z0iRbfP;0PWBM<-p002ovPDHLkV1nTJu3i8D literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/icon_suspend.png b/resource/zh/gui/icon/ipc/icon_suspend.png new file mode 100644 index 0000000000000000000000000000000000000000..fe8209b269f5283f75a697b191bb57dba4c8e8c6 GIT binary patch literal 667 zcmV;M0%ZM(P)cmk_NcH2|Vn(rx; zZ8!F9S{-bwL)Ufi-DF=sj2?$NJ_1~u4mrvMPErKCW_PhbO9p8@}f@$VPIFMy)Z0QogHX`EcA7;IyZlMG>G1Y5w=E z-$T)2&i7p3b=my26&JBL+w~^dQrlI|e4yi1+2N_KavDb&gpvGQ0agZ~W)O|zTflya z>+tejo)N;sVvRbIER%o48eh{aBhBMYxr+5Ji2A@mA>3n{W+TDO`?*l|x#;gqn>a=O zyd)=iyZ;NuBk*n75ehYTfUFV^+Mb#f`9kj21h17&PzF)q^s*b)q2(>vH zaZ&o^Ofh>E!z7^}YJx}$*@g06z3NgB>9;|o*L_zlyUNDubV|j^vWz56iS&>`q-APu z0uOezspS(OlYbUC4jd@#BKQe>1YQDOK8259V{L7r_%1er4`3=0#FQxniCCGgf)$7K4_66W|QkHwB~(J`cE5%2^1*;kwp-4>y`Ik(>A%>98nZ)2SFGDtt6=8OffVm zDQ%O_X9V61f^ZPS0xkm=N;y?2&!kjJ;Bn@yAP8T8bLsKM^BhX0c}AlM+qR6b$aM>H z9BAzq1nhLXk59lWu-a^T#U$M8J=5tt$lUILEHDOFrea$Cez;LA%G;;3_T|0{oW@Q& zQBBhRGJ#ovwqOK8259V{L7r_%1er4`3=0#FQxniCCGgf)$7K4_66W|QkHwB~(J`cE5%2^1*;kwp-4>y`Ik(>A%>98nZ)2SFGDtt6=8OffVm zDQ%O_X9V61f^ZPS0xkm=N;y?2&!kjJ;Bn@yAP8T8bLsKM^BhX0c}AlM+qR6b$aM>H z9BAzq1nhLXk59lWu-a^T#U$M8J=5tt$lUILEHDOFrea$Cez;LA%G;;3_T|0{oW@Q& zQBBhRGJ#ovwq4A2uk#0^k9!%8Du_xw|#j zSq5&8#7*Emuv7%9V=hb48{czo+SMw(DE=~%&wv@L}eJdv=K`;WsY5<4f+PL^dQ`u@Ymc#yOl%M#6|fjGz@1(c-)eV5@<$sLUv{9Sw3cs~Dm!f{mXlO{YInnR l;QUBV0gHnqm8P2je*updk$=x2F`@tf002ovPDHLkV1fdp;*S6T literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/left-clicked.png b/resource/zh/gui/icon/ipc/left-clicked.png new file mode 100644 index 0000000000000000000000000000000000000000..7978adc09b9af8642a5f0a88335000cd14df8908 GIT binary patch literal 2382 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 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/left.png b/resource/zh/gui/icon/ipc/left.png new file mode 100644 index 0000000000000000000000000000000000000000..74755b9f5fb2771d9ce8197b976ff2e91ab725b5 GIT binary patch literal 2409 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 JRy&2T{{uk!Q_}zd literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/pause.png b/resource/zh/gui/icon/ipc/pause.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ef825d3bfec21f9cb9f1581511253c6343e34f GIT binary patch literal 2958 zcmeHJ`&ZIu9Hu49WT~xY&Qi>svLr8wd5NLJEHw*nSuCAeGx1Iv%}XQ{YTh#KvP?*D zt>(c}bCjY+q!!o-#gR|V0WS<3Ah7Q)|H97pgFn3Qd(L~F&-24`-uHQ)@+frZ z8Y>4Y5D2s;JS-#zIQ#!xmLCFpGp2k7>ABS2fp647h7}Bp30_Nd4G_(bcyT zYPea80TAs-Gy^G|e^>Hr$37(X2AxisBnGjNJN1b3bQ`_$(m*Jwn&o;m2hc!z|I7S9 zyV!wVUaNMDRP~+IzaAgKRJW~BbDj`fNy$U>v86jl(@iiLnSY87hq9eUasI4AoWD$u zPS06FLSyJk;%HGJ;#CLOAWHs0lYC#zeckY_d%s^~Hf{$8>BB6?wD-)+0`mUYHn_17 zKQ*9|iDy1rD@!l*(md)y;!}3LsSB@m8zB#4chkRFd~c@wj65)N`fIt+d|7&E9LmX_ zc%r=Xh`42;%`R9Nl#pf))OIokVWVUpgiWVTC%hiGvn@~eTU*f6K)-hdv89n`yzjOq zT`*er^!D`;4I-i9r`@fGAl|!P25b_OHf@AsSU4fh^Dnd}RdJST_Ru2oEoGR*H2THD zoF+BK7DWTEt&ut&L!G)KcHLfvMx%USRxbY0wkyiX@52~dx0iWDE?+GxvHT{Mzrw#_ z3e#|QkxK6Rf+RE2dX~hn7lMQN$zQj32!itiw6NmWNl*`debt|4wLh-rS)Ejo;Y3{L z_;NJR>pE$H^EX<{Sd15H>B81~YnRk82%hsd{(*Bhr9S=$UsiTO_o_jrKRFKPyP%bq>9mq+(@DjgvIo9dh&n;UZ?!OtoX_6GZl8M+G>onAJu(IE zBz{_zssMUL#>Ap@oSbNxDmljat|hJ3UR^jn@YW{B^!yr?G|5$*ujS8-H^@xUe3=uE z>DJ~vD$jFLDMgrg8T4*$ZTIX)PAy#}5t(-$+|E=?Bs%gS`!#4PN$K4xncXaQHD~|c1O;Fx2q)c69GVR3vgDid-_Q-s)CUBu)rE9Y}Wlt zA>V*8HE*PjI9d_V=vI0MMJKGVyT!`mQ5DXQ$>V4Fk?a5W6y{YLY&q)taQbziXM@7` LqC;AOlgWPotg`k} literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/play-hovered.png b/resource/zh/gui/icon/ipc/play-hovered.png new file mode 100644 index 0000000000000000000000000000000000000000..ce6d5db57e577d403254c7a979791e244d4b8a6f GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`dp%toLoEFFUiRi=bQEcQ_+RIc zT|`4i;}NEug9luiI$J!}A7DD7)-xfZD^;R%M^UM{=Vkt@ol@5xd*9u)+~w@T>y?{1 zBpA4t#DGg*5A>Xo#uF0pBM+v4k=&J%f!r + + + + + + \ No newline at end of file diff --git a/resource/zh/gui/icon/ipc/play.png b/resource/zh/gui/icon/ipc/play.png new file mode 100644 index 0000000000000000000000000000000000000000..c5fae9b69a9928d2dd53896b1b0b2f6b0ea22f20 GIT binary patch literal 5454 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 Ms~h0RYBr(&0|k!wrT_o{ literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/right-clicked.png b/resource/zh/gui/icon/ipc/right-clicked.png new file mode 100644 index 0000000000000000000000000000000000000000..e0083d9c5889d25113f2764115fe11da5a33c426 GIT binary patch literal 2253 zcmX|DeLRzEA7_nj?r_gE)G1?)lb2FTFP1iDGlX<7t(2)Ko20y?3wc+0Z4ybTbL~{mANPG-pYQd(zTfY4eeUab-ICxyrit+a zV?8}R6P7PM1hh@M2Qmcja&|?Lo*tCXqSJm#jT|l9l>Eb*d4|vLHDAk5dUVlk*I@c1 zsT)0}>CwM(p2;XhPgeN~R6!5zk4s~#1Zn*AFni|0*`H@;N^VTGo#=b~#C+taAO&+z zt6vYl<;0c4Z;yDKsLzU%;V^+lu~1^a~V(bW}s~uOH)onqzJ?Gpkhg$0lYyq@v z(sbAdKxuNz-o{QWfL6FCnGS9S(E5p2pRX1HR`N#A4`x<00DU_6dg|Coz)JRD95y3t z0?;k_>$iJ08+@>W-*>$k`m)H_2Ko(;E`wy1GrqxEl5m~~f!&_&!LBs&a^|_)C&4im zne3Zml+rGWoTyR`^@UvDnM^~)!w;*6a!VmE=d$(gN!g)zKzhV0?WisWB*)8JF8l5V zq__vuY8PDpT+iEd?!NrQc!u=C$NMSptMd~*9NVV!LqFGOwY~#wDDlF3c}9(Ez03Ky zmp(N#>8qR5@jb6{S}Lg0;qrkx@pZYM+?>{5-d`skc%U4kO2=DqaGo5N<7qFq`Z!bW zJ)VunKG}nl|n?cXb{Rl?% z?@O~Kt}^ZV)_p-<$m;wv#yEI~vOfkV8W}W@X%~<6{>KirIy+>@jS4+K(}2(~T&uQ| zRpx7ylTZ~hb()ETKMpp0aiAd?o4_8c@z?|EoL?^^u*Yi?(b`z01CvPT?6AQ;?+_f% zb0FM?{Ek?QV(~Z1na;fC_h*KnDyy5yK2$uP80jJ;hO<6!n9jE@IzUx=RpTU7Y@$y> zZ95uDBw`Z*3DsBUk|pAT9um4T*kJ$_7c3AG{fLFX*b<6(^F#rdd6k9i)M6I2Qh&K7 zjN2nTX4|A!-OWM81}1bwzigMkM7(^J1#KDC?^Y&znspGjWc(dm!EpYhM-V|*f4dXH z?fKQ7p8F`XDJ;xP`3kZp<)N0o0WU z!?uzPLjBlxcU=(1KROB}wjq2RF2c&j014{+IKWj2;z9-Jq}W%k@> zP*;O_yuQ2Xffz?H=o)4P2bb1*4TK!YNr_|pb7-)cAo7cAkIWHFJYD_XDHUtG}c zXO>3{;g;=SQ8y?G7B8kPm<0o2IA#?H_HQC_1)|Y(w#BKphcrPJA1%zJbUK zp5Me0E0%+R?O9+q{%AdO{F^Lg*dHX+rC@)WEQ$Uq>pYgmZ5MXxKKY#-l<%HJ3BMAfhY(${j%YCf&M&)j*c;O@!dEZR=}MDH;Vw z4r3$qB0k_$iu=@!PFX}a%88P#3DYmWf))A3j&l5Yb&?Gt9wuX4rczkaB3!%?r>co0 z3ICOKU^rE}H*?4Ut#^e4qUx(Fj^k?jW#(Wa?HvT%Rz X+Lu$yhoEQRH${)-6G*S{+9~=Q-#GJv literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/right-hovered.png b/resource/zh/gui/icon/ipc/right-hovered.png new file mode 100644 index 0000000000000000000000000000000000000000..be780155001981f6ab559de0bc57e6a1691cacde GIT binary patch literal 2294 zcmX|@eLPe9AHcUcbZlgvrW7_pzw%T!H)X?^r%ByhF)hleE@eZmr;4nhj+>UsL=RLH zg_!ysl!v8xNaYr#Y389zLW^8nNxH{&vM!6gQO))9#thnx=<|n!iqL~)^ssDW z*CS<=u97)o*9g*O=J{ms>?tu63zp{8C(x zD(Bgf8gSxP=7i7I!Rmyb`2!ytlZlZ`Czp)TS9O`at=H!26622e3zV_zu-ch? z2clm5-Rs$QF5ysggaCJZ4bB9pHXOJdMbjquKT9<>2i)*cwd+OY=lg$8PsIHMROkM| zicfOz-C}0*D-r5{{Ag(E3-AsfWp5-JpD!uOb`qZ=UntflY-3@AKEpg~I-J_&7Xnc6 z&K4gyp6iX8?~)}AIU743%l(NdEa~Hlebgo5Ato zTVz4X>Uvudupmiu0ow1XsI=!sOj-7JRFWIu<(3PzT=QoSMS)R&wOsIc|G~G&3Y>_& zoKP8AG}u|C#_ujf!=W61o*_693J+PI?JG=GDmnZ`m$)y_px3hI&($1d{>w92W28GF zx;M4x1Nj3FQU{-ACF1CB+}$m@+ro3qH48#~B@ML6tauVVx`|;?^5{jN9`ItNs;Jz| zTd$VLNK%tD%x)=+VG!*nB@MBhlQC|@qc0^5)9KH8c;w$glMZaLpbGx~<`R*izTedZ z>c@N3F^T)ysBr2~q+Y!)UDBdsL?-#A9O%H)IaSR2S_H39^*gQ^55-0`0+#eoi+M*? z{>%!zs60Q14Ce>e*rS--MTV0p3Go2bKiomj7&a-|j1fiZnte3}UW6QceU>E^D3)B& z+-EoOQBR8yXHpWuBTtpo?9d`;WP^M)9%l{@1-pnr2#kvigMyX%KnN4F(+diYnFOy3 zUb?zK!8g{CVJ(jfTsZYXGoLI6T0jh31%&$vqJ50SX36VH8%Hx7ApuQU>H>( z=A((y*&033lyYB-baIKp0_P=Z0N01n;>U!%(S?P+*1)c&2Jr2Enq6~_I1K&AeXcR6 z?Q<(%5FzBEL4X z+3?=HhQE_Y-axy6#_(v)aoZR+|CNYULk0!yA>x zj*X8c87=Jg4Hj#ON~04%V^g=UM{!<_Nc$%WoVjdjBaYCt$RW5V->fG$}?<%R<0X_DAYGcVZ?eFT@5$#3w@@(dJ6*-nT zBK6zsfR@Ux%#|X+v0yufD{_aq_9`dH2IJk1Opc6Z3=F%yufU2*+gU`0YQd?WCCJEL zCt^%NhrX6f|EfDtsVJF^63(6IQq@$N#yySAlbN(&T3XA<$PSg+A_Kl!iu~&uNEV*b zu7aNZ=fYfR?9#Y-*f#B`JS>enYPa0)lPUyO-nA8R&7Dp+Yci6rhigFWz}!GNv4D^_ z@<@W*wu`w)ftNPtT1gPvWO|+}aj#fIrY&nL*gX{v+-fKYVsMHDFK<%#(#YCgp)__C zR~Scu@lChQB*>2J1YHXJl?rne%P-Yp=}(`NAhtd7XtN3Ia1dfA-t5?H44WN+*xnbd zj!@vXWiU6!?*1sBOf#V%iffgUyI{M686=C1eL_tmPi)tewdPoU0nnROAVqR_WHW&- zBU6#WA-`M~y@&5fkYK&~X$XwU(-CnMD#~Rp8I?+AhE)u*gro+?CV7+bqTybmkP->qXC<5x+qvD_WWWKiw2*XZ*U*BuaS} zS%Q2}?7^*7b>`T|Z;F@e=b;hK$Oc@lBOT@zmMUAko~H1?d(rz%F$z%c75qOr=(f6Y=Icw zhL$NKfg3UHwOU lfR&3}D37jU9l<$bpDk0?>C|o?K)+`&o~~ONcbxa|{{=wv4ru@Y literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/right.png b/resource/zh/gui/icon/ipc/right.png new file mode 100644 index 0000000000000000000000000000000000000000..4c0daf34a31b585da98590eeb50d789a2ae40370 GIT binary patch literal 2381 zcmX|DdpuM9A7>5@OAcwT%5B5!C-We`7K_-7p(H(}WpWuMY^dLoTi9xz$!&hQ6uETO zlj}-T?lG4hMNt|n(M>$=Ar$?N=U4r4&UwE+m-qYgIj{5id{5H8y;K$DEy^-7GAhna zl>P9tW9@3Y=&GShazuN~4A@Tk<_U>{veZPw;*#@vyf4cE~c#F}<>j~$9S6-JVti5wB zNWMn08%R1n1)m9L@(G7@-Ar?I_(U*L&)2wP#Wn0^Cc$U0uwkBkq6@*n0>R*Hcv`pB z$bT5aSpO?+NKP)-`qd?xq;t-y9nV2=$5kEh);l$owV>mM9jlY#=Jg&4`da!=Jp?U} zZeEV4#$BRaJaUTK#6zba;PYOaIL*l|sh^`+F7K+TZKRT5QqNu<`Z8IuY7D#CgV#Rj4_&NCZI69<3?W{8-&%j zA2Rf)puw8$1ED;rqXtancj9Ul9}fp*nwZ|lakYkKubE;8I}gX=Jy>77>D!ot`~~^6m=0=mKP<|91+N zZSnVl5^&gx$QaHVBF3yExhOc|y~q{Gfoc@LJ>q6%C|_g;J$VQrLweZHkfgbGJA7$( z)nO_iw0FZZ+eMy%fRO5nXLd`*RX|4Kg0xNCoMmU+s6fi(=&-1GuM48TY9WgJwNfQv zWy+z>U?9l3kai!t;xOeXaJaZ9na^{b$=*&CY>Ufv+W@N^7~`Q`&>N)?(zqGV;-PN< zsRcL`0b$HcMw5LHb|&#k-o}j{1$$zF&x&YNL14f^4%#EYWLX_a-)A$hfplBnG!7#S zH*fx+0tHwZhh>SIHyU!$8_}ALT$%(j<8Ep$>(8Z05(!*MIIA~{M$6yHy`|53BcRd3 z6u_(PJw7B{9Yg{u9k*gp-UL_R za9hyht&HLR2YMa&t20PGuhG^Y*c|^o2j*OiFNFe@mMMQ4pyIX#0ZDfjW@FTm#hDPL z!SY!FsEyQjsygKp_2!n)j9cn;QIIa5!c#MNe>3L@aX&r!=Lu6MLUXm8!zw z{I>H?-=#GPU|Z#@0U+@_PmK~|^QjtV<^sp#tF$??3_n0fS0(C#b6QA!FvKg}?hiQn zIbC&-?N(Gm+eD&CJ%AcMPwo1P=;=X4M7h5o;OBk>n%)A_C(jQ-iin(`T*9HLL1sNf zf=n+AX{7_!t<7LFV;MVyMma)_e?NSrC58=K7RW`;ux@>+;s{e6R!e?~<#@ts><2np zH6E~M-17@C=|6no$&*&oofDmCKEZwYp1v;xH(q;U_LwH(cB4rOnqYr5BnGh+POQ>3 zz*S=R%}JX<#!ju8YFq+(BCttGOMS>ksI{J_e-GCbf4#a;78mZEaPj2_n&kn1#J8f# z8JWm>I^tuzT!u#H#JH8j9P#ar-d9;pj*>>JX#cHPu2YixoAU`SOk*4CHSCj@5c~_L zCy;*Pu)PTtE9TV4NFvr(N9yumT1gM4R5mvau3-Y__AiX$82-d(j5s%c;+1H` zdIo)TSdHS65^XN)_RD?}@hz;Vx8y_BtrSXA2-7%Uwh+Ca@w{6tTwB_uy}D#eg^bL{ z8mUFe5)a}oAVdAysuiakrdotxs^#w>dy~|q{g1Vr;sXEwoAD=CWQ1kxShzS;Rb1we z#NW-u8Z3$bcsKpW4S8ygG;WDdY*OTojqhE%ovkv6ZOns z_?Z&)y!#J@((lVpe<<{Y*$5}j_hUMgkLTNvnRGKVz$js4)tw=ItA>FmCSHZlnm@)x zN8_cZ^+X2?W!FZlS0L$2+zF3cS$~$KPe6c2aC@jLGi2RjxefO~Lg_bU2K{JJ`vAtt zLDE{GCo*yT7b^koQDrQNrDVFA@FRIqYOU>r|9yggvyoraNYX zwC{S^>~DbkL(4bkBoPG}?aF|#P+3@J<9~Mtn!kB~!VLLm%{`;KGE4qhea|Rv%o68b z2UEa(lbo;&K`AzYt_PTjMcBETNEFE4}#pGyDI@cn?x_(Ac;EQ9DD+qBs2FE?S_4+)!c=2 zU|Ic~B>P3#o+3@yWE`eYA>Hta1XE<++brA7g`@;J()*iT(>1t=@nTIx1Mny+uVHUq zNqTWkD0o8f6z~GcOwDM;BR&mfa7=m5*_Q2lgnZWFMjfzf5muh?v#|7^FFXrL@33F1 z-I`G%Go`OR!-t5riWt$+ULwwSR%zRZx>_6Oyu9SQM@C{Tp<_h&H%Z3XVK1ee?92Th DkJT-| literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/up-clicked.png b/resource/zh/gui/icon/ipc/up-clicked.png new file mode 100644 index 0000000000000000000000000000000000000000..f50f42a543eae879ea377e45d71d39d1016a7531 GIT binary patch literal 2699 zcma)8`#;nBAOCFbWMbsFq$PAT(!FdHHQDB}a@k=E-E{g06GzM?JDk&5ebXW4lKOPI z%!;OBESIK|3{e?VOO0I438R!t9L{;~`}qC=-yc4o&*OD_zMik=`~7%--e>pudmHLo z>O&A@NFkE~z*nk%bhW`-7*c^ikbVG#t*dYmrfh zIi|Q@54oNoqiUK=4j=4IQ2gGKx-FJjCa3X6Q+x`8=7W-=i&Dq!8ps^YZCLWrJ!rdo zS0K)Ym3DEfQP3ebGUQQ&GI?qLh{#>Py)4rX!g;R0bY#>7S{@b~q(y-|G7oHN>9&V( zb$z$=FG3v6+T#~)`#>H))$TX5LqU4+udD+LA4Jt-`Zl8AN8727RD&1x{1%f{@=2!+H2S8aYoM1^v!ipqCAkG-*C12M(>|m}-}%{9Vc7GXhATM50!+ zZWP%wq|EzE8osB?HdDa&TVI9o*pwBptKd&2T-YM(awrVd!4-Snw!wc91~Iw1NWr$+ z^8~0>moiPRW$_hz0kYKr|COAfn>X2eLD4D32{m%qZH=52k0-teMJopYoBDk^IK$n% zbP2C!4d5FOb>V7-_G5E&#hGtAfo+x8kQIap8U>DuIkf`{aIH;f@0k{g3f6)o`#QUN@ggAPWODqRIYtwrHoqq@NwGUma|0eA_;GVN+x9i?=hV3vxxcAp!1av zpffYWkmVgS-nCJ}+m_(w92pN?UlyCg;;UBBe2T3($1|7BjWEL-P`@t~rshMBydPX80?Cd?dy z?6y0VNP=T$1uq8RNC&m*7SqD``d#T58h*1Y)T-B3!{Q}mCcNl}Bkgo>y}K(XnPJ4o z@~eaYv!@1t-K@65C>W3RT0`yPuHBh}#MQ1)?J_B%#CBt%CkbxO(EjI_X-ewJmwWUO z`QG@3tmy3S*OTHdOkE9zX5gWJtVPTUj(d5-`?ILiu7xOtzh6qnJL8fW(8Z0!ggLr} zj{AZxBBwYtWc3*xU9Y4X0Gx+I(9m}|G}|d(VrX9X0F06r??+_fu1)_DOygbOd&+Sm zKvGUW2t0gK{Pw@hnr9EMeD98MrRFMAzi{*SvJY$IMM~_~C&9@y{5IVEG`w^EHFx1( zoI9(8^4~)mYOuO0xLM1tl*L~(@(iKj9dIYr%nrE=Z*dyTa|;!)9>cs#c1}lE(qkiO zVl#|UkHuYUOgd%fv~(pro9z0weF)v!n61Pmy5ryoMIq=%V z-AVOT!5zzh--SdfofeH~YAVZCStb$vKEfUPz@0%V{VE#K0N!1e*i=RWDwDO<Y?;lK1|f1cPCql-d$1x4b`ur@cV(7z3nI4$-Z!3u6?u+s!cevMH>oL7kO63o zU)z`~7`9rThHsDa9e~+7n#wkUZKu0)qq@ZV2%6Tu88=5iz5L`D{0$IlGqME13=m}h z(j*iN8-vQb+#O#_lQyE1kStm1UfZCVL4c8(CiRv`(ry@b5TAOdL;`-q?p!+%#>r!{; za?sst&(m9iNFxwTKK|W|$O)avGBY<$Knk2e<%jEsx@DExx)L*P(UfQ$%4BI-YP&mI zfjU&nN%XPPvoH0*P`LO@oU=-IYa@_&JbLYhzmtrd)w#Azy=AkaX8=;mvKN~SPU#0r zAth^{feCv?z!^1N&vh%vmp490%E(r)(L!SVySUerHWyGpAJt7vbea?xXfRd(P1koR zTtN?*6)*S#Usp{urtUxk16wsxd3FM!M*y}5{Q37wm1OE<%5=ASpztKZ!p<;vAp+=j z?5tbt?Cp?^0x5$VU!AQAG^drD1MVla#l4jJWQGbzHoA3#@hm(6S8D-1?ptD>M~#4I0E&bLr6r4cN7Jv$)!T3;LJJ?_*Iy>!sp<5L@$Wv=J1{L; z4f3ozS2Q&2e@oqK42Pi0eqhgbyoO;JJ?!tuaYAsP|n8Ms`5Nd=xM9h ztC1p2=&0|+_$au2os8cva&s@Q!n^Ir@) B^y>fs literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/up-hovered.png b/resource/zh/gui/icon/ipc/up-hovered.png new file mode 100644 index 0000000000000000000000000000000000000000..73ade91b79683b12c8577854d5fd94d872dc38cb GIT binary patch literal 2751 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 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/up.png b/resource/zh/gui/icon/ipc/up.png new file mode 100644 index 0000000000000000000000000000000000000000..0cd949304a3e2b939b8e188c8a456c3a9aa58175 GIT binary patch literal 2911 zcma);{Xf&|AICqlxfzn9vg@a_vi7r&K>kQutwcT z9fF`WWDhq#@ZX~Nsi}Y`98kfBAPsY}o9m&3pijJ4r)jhwpUe9R% z!am2Ygnf&;vl7+guyO^$zVs?KS+9f3{09rE^|&fU>p>~7m$^^BhkSBGXl z6&~*LhCVK@boTVZLJDJNuZjXpH;?WZc`v^i&{m_ryrW;dYHaw3tRJ=OUJ6ruYeYH07d|9O`nD9%G zEKOcJ(bi$Nv@*3a(b?OGFR0&0Qooe`agHk1*OIvub~X0roDWl_)~5#j=`Hm~do)Z{ zmS5)2@|e7?yr$3HrJ3LjMa4-Giy|9Vv5n9BXBX>Q(6ajAErJ6@JNpBqDcL>VjC;EGM zua-9xh-!SuR`|R3hS8 zQT?%y4nHvR*#oChr)uiC@+T#m_5VQUK?`_0tiRLA(DQUZQiN zpA*jNFWt|!U?woyA*V5@$waXE^1=eW{mT?0XkF|=<)+gcs49!}24VWbIb*7)5szw| zu^=!_G=E>sd2d_MAmx~k_^RSIZYFQcTcC52&0Q)7S>zICfGSSIL_PgTZiH@HkFPTS z+OC?#Scrq`%B<%iCJNipV~}aoZJQJ;mM2(U9@2&Kkb9Xd(%UN*oB`emaB#6rsufFN zPF@DEfVd7=YXh5U^}d6?;&Ie`3KrD$v&g^i@mIzDaLel>lic$ZIEt^;B5jf9w^wr> zoE4gRYmo*_<5MVlGD^3N47^VqGro!2w`IdJeRZNPCN({_#ilh>GBLYiVb!(hj8ANY zw!Cf|nt=u31B%=twD!?7vlOeNVqoM0Agrc$c7*P`>DJZbt)HDVHP@1qlzx^om19!Je2MTAIb@2nrq$C( zGU3K&Qgw`@~F~ahd&rh_94G z$9=uJQ^oGzUN0qoe|PmFEYO2~=TB?%I|l&w*-u!cpFiOA4O>qQON)YREpEO@vD#{q zz=-CcuNd}sj55jC25A9rL&nRNGCvvRg&M!}0uWNH3Cnc9y$jCp4VMzKN%*}Al#JqN zK!mrpPGO_WubP7_TM`%}Aj`TuM9w4|Hb@;omZFvtGZ{r)jjxyC)yp$awX!k$+V^zr z+bOKA&n=paqNOGi#ugc8?Dl^)&m_kmW}FqqUM)%_ZCjxGc}yZulOZ_K3;FYiS9(^! zG%WZn0EFn^m(?8G;BKj{My|VzLdiWr{mT@0CKYTX#0mdh` z&hxK1kS1YyM!*c>r5HOqc&zm9XK58$t)7N)Y@W!0Wyz;hu3UR8vuqn)z8TyqwMD7b zb62OAomtPm$Dg}ZolZ7NLpN%th>J_tCcVoN{!PR!&|UXzT8jL_r%N+FFmoo77rwyB zj8{ro5xVvNHnPi{;1EhrXwQ9)`v|Y9q6nGZW8T0@0T25 zsiLsK8bvDu>O}nCpqQnyx9#?)=8;2S5-llJDy!_3`e}dzTN*kPogGZ|v;fr)jkEVO zVLRcuKyV_^lXm^oEYbl^xHL54o?XdXsh=tkbn-glZa7jsb%CIJj*#xsO~liHVCWZ* z9DC6;(g6WMBu(SKpjGMz&Ykv$cSka8MDnLv08~hNW*~5)#@GES6xbkw}4En zfSR$Sp9WYbR53D9?XyGDNG#QAk77e}aP$7EWJVxp8_};8v9m=z(ibYA7c1Pw4-3or zbUUzwWe_~%j-))D#aS9yn=ss zoD=FA17Lo=l6{@h&vFNyBVs#+*0hfD>4$(TMqeGJ4__tJT?1xO^jb)THcs#(D4$G8*JCaxGNr zLf4P5td`AQ>(DxCvq%>B$c(HF zDKt~|sDG^mP7IFqYvQq(1V#{8l67NSY7^y2mz1FfI-oo+^3nrL z3K7mxp!HVY+`NwbAtdMnRc^_LpSaj<)5x%*_)%rMbnP>1_?=#$WCK2#(iwB>*U|#e zMclrl?SULjND@N|c1N*Q)}j?X(WH)V01nw_J;KQA@`qVG^zjp^%Ym|3F?mmaq|U*7 zQrGLqyvZ6Q3)9S}S3j~@x|bEi%EPct|2!DKqh0qp zCxZj7gsr$!`%WrBx1zVll$xR-Ut6{AH#eY+(ISn*TgedVs%Dm5j5&mJ9NFtn0ar(} o?BX>%aCK~}dBgp`<&&GXON*Df-<-Y#F3u3y-N&tB?~$zk0seP#ZU6uP literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/ipc/vol-hovered.svg b/resource/zh/gui/icon/ipc/vol-hovered.svg new file mode 100644 index 00000000..2a42f67e --- /dev/null +++ b/resource/zh/gui/icon/ipc/vol-hovered.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/resource/zh/gui/icon/ipc/vol-mute.svg b/resource/zh/gui/icon/ipc/vol-mute.svg new file mode 100644 index 00000000..8120d372 --- /dev/null +++ b/resource/zh/gui/icon/ipc/vol-mute.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resource/zh/gui/icon/ipc/vol.svg b/resource/zh/gui/icon/ipc/vol.svg new file mode 100644 index 00000000..c7330305 --- /dev/null +++ b/resource/zh/gui/icon/ipc/vol.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/resource/zh/gui/icon/robot/charge.gif b/resource/zh/gui/icon/robot/charge.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9f66660d511a71c18415dd1ef6ca039d5d6a650 GIT binary patch literal 23177 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 z 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 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/robot/overhaul.gif b/resource/zh/gui/icon/robot/overhaul.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ad2b78e7f5b46428564857c7e9e8b3fd7cbbb11 GIT binary patch literal 138602 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 qxMigjlY}& zV!M{4LH84G>UJfiadyNzS@|Bc;K^-Azp0!>LW=cIudo63t2H(Lx4bnaAqT1oAf4cu z?FkGfa~I4@M=02(+>G3oaR1PB#O9);OE=oiQ_ubRN-AsIB4$IR#VKjMg&M&Pe)hYi ztl8y>LhSyq0THG#<4Y}$}cd47wfdC_t zos>i&C9|^i!0f&N$Oy4I%V<~ojtQsnRh$s1U831vi=&PtJ1Tc`%zCe`Lf(_u1pDAI zy&X~iqTCCE^B)7q7v`?rymW}McDT)cZ>VO63`;sElYhmSi4J>*VA{v?5ndojT9)t> z>n^Z%5>ku9h<3Y;`e}E7&I_u%3Wh%>#3Exzo(@t=e273!PQKUjCTlpH0~aYLKnw296&JT5$vZy34@)j9*?j>E;2^g*e#{jIZ51`1P zA{2{a;pnV96O197RY-dFMQLdfARpo5ONhXyg-Uy*hveMf+Zgb^mO`CKJBIo zw?&`*`8;8j7xp^v)8S6?mKGJ`zY3_Ww6yc^Z#cNAgL?X=Z<*f zeEWS;G$j@-0^H;1B;)n*Ba4S)s$=zQ$cT9g`#W|B}cD}89*v; zoINSX2Q|H;M{m!P{+e>6e$2D}ndm(HC9nYY|K;g^XJYm{>$$hCPM}48-TgkjoZ!9H z@`&|CdTSx*H1kPHWJ?Xt{eacF(|t8ikV<(ygqt3&K3s6+bY_P) z;gMYGoQ8g|MUbW)d>vq^!tXZP&HV}gi`#C3RaeDrs%_u42O3qwHn}yY0TkhJUaxje z+2O?Uif*q|Rz<8SJ)XS8m)2O!wdM0VNV9S?B1CJ{JSZZs@)$naId@!U;(wEdNWq2D zdz>Y%m@{27C4IcY*)~u4vHSgOMnyu5iQ6-!(SB&B9d|78B)`v!-RhAX{(O!{@WHhe z(*l&-WWn@XpUYf>mISnKB>Ym2XLR~(`csC38N+qqb891AXH_UE;F`S;V?pX9-^lZ{ zPiM-U2`Io7h%N0m*x#R)q?+cKHp_}I2l^`g<*Y-qC|ET6otP}88QRZgsf~ts_|N%b z;o=myhh5g-tGN8&^E?2r3XQG|;}C=Vx+JdXJm~kYoL0gltMY5$a~lyBp_XgbWmBVj zTA9>O2^M{NN;z*=Qo)J&n5mVWZw6(AKV}m&JmBpDxkSkMo5@{t9w#0E%qc@ zn_WK-!`vAvBHYGCAaXcoYurkTY0I72 zuHx_ciZz7UCtH3JqAw#x563>m+so^+b>^2m=KdGei*CII8}YHLEbxxvcTb;g8yB|H zo?=$vRF+S7Tz2KB_xN|>Ikc`s-%{o${aVF*bhz-DhT zAqC;pj1H0($?ODZ$YX@otl!{IB=siXSd6au6(#@*;!m7EH%Z2{0X+VeRxl1Bm< zFQ89n70oxFxnNL1x;c-b6Iju$+D7W-(L!V3_mNv@GO zuVUdRIQD=MPh_O#%IH6oUN8usVjnQQ2+Lw&s89ILS#g7YF8ww6NeZlkna>CK6j5 z4CwTSBY=xcK|J{TCHqu)_|4%}!VC8_sYzP$7n##y4+FGBy_+TOlfRs}iD=bVVso=W z1mM#({xia%*bt)Uo0nzL>iO8{vo}3Dj1aSd=@>=S@2;E(V?ugasiu+A6H`yj8wV#( zz`sg1G(>4E)89;p!F5E@ zNtTZqSho&?mLv5xDrfbSN?!cg?*)Lph8|Sycm#|CadvSZas4hr#_1l%K|E)DUU_wfjV^b{GC>Wn!(x7l?dqSbQD(o1# zR^Hf==ZeXR5XK7=6#tnX_>Yn(n}6rm>V!u*qyn3GX}CpNM&YxCb=oy8;WpJ;h{8>v zEE;P~pvL+Ul4|yRn+kzTqzEspM7zyVOX@XXI4Lp;q{Rz(#(;SrS5YqwKc@Eb9?-Vb zLO0zrMdzY1OIXb)lLr!RWW$VQ24e-KnR>!358#_@Pi`;gFUTthoOtnQc3Y9%6>TB* zpcVpK5VMOP5EyV_(GKJ2v}r#psd3=(fvirCbVMnbU$>}`U!+sXG1H7llN(x3DUn&w zd$;3T4z+Wzf5C4j^gntSApS+yt#r(lxi*ZC;oOx?q=;q6X(!ugC_t+8zjSAk?hPTR zo=0)uPJ8jKM#)L%;n)FZU9YIUdS+x`{jfg|&S4lx=#YtLUpUE?AJKC7&U+AEHMs0Q ztMLC{1=O7H|7hu#hok0v?m6&%v|-NW*Ng9dzJKxidtKSL!Bt7%=DGoT%SX`RlJ1k8 z^Pm;Lhun7Xzw%g#xMMot#VV+50SiMmjHv?aT}x$rHYAhoc%C-}Ym1UsrgXtL$4a9P zLZ_Fg#PAR2$Jy3O)0a|No6Qp`Huw_TYKT8>!4YhGgatmA0>n@~c`87d_v2!TL0bSs z9YEr3^G&3wfgNdjY`unFj1Y@iSQ3og!Xg`V`S2Lq4{fBH&>3FxCOz?)EhWK(UBRMG zhACkH-fft^Nt53NV4oot=)%$Owv;Uz>;^Mt_&g!FssODUY(Ss)S$VzJmGv6p?=P{z zV?T-p>U8=uEg(&y8jQGlJx-uUUZxiWp^2?2KQ3>w48K+SV}O&Q#|7JA$N3e=GG+{_*}7b&&smNE8o z0AGddu$E#`CW{Ox&?Wchx?I;yghr_fJ@{^5?Of|c*s9%z9;vrUvBl{-5;PPKJ4#;X zHUPkz0la@FEy>a(P!wws$#~v7i|DE|)|8Iv_K>`2!r|JLU=r5ODR7X^*?fA!QucMCsqB`G+0Ern+?u0x3{<{g!w9I z^4m6Z=j+}UlFMh-sMguZo1IlPN_@3cM-~C-J5|w<}lRKh=O@eS2IvFG_7(wKT0Y2nZ}o2js-) zC%Ri!m-?FMd*dBOal&}`B_o&cesDrL?ydY5uVD4>L+k^Ra4ZOyzLigONgDT!6n zl{)1$roz7VPjWRr_X27_=xH6>7_i!Llmb`2$^!9ve2xY?3m(UoUZqdnhV+hSu5bAR zvX)&dQHA=c@OEBuMFm3dEt`Uy%-nkDoT(Fyu2wyM{X5zlyKnt!T@49UTX*fc+2oX7 zKsZEXby(AUGLV-`icL;)&ZRt(l5P7GyILtzGg{piKfakvPIdxJUGZ#&9GML_L_zWbjwp8R!db0*i*&`rQzh|hLxAQFZsl|eE5;>6du&8k z#uzm>v;WWAOmu*A%-cBZd z*=kjYS3iDFL#s9Gp6b&j51gYJ2;$EJI3uSvVN)N>bkY;rtx^5GOu_WiQvYsl$KG1i zIdfSS&Pu|Gu7HtaVqJk#^-Eh$Tx5`w(eM7Bv80{CK|U=*9-;xZHD8$JAEG&G(K2Em zGSqElRZsq7#t>ZDqNi1AY3s!is1;7gCcfOcy0m|zOR=6xHbw?tXkUl3H(=-(ii8Fc zw!Bk8rEc<{W1)C#3jkU%5PK~^81Ga05I>fs@@nE-9*RfGu!Gj+kg3|5_>LHV_((8dY%5zPlS*c z&k#)cHdexS4X4;h+78|x@-11hgg>5Jo!zYvDjy!A$gs#2ut%+ zGRKmb5^dqsGa!VqtB_Y_WBM0NRC1hT>xJIxuu4WN-J8$K`u-!i{6v|(5g2R#vo_Yf0-`G%=Ux4b*9tU48)9U*YCg8&JdYGnsA4*majivIC>TS(5?Nadzy#E@CwmH;ei^jb%r#Q?BC+2ZM}Epo_mSZ1T;><_K& z00ZvrHZzhKTrKrZhxTV$X##oMx=t%K9}xlt%nG{#D)U3kp2%zS9s9gD5CLTxWIOH{ zAA-S$r(h}yMMn>9@31blFTdZNNV^;x3(Yi^nm)JE11pJ#qFG8GD*=WeQ{cl_%?`~W zI|irB*@lOaMl?BhDXEFHMEIR$%r`1#ZsXVnL1_Y-}p{K+r) zNZ71)@;T{op2N44g(Ixr7iB}>mQlL5m%Q`hU)TNH%{V#$VqHUS;ih%>6;o;)Pj^Iu z5*=;+VQt?cjpb!WPBFKNZ*$pd*B_x<@MpIO8FQZ(b46M((CSNH*Z83pVeQmXpQM6^ z`~K-=YFOYM*>f1T_>&09P|vP3;eDh8ro$w;B_F7tb}X3JASjs4{Xd#~`hS&kg@>YU zXgb^@^NTkR0dGT_5Q>#ak^j~7ezLg3HBp-Fl6S;nJ+X*?Dq)vw>^s3)d)YL<%))QX z1!U`SlPl!Fvz?r=wvQ@*7g=r=B%qf!2&hkV1W`ynPX2Q4IA+tvZ#hnFn2(5XiU(4Z z^wouitSt9WO3$4f(&n_B4{_2#!WzAaU@!szoc~=0kWp2rhVs%D)1gAtDE6+iAogv~ zKhMF#7*LG6gW%E2>y-zd@d4Ru+;#g+-mFqM%k7$FCh*jviC)RZgxWmGI(B`6N*E!hAJ=J;T=66@vdUrhXKk=W8rZ)4>h6^>?lJ({<)W! zjSZ9n&-@esA$5}9dCI{IJDl>m+bJ3SjwhjqfR95EYZ-XM&chSn+U90#Z=oiQ5iX6aly^D%?h6 z_PZ$ZjeX?nrc&=slvFzv;oq;V|2{mL6_+{fKT_yhmU|%W%Z&M|nsyJF^}me%N#q4g z?gz`nb#e7H*1x;}Lq$H;pF*md`d8gP%rE$SGZSg=j2Pz`hvDYq_cY%zRl~vegotp? znYA-QhCF)qugU)WcvjFlG9&&li5zh1Y8bhqOL3hw|sIefzU4EXi$xZ}HugTFyaym!eJlJ*`QU|2AH5P;j;w z>X8#?ofo8in9!{idy2e%4iia3jGX98NBh+yQq z;iQ+=+?!VJNo}h7zouq{H!RupdJg%3)UB8U@p)0C>CGmC<@|;2l^FOSZ3x}f zol)m}u<3ZwESn}E2M+R)zDsI6^*?xf&!8svzFqrDu2fP;p#%g;LTCyas-OsI^nd|T zP*FosK|!OUvJ@c+frO@^s3@obS%``n5EYj#6cu|wRAgB~QL!vnEK9Lq_T_!go_#;h zo_XheXP$Y#>nCQCGw1*O9S4ysMEFR=A;9h0jkj!X)rS-2wlM|B*KbqUiOVImw^|UhS4)9Lu zs{@mFDK|wQPjIiCEN*Elq026Om=uq49zv&BFe=AxxEP4Z(fAAO)d=cSX9`6OWWXyB zIQE$fa>Jb!SLPs`UMx7d?fIJJ^F&WL-&zr#7BGxUI0!=-&7HH$5!*YuY!&NK;yyT% z{^wHQl0mvZy2qO4|4iUjk7B5HFv17J-kKi7ADusU1ioq~R`t6(b3P|zpGe|2 zF_}tm;20QJMF`deHy6+7BszBnDDh(ae9W^)LJ@o=mxK6H^}xbRTwUQ)0A{rDEQhzC zoS_(+3Ux7yjS6q~WCD+V&*!rNaO!VzmST{>B*H7C$vW%G2fZuJ9M1iRk+GCXzu9ZiQ%g=P&0`npfo z7O!xZO^d8SzzGfA`Qxi>8|*M%n>8+tyH-2g#vGjAwimiEMA$4n)-z+W-Yiq}9AjPM zEO3^|QvK3wBPFF)$EBu=nMH`ar3Fj(J?QgYAS#INrYG1n(k#THQN+hJz22AT^5Doc ziaXmb1UMR45MNKtXxPc!-4~s20FoilC~XW|@x+OX7k|2fi3GSM0*$(B%r?yTey4en zeh#Wt#_De@IuXqP!rHsgZ445lTGtQ^E5ckdc0fxxa(8VwHoY}$;-6$Q3Y~`)ahv6D zHEV1%+M?ScVBdW*M27Z1XuS zoUyy!^*$wya#Ov}J=61Obdq6FpL~s#I#xQ}qG1P$+j;G0U$eXaXH@Eb#2SrKHeI?N zyNCv!p~1_-CeG4#d_p@-?IYNYmoC4}fqQ(@qUO}qA4LUp&Ym2T6#(3Q{WcsdLX)t3 za2R~!(@To4xG2ZaL1&WGPr-&~x_1^a0;E2ZK7eidFg+|su?4&bn=Obwg{Dh)fAawd zngRMMaig$ZgNfkK2@X0b!HbmKMDC%!PdhR{e4~)Pl8&vUJ(UMb5pH*TOq&qv0ZN)M z6&(o9N3I`IdwUm~PmszSp&tS(>2h-)Syk|`tDOG}6(mIT&{eNKmF3maetvDt|tOjv{jxlEXBPf3TN21IgC%?P|o^Nu4l^7l`x-L%Rd z4uj;>&(mi++SL`&B7eIvt&Rg`U;r2k_NVHxIPZqvdIvQdxoOaV%18{a$XhSZnBZmq z^Og8UsE0d4$J1AyDh@k#!LVb#zul$D{Dk7t6;OEHWzy?V<2o5eH7BeVQc5VK1mCuI zHoRVr(+oC(H3b@C~1#i;K!P{e+3J;M_L$>QXQmM`ZR^FitLA+l`t#@Kj-5C6?MOyA{1~O|$pMfk?l)f> zoyBMlm-h30fx|dJJ;vsn^Da9tlrYG_n5)4pos(k7ONE#8m_E&2m+McLYd-DzL3E3J3Y-r+Y1aWNGVJUXp8lR|z z7l^>?zgk;3t;1PDk|t}=Tj=OCApfZn3mKkT)p?f2f}bP>)YrzcF@SdaldwVv?f>*J zAfjPcKqp>mvk+C`0}_4(gnrT^p<%*OpfFU53rs|B0l+!q+tmPo)ghCO@=>60nH~e3 zY*~n5hqdqy5xQIr7I2W`25W>wB!wRTr;((P33VW8 z0V<7m9QxM=)>5y0OE+tvmvBjDze5{X4R%neXfVKEiMQtK)i^26h$gDEK=U={0wd6& z#aW1mN6_U)5!fUuLH%dw4FEj$(dFN30#?1yvDk5U}_C$;5$kRu! z5UqC%=00G-*~i4)wx7Z{wNbUVTND;I&m0X7LEafkN`u3@&*ZHCRyCHH)?H*8`ny(SRg8^zgJEqPPuo-|I?vqRU>zqt1LD^s;jyJJ_^FaD4%m(oZiU~ zOd7kWU4(g=-(DNlD*q_rjA<0vnfC>51L;ADm@7R*M4->D-D4g9$Sxo7@2Ri4x~HH` z?Qc4lccHt;fLgkopnpkU`=MRwFW_Y~UY@dJ_|0L#vEiVn%=PN>yl-T^2v%F2t;$AJ z&MMf7h|n&Ki1AH-LNM%?^amjm$A^Qx>*BkV*G}t2DwnyZ$P`p1#tMb@SQUr$vV!8I zE$umTS)MMPQbO>E1E@Z)Ivitc?Ru26ontp}qBd(KnCP$+{SvR zc_#7)b4Z+u%=*`FP96#J3EM_^^#1OC!q=)UY**$O7g1dnt8kx`&enS`H|W+R>h=x6 zoNCi3+=J>$1x$gi*UNH|gjN|n=qnGSBJiHJf%A`_hF@<8afxR>zw7KY zs29Qpd#3bRW@pdsXFQSYt(v(=Kzd2q=x@N?M6J+R^;2U_UIl*29b-7ufH6zYu2FW)?a->@IBSpR}`#>^meRmR6IuPolR!f=8`AES+2>2nFQF!QuK;c54E3z z#fi_iLJmON)Ex81JC3@zvAckKyniLlB=zZI9Zgz)_AO*s=)O$c^v0aphRgovbHWs# zE67eQvyqfM=^L9-*(0Td6!F_Ni2cMqFpNWoq&V=QoQdA}#aX4CG z*xCd>X-gD9z{5TC}yte7tJYcj~J*j$il06c$k2`wHx;5JE0P482Z{dGhEn;9bI7Q;j% z)~Pj}Xw)O<@SX!V@rM{QG$pxQqr<8ixcya)jQW^^4V!>dPH32wb+8g*eG>P;wTt<7 z;%R=K{iJ^ABW|uE@jP!a+PNNeZ0-i~;hWcKT?6Wj-W~ZS5pTG;D~KUiT4jX8`X~HR zltA;DPMqJlYWkdD@u=BQV)yZOAn>SqEp4ZTYUXaEENDTRTZ(4k=Sna9#;J{%MDI?* zfJV06y_=|Ly<%$NnXtaOuNgEof;|yh;Nrhw{daE+%4^tVintuP;m~z-D5u7yU(IyW z$qqlr0H?cBGY~cK(>Y;XaaM?iye{BDps|!$ugh9gQ=cdh!&5J9#Mc~B*($VmDl659 zc3>!S$&lJy{1>*wwcqaBM|02gQjdkwC$mqn!J->wfHB(~`%tQI2^Syu&bi{KUJ+kF zzdtWSw-3@4+NP+aM-qDbLOdE&U=pLwBo#)v`C+ZZ<%rwqaGZ)=;7JlwcH*8K^3yyJ zOhrJyMT=~gsbE;~p~ahx50gA7GO9o9GmM7f3IonA-~7rw!;sT1jM z($&Z{`;%=hFHXj};S?*k#;@j5uNE~veRA$}?gP;G3XG4z5O@4|q zWkb7zrR!xKc8x%|J`{F>O~_P>H#mC^oxGGva_*=KbaRzGF;0V#@nTI#oBa3(9>Qd` zg<|913$qy1c+xw2(DjAWR?^|qH9FMo$TEV!z@zQ{a$(WnelANrg4)z=vSR6uxu2jP z@ExPnJBMIA#?!+vQG@g|HBVP|cEPObB>Vl}XYl5wz>V9-tp%>Yvap8qcV9_idm{qeJ(_JG=8|MJFq5=xg(D@l3_v+aDPC=M09JW}Ch)X%XxDB%!6(|Pj@iMG~ zo?{EW0uX=5X>Ut<0XtDv$e$@d>TBteXel9V@mB11h}7AlQLS%1!SWETI_>F!VAaq; zO1M1XCjt-59L2#q;6dMqOWoSV__IM~ghbLR$w#%-5!13w$F>+{luR*kp{BFK6i&jHp8%f zg1HMs(J|a9y`A6u=v|~Gz2I4HC_g-yx544?Yr zV))u{#E0{c+^UfWW2iCaIoveq1L!G6SW0rCK><4*@FL}@jp*N?H3XDl)#&GRaJE)f4%t}4r~x9_MHe|dmgSd| zyW&Xrb_hqc6{4sDKpw1mJx zT~i`wYT+uE@*)ZLGdusHi`fbh`qws=g!KdfG={hW0LreZK5GC#ib9cg9{0!i8VQQ@ z|1uo-m0oxLM|xF@i+M=w(ATi*%e#~$$H=(f73_0yrfZZqiU)UhVaV*WfTxYtj5uSZ%z{Qy; zK;NA@J`JrJuF@{I%Nid2KBcPWJGPGYa`~em$%b6xPxtO;oZFf5INZ_6!x~PlZjau^ zwo!og!Y%Yi$0PfA(UFbU5aQ^kJGXKB^tGtUwg2(zsI5(*5%707K(Z@-bq$IcwSf^=$0XyK&fa&EQ!e$H)1 z2W{8b@apivPb4SX^wH%!WLX8=DK)LN_lybpe~2+J-*=aR()0HK8xaeE^S%Y^v@_*M zuAFu!)RQk#1%09hb~gNtf|-!VLxXJyzduQB%WB7prP#9AbB~1&;v*A}lZ&PT>jp z@ccY~u7b7Z*Z^$W>wztmqSpe#6X!X?sxJkLG=?oP)zx}sEy+ZVd>CbQEDB7R_3`Frd6i$l67L(Vhlqs76}R&2Z=9lcr$ zyQF9>h*7nGC5fm{XHKge2T7}DAL;>2etpFendPWur{IFf-X5sE!XJoaEd0@r&iy)! zx_LevA(fz9tj17#dxswU@%gm2{CMVS*T=&<)UbK~FD{0ridcn(B z?y}A98kuoMKNgQk%|pZOU4|C?!@#T$^||U^s{^p< z35tO1yUbwOsK==d@&(Rg*gsdNbX&AutAhI0H8o9~CUsHKr_yEN<4Zr~$Ytv~y=sL& zlpd?C_C&vpsZ;bxe}3~dDF{aR!PtxiJfguxh66d5W8Zl00jv{#L= zNdM4?&46E9spvoU`6vMAhT5|Jpb*2wd++q~ZtHdxgBDR!cK0+o2Lzn``zs&3QUcCm zFptQE!|;*UMKpxh#mS07l!wt(a7PWp2x6K0IcvD>VmDG#ed29{?u|eal~u+i+tE4L z7uiUHDRH+uS*No!p2i%0+81Z1>OMY!=u%&FV#Ex-;nO8i6d{ASNYaIAJ6mM_c(?mr zQNgM+&vBjxU7dMECrYt?dS*N<4O6B=wy^yySi=aK2#G5(s)K6&jxHgsq86@az8s`t zc^vdVKgM;NcMSO~nR8B~{YKG9rShI&^@nM1;v6C511Sq{*iMWbiXWvd30 zpCdU}TMmj#9o_j@jtJR454t-##8Y_ADqo+rB-^5q;Z34TnR(pu=(509iT^1JI6rtT z=5t%^QX4!LXazc{#qt_;-%E{UlUl!?X*;E22Eh^ z9!9gq&7o1KnE}Oy_yV(X1JcckIl0?J1?Im@R`7H>vRGg6z#wmum~qwlFGU4n9RTHG zdsi@7FVE7VjZ*ZBYe15yAWj4HB%lLG1TU>wv6>h}B0xB+JJx1RqJrl@5n~**lAuEY zFaSbk8POBU!WK>5+O~q8J(#t0(g+-!dBl(lEmGIJJ2V zq&EPF3;Iu(jC288&K^e z;O!#p{qglwIK+9aa<$n!v1wG;lXo}g`217Y#2dB#8=p2>(4#JwOt$%Q*QYl^-D?#Q z;b$mvs47+1X;#iZa{riJU6uN0@B>^X5czFm|5(X3LJ`GK_^wHJyCRDEvLToPY3BLdrgV z5ZtGoKR#2A!ShJex2tBK9RHI#NxnIvMij-EPi94W7jEQYcS@!!$JZ&fMMP1fda!;; zg%kcSgXYwQIbAW%b|WTjw0+l}>xk_~sG}Dz>R6j;-#XbnDN0I8o>idZpBFb^30RIW zqSk%vnGBrln!<}>C0j%=-Bp_Wj27sxquX0ujQAEk_!LX9e@~Cl;peNA?-umgkZ1iP zOW8In@%PTszmoNOv|9!TUjF1!ug2Exwq8AR5lNStK43*EH&ciEqavT9?6qayY{ICmx}+& zjjAMXY&x!>u?QzTI;5bCqlmX3pE>Y4NPts7%F z30b~}X8lu$cX0h@^d`B)btwtm8e1yz-Y9%Bc0UuHwJR9RF(yS!`fK?cNJ}*Yhn3bQ zmX4-tj;7pD3MpJf<&O^-f{*KlPNW?P%D>foX$ebq_{W)Grcq9KXz9z~MN{0EQupmt zMNiOZ%G?Qn+1v-m`Gp%g$G&HG+^%nj|ziy&d(_mN_>&1X(~1hcR*hsvXS}T#C$hi_SgUP~1BW#mUQW%={mxJR3hv4Fcwer_xAg{|Y zQ?1WkUqG~cG9C&*swvM#7}814p#(|b&UQG)Qej%}0H^2Zl@$~Z-Bp{1obJD|(Cu|1 zXm`=+7hnpwJe}hZD#FYO9L0~FQZdh~)RBv$XYTapFz%=b&Wc8rX}pK9??Ldfz+s2g z;c}EnUF3PIe#*l1&|Vcu7EMZ}RBAer7-Ol~)ey>pnyWU2GT7?G4-P$0B=bqMV!D?y z&R`x{w&}~=;R-BIcJq)xih1Ne>b;g^lC4_{2OY;(#IZT}Q2WmGk{`<1DGzEQ z-ak!cqb z)koMjP>hd-?z=hgIquv7mZMvoszULDR&Gua38EZ%QvclSCed?C-eTR+A}u{_QHKmv z))SL|jA5P5-*)!Vl`i|%1=^+C3-Z>BiUhmNSCK*)Z45*foq?O50~e6HZkSv)o7)@cSwMJu2(i{eWw-xWH3LBh;g%e%sv@8Q z-)ZJINanTGBNyC?!BX^c^oB2rnK@mEzp`BdD~1s`MkCgTz1Mc@k>1PaT#(J_a?auP z!1Nz-+bTL>wu3!OG0{ofOhRD~v?`qHxK?e3f=~1~h22LtY+wwF;%7L>PwWKaLNH;0 z5^%v_is{_e-{2RIHp$pq`mh=PBDB9DRyMNI%=6d~_rMuM=D%WS5g-&7tfe=DCAuRA zLsI1&u>2P0$fsH7!LsFAaaBa|v}km{a$0k}nx@kchycRr2ZaI8p%wDMGK?L^%CGcQ zrr`FPg^+oou;!}m0|SsL?k2M6G7M6#sJOG(r*@Fbu<~4e_Vd2dONl);Ijhm=mSjW% z>1m@&17X#yX-HU&oGp6!W~qnFdVUSh?tn$ExR&p zD!d)Z;Ouj&>hgM+&l-)*`3{pt6gUv%b|pqBN= z$Q08=@4QPN_T2sPVvgzSIWl(oV~*L}L=(YR3m9V;5@`SrHY2^jG~p@3aUg2!#jr(F z8-C$mM;#uh^4aqDV3Gtj`NzvkKD1u|u6hDAAW(6LlVPZ0N&Z(C3S?cK3?nYpqLVbZ zBs%!l%lr-zcuwgB$qL?u5nIJ(Ek=SbG+hNig%O0P0vjag4y6~ARezqv#X&w(l9?F? zBZi`-1~5R{R|Cq!mGbKrjD%XJGdp5{Pg+A&teF*C0r9vjNQ$3obEtB?4uJm-!XK^i z3OaJ;cz!>pa3Pd}Mc_$+!AoodvnSum24gwf`L9z%|Ps)Wxx99c98oJqX4EC5&-38%e zjc7mzq|sFhiP;sUSCR+~0lU~@z{!pBT#WbwkmLXR5MkGUgkh~=pB%X)llLECIHd<> zdh4GQ52%WO%DBXTNe`;XmaU1**o81B|EZfezr3%twUIfC)5x`ofW2!W7+3pnJDo9_P}s&Z51kCcv# z0*a^5=7TMmd1_6i&w~Jqg&~w4n5)nysc~)pn`hMdxj8RH-K3Iv6h{lMLsN_|i5Y=z zYdv+<0|@IYeW;7uxP&g-g(k+id6@2FPcP12-Kn>(EOc~v!Z~>9rw%vYHjiz?kxrVx zXeg8#D=Z)n$Irtke(vCgeujg74?SDpqku(bBzY!pwf1Uvh#byxWk&auPdv`SJ8@I^ zw`=^ZO9Y;MdfO>UqdQA8uB#x`L7k6+K)7Bh!+?)fjtRCt@f?}sQr%5H5>i4{gz*YX z__*DlxXaA@yt=Cw@Is>P+`S^mgg-(Ar6_SxfCZZ-4%6Gr(u9yvNuexMZTue@_v|7) z716evc>^#rVmvDp%m4JsB@+75kK*5Z>li2CHhJ0U%I(28?*gPOyAeiAW$;mE)BsA663564snY{2!>DoU| zuhl(?&dVhO-2Kh{uP-4Po}uX5aJxQ6Du#0+B1*{UVjwqd0Q|mrv7{JMRA4`Y*&~}C zvAKl`T*JiPgZJX8J{zt(CuCy~oHEIKK^vw|&NPn&74{6r>MM4-3F`Xhm@toj2I7M~ zUf`q0mh{=$XpB4Wn?&94eqZzI5FolBI_`ev*}vM8loCx5Iwo-bX8s$J<_xFG)x;3? zBYpW{L%efYIrlf(f9OS-av&+w_Lk&p%q^>0xsXFQ8g4-N7DNur3fM1aSy$)Dn9cVz zf4tt={`2OWy=>gpWTkNAaULgW{g>c*x85HSR1F%-E^Vm=I^X)N_|Qq7U&Frgae2>s z0m{ZAIg0w)ZoL9MHN74|W@gGStf|V8TzzMQFm4l&!^K;Iw`@zfGU2po1K;7vj&^~! zlj`!>1Xn%kB`OZ_&*V(_%|!T*cYcLmFM2T7-UB@HR+6dy#(-+}gLglZOV_rTGs#9N zd^mx$JeRvpIj0V>FqE<={8j$40JXi}AR@kZHIotOfW?lKS_$ZdMQh~ICN}-jyCe?0 zYfv+rF5wr4^XzB4|LGm0FQ3*hQbOuwB3g7;W^AYc#Q4-aTAR*mADJOAI{fLgv4`b1 zhFLg~AYirbaJ3RxtxD|j4yWVih`V8hiQPV->hkHIxEQ1>;L)QYKyY&GF2*4nmtvB0 zGkN{KVX0NPmTTVgKEKjc?yz}$S43PJeRp>48jJxJc?FEnOJ`I; zM$6`8nv1LM$!1B!(Thd9Hm^}xVd!&;IRN%d*$r$-uiF3dZP1$oBYv(Zx>hCwYW~E- z1}cO_;RbheMK5gS_^yo5OtUSg3K)f)d0VYGmca-jY@f!YgZ>4aG`|*;-pWvbFh+f6V7!*(JKOJfksBB9HNYtF_O46=zL8&-a;mRe$ zwqpqD^>ONNSw z6J9xS#W7u@!a;z(BtgimagsEEWWjKtyYbs3v*?)|gyc3SI7=Kq&Y>S6B+G<8vq}ER zqia7FsQyGq&bEh^Y12I_?^UaXQ-r+Vm&tV2cOH`HZxb*O_ypPH$!?+VQd%>kg0k3}Xe@0rByK zKZc7J`=w>{XnGjX&!fhXGxT;9pWLFH``7w;xSMJzB2x@Hxyq3401vlV?W)LiOYu40 z$YgSslc&x)XL?nHt=o3Mg$+Zy&|mU%JCz~5Bf30ew~bZZHK+0SHrrS-#rNJtGUE}( zkm?}f&iUhuKl8EsMQazs)ySVsFT3!vqx{>w@DyQl@YEpB^~W|ZRM=G`SGJj-ceTF# zkbN|Z*X&lhG4o&my|Wwn`}Jt@htxBB(Tp?cov_6K;?uNFlxuI9igo@RGH9$x9OTN| zA%!{D{DyXER@e?0VVUe6(|l%8jLU{CsFB~kI^aGP9_YUHa%vTzUW57MgPPlGW&-cD zQ)K89Vx_mS!vVEWi)M2&BA*%hXNj)B{4Oq|=M3F=aj}iiGyN&za}LWtoq0Un2s2Mh zwk7I9?I6xtOnWF@2ZW-D>s1z_JrvzkUHsw5GGVsdcH!?c7cPG(oxdb)Q9xA`<6Tl^ zUfuMe)nwqpw_H)Yh1s96#iX;*#R}nL+s8?atAx;icgWS?(D>&YEFV4GJbj-1>-4VK znaQP0(cf5LXSekwcA<-I?9cZ*ZjhL|`~B+;$Haf7Se^7=I9)XQ7<;$lUsADcKSt^1 z=X%3pK2+BJ7;`nvJ9i`D&WGLSe>`XJJa=nV%*TCy{`mi7<+9&7glN>rJ#wDdHEB8h zhgJe^ngSA6A{#2uBOPcm%g~*+)3aM~_P=6g?=~oA7R+u2-tk@LSTExgiG2)cybb~8 z{Yso%Sibp%d&1U|uGC@VsH$s4S3X)zZ=~7e~sOEsHH^B>aX6=&s3?KU_dYuoHFYEDXxA zL7ki5t9z&NFEn{=<`(6@olD!)E1NCovf`TQ3q}&FXSJgxzgm^UqTSc%2L(U8lI>y>}i4<3(#&6@8A0PL5E&|sX zP{E1+SI=7WpV3mom2W2g0RMyY+Hgfy?ZbKdaouu+_~(p&`?QLFI>Q1STMx1~Fig(|#=RkjBAp&_`>cbVwkO~7I(_V6u{{Q3 z4EebC_{sEp#7|pbHj8SfrnBRtX1#85Bd@@cbx~#N{5JZ~MB-WFZN7&#XrL&WPL$0L zbqxw{XdS-kJh=(?Sp61nYmfhiGspy&iyqMxS8ok5o#qiE*u~8@e`XX+28veSUXp^g zI7>*0^6qo+%<9C>Aj^)P{aEyu&?ooINhaI2z0$mHWbE7*nY}=3^65wqD=BT>ZC8Ee z|v@J5_yZ_mE6B5FcT6rPBw!zrHV=J-d-$7QS-Pfb(s;fxFg@ zE0`QXIP?g=d*xF>&l2SI4P7Djq)r>b?d*H7{hRs)(l|7hs!O6k3DVvox)T;&ICUkz zaLujZQNE6(7Kh9W3`zf;;)1OALjGirY2R{c?S%KVBi672*a0+F#M_HF zeXj(2!HQKzx!bcb98-Txk8kFu9XTIJGz?3~GCz4z?3{7U7fu;vWx1kuvX zA~UA{aOurb|JbfuJ_pZVN6nKi>9bj0R&kxr&!qS0hpty%L4~{6liB>hIJs5Am^;bC zmeg(FS68#)50G3B-os^l#I3bVHo4L7p4c>+&AlKw{x=8A71!R38tjigC3ya3VpKin z&J;GNCjrFO&0VFrmn^u@8+}$Azimd9L1w9WXz}%R%i%kJI?r-v9CV+WWZ25DjbC4M z(=?b|@K?dZ$KQ%I1@h5+XH1M zY-HVY)+IXcxEV_hH@3CGyhJ6MrIUm4GK|ZF6x9x! zzUW;4E>v*Zu%*cb~%lv6gPzv2v{L9?VzVM!%`X z*?1aFJtrFL_Y(FN+^J%qL;mE%^i!FnwQ9et-*~<1Z%M>kV~?F~+JRhCM)sl4?Y#L-=YJ!%0EHMY!bqU| zZ}u>Xqm`k(*hm(pbHyMh9nTaP)ZSSjwsP6P_5vlKWG8dO&w)nw@0Nn zPtfHNP>anZ@msX@MZH!<6lM*4wY{cf`g7d5=$u{LCYfxxD3yx*JuC9`q4K-sW|lJ! z6>gcVS5^FzYU?#6YpHANPIt{htM-mglt5FoLNAX%ErNR>)P*Z+#4^IIX2i>yqS-tt z;4=}&Md)NNighc(X)|GJhI)FsuA}IY0#zp+%6D&&3YR`){?H=!4OtwXZOMZ{KTMVl z{zIP+JmvNq+E(_GEL(nr!FDt~?aCYhca$|JAJC{??9#1(>$qS1HLy(?sSdPDc;6b4 zALHTgSfBK#=p^UT3_2SZlRk}tKsR8-^eKtdm+^r{+=IU~rjsXb$uSEpV9qLT{=#?0 z=uG<2-ellT+Xn%VQeELTI9$%%bhN?x`2M1{6Uf=P7uJ8gcZA#Nuq@rj={RGdzmS3Z zHNXAFCZN>@yltwFFIJ9l3fEF1^Z@ZH8y(*~O83J^E#YjGMI9BiRSR}AH868kaxJe$ zP8p!XF&ZYoq;&_0pm{*90U^`@sQ5m()u8m$Yu7GnlOBI*!fDDHcKt<#tehuIMI?wk zJ=$Sz1&?)&^g{xdJT7P(E~k`j4M!KTfs~2eC~G=^7-uUzGXb=dUWZn!Sy3$Jlx(Uh z!G01}*oy;4L$34oMSYM>mnBVuKCqgO9=5q#6;((~2>*Cv`6I_YQ7aq{?*BS{k0($& zuW)eI_~(^#C5R<~!#HQ)^zsw>v-3Z8g0+~AyT$M_3sDMnU?QvQxV}6jhcUMkG8pL0)(H!z`U5BQp zBJ|){xNEcAAsqG$FzX7-T_N3;Dat($DYdln8UPhcQ$S&st3!HX1PkvnB)ni$s>DM`HDPXW(G*IZ>{!E9vV9GT)dBF}@!EnhSv6zkoO~?7}tV;&9Y4 z61Zc}%vl&2e;j|ttMJN8_*P@ig)p;Z>GoGTaNjr>ER_{OOoUa_`^4t2!ib|1bdppx zQ(|6e4MK~7bR+!XOE_I?cI6?;i~ZYq01yM_{TlNHu4Z?YfI_RPT7`i|15n!vsXPe= z_)76_6(S-etz9A64pC+q(%-)FU|aw@MuKN*cAkkN`Wis7nD}2X1-~}0wUF!pz?c9N z)-GHNrP)EY=s!hU4Iu^KPs^?TJUJ>v`R_CvQS5Wny?DG-Aak^3X8ZrEC^fm3@9jT1 zV&h5a7r~28HTNAtIW1s3GQX}26I4X*U;Kdt^Jo)RiebBsK0HY_uix6Hda>7eY3I?U z-|yb2s$KOUE2a0$i2)qt2j`P70b2>b7jBd_r`12{_D4TXe5Kz*W19SaOs^O_SnNG_ z%Fx$Yh}Kp6Tor+W4;B4fc;o|ri>jh`FCSVJN56kA2~$`QWm!XpBQ4w@ccyM?P@e;p zLi}Q1@=YBl^W z7bl7C#Lra2lN7U-&&YHU0&d5OvUT)quaM$@QUO17Is0CCb&j51;6z(7R0#iL3kl_X zn{2OSLHL2<@zWB$w|9*XnCeP7Ea2Prq>qNQH78T31WS&tJafP1AcZkJb`9&+foe=( zYQsn#wQ5!b4DB(@oyB)O*BE~pvr+BvoxO@oykrBtq^Hu(JdfX>+o!jnE*roL;0V2J z_nMLHUi4m@PqG@yUjfhf^YsA!z;8nW~AFB|FnSVr_Bga zmNAB+mk<7?!Z;iIj&oKu^Q9L)Mpnbk4&hhFS!D~uv1UUPAN~$zxxUAABKg@E;{2o~ zectmqq?f^9d}VnL%2E#VrLFowg1xqAkc4a>R9kUto8^QX$ffT)0gv;!>fq{Jk@Om| zLVOcH2?ctuD2pX(+INqL0rVx$dJj&O*=spR?FF-twDZ7P&6m`?t%9^0bZ}`QXRS#_v z>;0e~0TrFho2Kq-)=#RJ_mg}$g&02)5T7UmN^%se=GI~uemLe{stD*&2g||%Niufl zBghDEF41hUu2*0JwKkK zGDV7j;>l9Pi6sXqlVqSx)MH-g3ONwyFz0MAohvkFS90JdCr1&uiibc9o8V~GgJn)! zVR^M;Bb(P1pIsx{6W*q9D}yO7JIXKP8)5&1q*2jynGL#4<>n4)Vf%c^LNmw^n-BI7n&IBe3lNxLTU*NS;t_+dGD5 z);JW*mdG6A_159z&zx~17u`v3s;P^5u=8^iWSg-XeOVK?By8^az!PhzANeShpHSXN zCp3JI^tl$$x^%(48P(w+<-%t?)+c7!PEnozb!>D2!XWC8y6ap?Hz7_27*Gce-DeS{ z!rB%tn5qY;i#3HV^kl^F_dRS;=cP{~5UiLJ?l3JmK$$&)T2}QUqTN$lgb=4BNaBOQ zPdKaW_w*Q7F3p}tpew2m_}d@m3N_b@RN@pQt^0S5s|ME$ZbQCTU@AYk!dp^P=4)jh z`xuHDFRBlq+<2q5aq?owyL7vzYjzU$CP6q-w^}B}PK2sACBo#Wh)&`Ob}P#@14Guz zAq*|JARKyQ?~soRBGoH?jKsQhWCW+RB9i^Zwl+23;`>Z_-qzb-N$>EeP%=Z-!bMyv zz&Pc>WS+M;02P$Kv~4iE^57n#^0_`p+s8j(8rit;yeD_N8AZ9Jt76MMU+7-#y(>27 zKJnC?7r_Sr+4U38!QnY7cD2?V{`NEyIsO)!5+leQ4tYQ~ysp->m3rYFJ*1|_qeh3o zw{w8(HC^Zk0T%DNWxb=Zl(cdoDf3f3Fa!-ig+_!q1Yi?}!-)bh(v~z@eyYuh+x&<$ zU@IVOd<8gF8{<5Z$^<&?)9qPZN^dnVWle7pDSa3L+r|W^in*3C2BEy>6k~f0&3Ba( z?6#Y1h0|-`*6XjkLfnUY%GwUkz%`tcXBx`?qJ-n5MGY3v8i8DRTcC_6{_%cz2dS={ zb5u0VA~uEinuMw#SM?|V{9mlSX*`q<{P%m!zRz4UwjnYzmMAio(8kOdvc-_1QjMjk zRHIZXF&l=+SSoEAqSQ|{q)n&ysb}LxS9o-@hx?#yuocd*}J$>imwc2=7(-q=hpr z+{*;*7S@Io3HZU1%z#b6@2qaaC*uzkJ*R_n@22&q&ObbmkL+Ny@KW26mOvXWf+L>< zXwj3M+Dw~N#eSwQErUjyRmNWAi?5&he_2j(6$no)5L{%Xhtf2S1us;?5C5!| zP(}d6NudO}TPbnIa)_}ajd1Rtl4+T$TsP~0W=Ae=vSl*q@kQRo0td0XDx$eV*@0>R z#qN65laF)7w7u2j$!w?o0)Fd)AGajXvxmQzOX!26({46H}PHI zws@06Y*NDbrF&OJZF#EQ?Z0k&BoP3A97POy#tS$NKlgMeoQ zAXhtSF%iJ}^c_M=ACUWWg{OReFpuh`=+poIwi>uzQ1x+ZiglMe`@oZ*0 zft|`{vAKW127u^Zsrj%ub~n9N3e&3djH9QhMM7aU`KK=X!-luS1$3UNR)~RjYq2)M zYM7SMPU!2|{_NQx#V`e*0A2U1F@75KN&{tVACaxgIhzP91+r^EB%~TJR}r^r@N5AF zLZ%7;V4HgTg`-3QnDaLP3-ND-lwvV@n-Z}Z3cw&To*_L;!~G4w0Pr^e136j^V0IA& z-E9p4SnpvOt3EP5%B2Ss1GQVv;Qp_%L}C1$$;@!En|BY@3R5xBx^f>I8J=hyqN$Jp3c zuk`RD9lC%6Th723x&WbG{91*9zzVY%7!wiZxEce=#~}XK%wY6pB|sjg%uoTZArOOs zGJ(MwEYN=X?PuHYemY4U2enN!8xlI?2BRV7K#T9RV<6sRIQK4l+QtF-c3{WZXz~V) z91>1ImRWN>A{#1iL8JGL1}QDW>U^zTWr<3d1@zaIWoMZ6qK4pL)G zRq+3kd#j-2`#{`!peWY7-07ug{J?3=jsS?vHrDW%h}Zn91B)jaE=|myt(|8n)n;H>1(6{vG@>_vm^k?lnXLnqy`iL@T zQl};+z#f5X#Sm7j~TwvqMK{I&X+*{;r)wox(g?`gV3{E#p zbDIuS9-g1|5|=+iBb ztLye_*HhwY6XV-*XzvMWL9Rm}?gy$HbV#&r?nXC;cy%Vhy@QozILiuBh-QFxSVn#+ zQo79-)aPZ>4{Vk47FNg$vzS%K@ln1pdlJQ=)_f`2p?5S<>}=W0$2mAOb`<~ElM33- zfv>I&a8Nmcg!Y2w+uSgxtwRY(%?p*_?IJ?6v1R*C)K*Zt3)OifSo}UCbjFrKbku z>(zMy_D+o<2bAO)a&yLn=d-$?b-Kp^_t>zM`lvg`#uL1?xAmaAT_~SGR<(tiuzg&X z=vY-qrT&Pomr1la`2GFba83Bvz<^z*Q2VoJ4h?4GJf>B;kiQ=t@}D>Ua^$Sz;wVi( z(zgFLdcGrqqDReZ+7o8d1iUEoqS3wHQP$=hr#B%)HHG0 zoZN35Wp{NPw2Ew?epRQ0Cs>_yE@A?$=yUJ;Zw1b)keY?3Zb}HS^YRQpK6mEd!0gno z)t%-f96ra-u-0=WJz{K!qtU){388J=*m}f_f6b=cA2AN0VJ8=TfL$9{2@G)O^TCUH z4;v3OF0@RQ*GB9W<-Rbw^tIiucvu^ZUbFR*b_lZ>s?RW|BYI=IRZW5whGD}=dZ??a`p#R6% z@KMSz{fMm>kA`R^E-^RM46GTy=TF@7Y+j=jcd06N8&nzr6%t^W4p^xpDoGN2Ao zK^Mb*&(or}tTJ)sET_Kw+BDxSD2Pa+~cdo^l>oLKqzt!%aPLt&YQxH zdaKG&1dk{`Nq8HN>4K#i4f6v2r6$wpoX!&D%ltH~3hQ0phWSASEZPKl0Zs{p(G00e z(Jk_n?wWx0abgBdj)XBZsBHIw`2u)&VA>>;)9U7&?nGo{GXwz;%LwtO@|>+S#9!>` z%#ow{Mu0Rzl#-}=C_M`e;vVu#m=)uz#jUv40V5njY+LkRCuN9r zFsAmyYbARwQpikoEK6~+m+O&lxoYMm=VGQ`=tf|CyA#}ARPH!fbi7Os_`2`ZZ$ndM zSaOunZ(8cB!=9xnzNADrS>ES2*~^amQo~J2XZT?Xj)$Z{3=;+@<~B%Ui%b2c)rgBAy2voLH}4u+YB91oJZXK~CX zcf)5bof;`iI~Kb@Ktn6ITFzY#R%Oyg91Zaj3KF5s1(pV%hYM8b5kA51qfu+Xuzw4c z=q~`CVIZuqa)%D$;oh9Bs2KzIZSz%mXt~NZ&03g)v4oTON_n$)l9l}*=q-$P_DM73 zB%bc?!js@2)FZ6*)_JL%J?V$F<^wE_PoD~j5i2ZO3y&I+Eci8}8D~4Dv?DaYX;+G` z5ZMm8<}viw)5oeEEZMLi^D@%rtSz?nnH{#fd=b~Sy@WR(ZC~FWA~mu8J}U`eaxB|0 zFLpD|9?X3?`DZW5D*R^_UC>9J%)M-1-A#sbc(x;AxAc`s=ojb6?30rom3=p#^!7fQ zcAykC_iHKHi>@gr!sQz$+h0ZR=i$6nl7vi7YlQER+sXhOD=lWf$Kno8&;{x45;qsk zgohIn5f09<;}exyEIbMBKOaZ$AJFb5%-MH*>JTBiZmK{5K4A5K>*^onm`AjRrt_|! z!fQ`*%M9}vjJLM8RBkHoMi|aie6uKFYFG$Qy56wfScw|b*m*Fub{7>WPxE`YJq+{! zE(vKT0zB;1#HD|=yqZG?9^F(v`QZl7{+5fIGdnPuSc`8fz6aj^B{6~Y1cfT3`{ab& znYCQR6b%64=c1D1t2gX=Gt3DWFPqq$bomP{b}M4Mft>cz0*Td}SU^JJ1`_eD7vVWe zmna=|`*P-3?VB@CIPGQemxo%v%?>fHlFi}VYq!q7Fqv~uPU3KASM7O8FHaQjj9Y52 z8Iapc?+hkn-QCc{kRX~Q%S{>raKXOaCNb*>%QY>wbF+Vjf13L|E2kL3{SPki=88#a zkPje#QBKz_B?XxAidT(xrMs4r3?@SX#z*|DB-amReF+^-8?dCHn;RwDo!{`Ggu6wA zG)YZDs{a`?{U!TWogthciS$Lti^r5$#Xy;}jaKDReRAwcs;CBr`cRuQy&o-;fodiA6R0rICm{q4Iwg|JG zGsT=niB>0F1;}n+klhuMy?wJe62il+k{5c}EeoPhPfQbM6^UfNsZuD)zR(kQ2(z^U z%xl5U8?hLArDQ^cd1HaUt0x{;0|Ws5T2I+0%w~gmiKE#IhtVk)v(LZHg)YZlbFwBF zs5d|1Xt5uzGAo{uU)F{11%U2{0BX~K_Y6_aj)DCBvG`>Gim5=!blzMb=a^>OWtB{8 zfS>=FcO!)ot=LB3pb{A1hyi%RC?JZ6RTu@L2k8Xpa>>EtZMrGl_x0JgK z@nr?J*=hT0F>U~ZuG@#e3(yyZ+l^|JO8vjA3H*R;Km{E7&m5{$!t8%HtB1sM7N zU=Db$8QGw`llQozcY@ID#;AF={(-1j|=FFYxmoUS~*arStR#M#|9?h+DL zzCx2db=gfXmU_keNT>M_W`sa2HZNT3A#On`7 z6v&z*G|B14wdz zFF8F<56jZ0&@usjO6_2@!u9<_Ee;%Gy^7}bV<)kXFo$*_VQVrDlzhD-vgXB}iUIhE zbE56b+UhPsEP)GrDTc{&f$)@9}3 zQo~X#aO&g7SJjDb@v}ROjZ=Au5zoK^`l)*k|17y~iV19T`c8ozPLs+=iGu#fTEtko zY+q~QYYL1W@|tj(c36U>U1k4{v<0?UtqX$$yv~v9>b_{bp5LTlkh4pe!al^ z`>hdA%=eMAkQcv}U}Jr_wq>DtPWA)qL*!ahB> z8#(5In!4tU@tFx5DU^wDb7J{KLRjW+BBAX2$Da|@OtBBQ*|4tE9v<$etWWTtSb%qG z7(8V=S*LSmFPc-niQAfy)butq>L{`;7yPm)Fu-2od3M*p*9SM$EBZ+uSi5rcakD_p z=l2NQQGBQdvmy#74M-+nc2oMfJ{LUPbY`nl+^z%#JXMWxd@>e0J6QR?{o`L{aGeO! z&HHS}hHM80*5INR9C$KmuWg#n_jh1zHkL1J&QrtIF~YGKl`s75OLNz|--3CTGs0=z zTC$a3&OssXUwo6o?oe&C4F`pL{*&S!uSvEJ-|tT@EeO}$mQAjuk>&`!r9uQ^|FG#5 z>aK`&8vwjLx`)<|9T>cYJ)9CU>lgHKD~gIY_-@Rp6bWW3-(K- zA@r8t`C@fpk;-y1q+*{M;t*Ib%k9CgsADn2lUF5^7W=lrQVZ~KoscG4gR_>rCesk%_ zJQqX?mI*`8D!nql@~aC_oXR0=6hAqKgLiz}3km?bcOVCjEl-`bmK7~#4I$0f-Saco z@)nO#nG?YQzEql~EXdR@mM+6iO+c7nBWkdZFvo9(ID}Sy-5G$7>q$)9)xk_A_hU7f zI5w*HQA{oPrQ-nBqhMw|7YEO@#SIm-n|~D5AZE%ivkGZKKt}gA$X?C~0uyzE2#x}A z`Skl!E61htoeX=uD;7O4*(@X`{QH1)NCd~~I8-n7eb4b%5`S8O4` zgd9Cg+i8!(`R;M((dA9C8Vj}(e<_|&p$Tt=!Eyz+v8^%>%d!2A-1Xa952IwkECZH4 z@Z7@D{Za93vbbv(+!f|iU0^I9)imDjB}yXH3}*~wd;$Wi;lVrp;5qM1)@CZk_l-bZp+X?oRf3^cEE!7k>G1m5qYd*~evN#?|O&Z#6hE zanm5i)$T@E=ku*76MYn7QzqY`-Go|-7ZP7RxdClfSD61w#E~yb=}3J+#9h_Aw`2Li zRGajwjDT*MQ9JsK5e>H*iNX0Td*CrS>g(YO)iKvE0Z7EX`|Dlm-%Phe6ueqj3Lm!^ z4%;uM`96E6=t!8qnE#94V91^Oc}WejsHNW_@d&M1gGlGJVH=*Wb_A0?#63ci1l-kO zNmjUnSKnjv3VxhTV?9{sukjG=%mu!}EJNyNuM)bhT{8OsPDN|YfGq6SXHR@lmb4B{ zi5$DRbmHs(tE;W&-;Q0GyMFBo{}k(Xf+2Xq#zjEhDZ85eTG2Uakwo$S8pHf}cfhxl z5?abo0)dImGtTIQk}48`-z*B4nM|3RIR}8fnSy|;!~jxlM^EO+e z5{dyVR1QLmfU#J__*>!(Fq@=9k7=?RH2AK+IMlzaRTE$bv@wM;;}8Rb7GX-EsizQW zVjyjX=vk1UOD{R50-&|)MIp=`01Q8+LIIhrLmL6y54~hP#1`O?i$#!4Hb-lqKvnB{ zHg=jg2hWiQ(b20^#NC|i*ZH|ybyz4@@)bCv4wCKwKQvI@L=OX$vHvDgXiPyeL3txY zV%5l@0Lz7#14^t`Eot<@0t}FAAmPNAH~=Nk03Ns4ux)hWEG53N3$Yy_8x4p|0r|zl zzhj9B2&|yaXM%{PSQwN*iF!0=kdleb@n_4Mj^ps76sXa)8Q2*FC`e-LOwNux4KQM$ z3<2o7V%mz-Y<~g%+&oGefHLX;CKTF*z;Wnjtt8GB?r_(jlR-HEkY=(ANAz%^c*jge z{(da*Lzo?>L0^g`#~Tp6PI!Sh$4yvxX&+{cgMM=%AHvhNrr_N~Ia+nm)f6-Ysvk~) zUBw_&Aaa?e5c@wLV*Smx)lkCy?>(zhNW-8AYc5Nq0r(u;e=@Z^*F1Fs6L&e7^_bE; zPzYqG^@6|o)*(pfELb@hC%%3SHXUMW-6$94uh@e>btpO!+ffx-;*dkec@WpNsXj-s@1oaT%hdlTWTC z__)IsQ@gJLM#1>nLCM~Rg0&)`Ds7<*EDVmQcfI&dn#byS<2W+!L+_HC_1mIvzFf=7 zo0spjKH4+A)V$)vrVArtUIuTrlV~Xs>`LP?eFg89SCw^|6!dgvbo(YFXs?hL)+F7X z`-+%G{S#x{fBK6KC&%Hou88c-)Ps6fc-`els@F#UVYf z5O%&&=|XDa^Vi~fc}eRhgc>{Uu1sCo4&31{+LFRV@!-9Hv5ay7$``rWPY`K$wmY&$$&TmpPLaH|A&FHkE%@m?k zrYPlW{uXNxRwG%oSy4(`i8vZ)qY&i=+NBC(YS&du6L@P638?G}qUU@5Rj+S^TGe#p z%A@?0Ia7KaH+g-l3+z$rDGiN3khk5=M+|j2xmJi^?2oqrq{rpNj9jz^eQN3eA} z>*gBCM9?++FTQ-ej?Gi_JXLN9q=suT(3-Dh=39Ey zQTbt1n(8cH1AMV*Kg>o6#D~u_mQx+pC=WAieSovGK3nYMY~j<>XrCn+FAjBn zx_#NJ0J+yheuwT5o6(Ja?3;GPb{_V~l?bUFm1P?loYo8YDB=ao@YJhUBcur?EN?oU z)5_8u_=H1R!UWGIHu7YfeRnfj>4+crjf$C1r!&v9Zz31gw2*GDC6n1I&K$$>HPD}& zY>$H0_47qN#aritYPjZNpW4euhhwqCbYXlOjv1-tmM4uMI7|z)Q)bM91(ag#c z#ui_Ry?0a-bGyNI0=mF);>tpZoNbH7s}HHK?*d(Ga5T?B*j^!L1%r#50@(#OVf7lYGGSqGgPW%T%sdCnPjRgzE{ zoj**V%#o_#Arh=(fnbmL!_i!A^&#)5Yv4>FrZ1qv{-mb2Bx0l8^y1ahtn}O^(opIG zO&v!mMv!P7wgJIyd=pk4(K_ZB<39G8a!I?(D0`9fz`WNysQAwK8XMpw0f^p88_tl0 zui&}`zq5ZIWEul2B{ZbCU+#iPYkc29dKv<*@a34nlyZBtNMdeqWyXp%pG>3R46pXg zmC#32kkAys;gD!L^fDX|nFvNjKy0jJ3{UD3%z@vDYxi_~30t-NhbQN=|beCj@r2#n24CbWy0w#TJ;53p7-==$a-dX_I zhjVdzKR)hQADz&cv`9*;b}jBG_@>sju%R)sqf|;X+$ragO3RamSLnpv0Ga*98yFa z+e5md)qLoER#C7O--&>!q}0|-Gi-NCKsknMGkX+ouyWDm^T(2dku$Y+b{-FrOoS0Z zS98&Ljt{23`apP1C!MW>n}Z2xXlF{MC&8Kg@)IsF+uACS1)VOg1ffTT(sZ8_tJ4{W zsS@3v$D1n;cblv)a1B&WDzKeC3;TcfiTFW@j=}zRJ29@1W-S|8ZYJzV&_GA0zn!^zisdVt4(qHD4JBETs5DwgHBS@0&UAfaJrT0bZhwSc73bDWMwXy>n(( z)w|c=pItAY-RNiuolMoGUO2??1Wybsg%hVi;mX;2M|6);bMD&^SVEUs-L=823t#vt zf+2pk$3s3Z1A*G(E5;n-5Sm!`(TC}+3#Tuaa(8G<@+RtCjJVHU1jtx%%Tm&!0~_jK7m+xfy>* z!u|vtdpi2Y-)LCTji(PBB^Z3#b_*8N<9uYO#1CU=XvCO_r&$HOFU}gQ)3Z zKr18>p@V;rNHQR**<#(#Y0%5{bvh`WqSvYMd1}H9l^B|Pn#4&aln67G#9s{$0!edK zM0XIyg;FSoTqlq;fGGSZB29HeT$f`hDkImOz zz)uGx(?$51dO0PSyjut}H6RizDLM?iz#tZYWD_BtBE-f3=&c5lN+sb65V|R-9UvNv zLmv|Y+jIy6M4(lpPAgD=h}ioUB{qnEiE!IQ#FO{rR&nT5#!kqPaCQKw6l2y4VSgV9 z0F;(dY{K5zAR;eyg1$R&Tu&5^{#Bm!za_p9Vw)A%S_Uc)T4?Cd9s=_HSn^cp#l}Tx zv3@re#BUSrgzDZJwPZ+G1Wh>Bi+A4DAnKvR5=-=UPVqnrFsv{Ad=YN0-U%VeJ~`np zf{1744+*s(c{e0E)9u8mh;v1lsf+(h6Puz~lO&j@pBhp;GSK5RvvU`|4=a0*din9$*F8KS{EcS?caMm;6qu@KL zc0u$-aaS};x+u}s!3yb!PW*5rMqyW$fejy9lkfhB^^4{ygTj1{=i)K_jSm5f7nq(q zb$k2UGb{);YsKz8g0??KD699VJ-1=sL|&;_@lketzEk+<_R4h;7hdQVZ25|eiYr)a z*=XiC;3g{{*1PRB>JEx}3o2|u$8q}AKYYe6+ONJKX9tJPBhNmZ86ehJ?a?6hnrvh! zpTjS2Fx6V1yekE?Fw&1o8F?~5MZ4Y+U~^63u&BgoW3o26^{0JpB+6lTbeN{7F}?tG za^nFr%eFX`ze{bZbr{_*MqG>vRrh;>@JCkcNon&yTJwooER9kC9cWy=)0n_(LaHAJ zPS|s6I8B<>#{!kKMwLcq@}xY7VHbHaXMOf_}*U3B`PGwI&x#NC2Yu{ z8Er#{-Mc9UU7@vVIzIG)Baas&UT9|Hkq4U0G;lGcp@j=~t>q7$I6!?}TgBfM&gInC zBpO#%^V8?-1KH*CsVf3E{4oD#=|o!FEq+Q?J`b4>b*pBNvqDO}mrT4jXM@S!R9oTp zI{TpcY4CrV!&d9&MK+~g_~_qLKiG3Y|D(CU>fT6ykExXxgr7}a(zyO|5=kNjx197k zW0s$>Dc9`@ev|CN`0m#f46Wiobk=0+(H>x7_r}xoB~4G%5&7{Pc?bPbLL1u`*Do=< zIrs!wZ(DMoi<~mYef_d;6Pvi0oIe2tR`%b|o{+ZuZD7C)c+z!K5oM^0dgR}a7eZ|mjE+k^sp=Vg|JjTT?!7G0*sIW$H653XjB2;Q z{yC+ioW;W*e21-2Z1_8jmsb>~e$LsM+$?MT#}Dci8QtW|U01j&8c8g%y-w)Q$7W%! z^`k5geYi!HNAfimSzbALnEhGPuY?7pLNwm0!W9C%ZA0(4zg_0(iBU+d<^JGwWPb=6 zyWt5D^X=%7P~`WkIrTLrBeUdKc@&2sV2R3%~Mh<#2Y?HnOvhZn6HZpfZq;N z{KLQ&VKc?~$f&l@3Oc_?@TJhnbRi}=mUC`r*n+nU%G|6u7U9Fv_c!Ok(1tRKIRsxtVk7?8S-@U9O9PfIfM7mE%BVXHM`-^qtH+#4!L#$~dab=huS&E|5O5Ttm;V=w>R_EsD5}CHv>tO_BK` z?Hy|!>*mxk7doGuKfn+n_wyz|uUVl%L&SZzUpvZt(JjHqO3z_5h6S96z@J2H8hw0e zJs74KPqe(-fc09ZLa)9#%o^xlh0Ie1bJx9G|M{%Y%$8@Axzw82rGUWf>nfVCP*o*; zsWFwGKQ#pqWWici@aXT$bI3!)`I!sN!{mrfW_&t?OayU#F!(@?*eI+Ibqy`uBOO9_ z3^?VZb+_e39MUu5%S9Ec%W|(I;z`5X&}9cot7+#L@XX;eVt0(asljpyz1Fb<szc$>lSGQiv_>UU zVuA#UV@(xF8-&uMO%X?NH#+>v;y{+M!?b#1C>Pguu`H#CL%iek(OPiu@qM%_Gt`&K zZxCn*6TMZlodCkpmrM2dpXXQC@?riOb^alJyezP`mZg@l-|um_zpm3Gf{htLMd_RtTt5#cb|hOygd7JV3j*be|jr<@EfM^{2tVRUkACuL<;mvB&4C( zW7cJS+}_^i>;c$@wYtMmo;)Gqvsi^|)Dmpl;`?wPiEEuSa(9mUu6g~Wa6vAO&5u4pvy>o=ErlFabu@<#p073=P1`6AvKmGba^TGu4*;Fw!ICK1&G5Lh-j7G#DC*;Ox<)8A zNxl%4dVRE=2cbJ~UsGmSBGue6abrQ+Wr`wn9QD6hkazAE|e!2~ppNadU z2Q1G%c{X49Q(z-pwQ21TGN1~3&Ee^BDSbv7IueI(a*x@g7ZQ~#oi5p(rmiuq&dIIn zK7RSvz=L1AUs)P0+vs@ZyI2dp&4uaRAWOWlm?#0leR<|jA8v#tF|;!_Ou}@k@({y^ z-p>8p^~GTGT}l)V+p>S%^_)9!Ea~;TBt;A6*wwz(Pc^ZNdTs*Km75o)?c5UVtF>z* zTZAgFAT!kPM+4-_OZWc2P7=D#rGGn_-11@pWnG&|qqU6PWxgs0Z z9$Eg_2VE1-{9RF{~0BufcB>;$=eEObr?$ zWI^c+$KJ-~V4-jeoquf;QTBm&07T(H1i-)>p}{PB8=gZpih)6Z1YKA?w;(1c@ykW{ zN>R>k_O=2s$|y!%6j6!+GJ;BE0*DuCf{Bx)Y#&((||8}KcG%nhbo`) zSFoT|V*LOhl1?;pLS2STWgK}K2I0nrb`ba|Wo{n^b-+N1hjmZMp8dV-kt`+C_gM_{|9cnY1d>lmFg+R9&@d1ERu@AAC0m;4ympO81 zJi6uSSZ;;D_wK(HmJN-LeN?Uw35q*V*L!&wnM4eN-^OgV<&WQcMz(7MFk`P zg%#w-s0t2ZNGCYtzAgwhfvmDXG1a@0L8K|L{UV4Y8sL5+q6&lGCxpUw3F^N#z{mbG z){69E%Ury<>9;dW@wxx=!oeQv(k5{*?J3fE2i`w4|GzIBb_FzKE|Hg($lRt(z;^sy zI2=KpSO`DSbVQs}9t~f1v-t#nnoHHWc>XS2=<&F-zrIg-M~K?@XO7cjXyLH9$R@Sn zw==Q((FKv+a>2`8iT;?YBUo)vuZ1^pqN39#{(&tx+jO2<@GY|ATBu7E_T9WM;NYz| z3Rh`WT2f9idjI*r7SRsduei(iT9fPY=AqwA>uTZ`VqSzMe%jNH%E)!Z3L)X`4Y?aX z!74A#es3*ho%E`5F?U95%T3dH%*P=$<2C+R-g|Rn)*EfhSka^+iy_aE$DQ_yo?Eex zcr`1FHIrvh{jXiS?gE9tXpGfp3M25DFA!y0rsm^l<2Fv!oY|wj{hLfe>qFP^FUqCc zEv+(x%|O>EX_#%6S&d}U)Mo5vm$6p^g_vJ<+=8TwF;W+BEGTL7dTs}O!Q*k?r_6St zlhVya+1cj-mI4P#)niBVa`DAA2ZJp56@mL=+ExYfdxkFdRp94RkBJT@?|T#a4XB4| znFica{AS)zm(sFM%#$Nv3H18lDXh!1%P1L&c_~a1;u{yUcuwa%+y8fAeZ1B)7 z5QbdjoPfmI^d6ktF#k_@ISLKdGUyIIsSP?) zudMKIky`4PTpM78`yE&apWU(7MkndeB3-50wyGBAdghxN|33v+rp;eW&0ml3bPs8gBl3rA!@|oz_ytxCzw_xWFzYFQsoXz5bJgg_4c zYcBBP?HtVVTI4?q6!bU3D=V;?<@Ba@68s*Q5-q3C6WDUolx}&{)byfP*Z;8^Zd23> zZU6c3)Xzx%;%;RM%SA!0LFPb!f)8E%e#>>;-lb;RYhevXQJBS}W#*rz0kP1foa1%& znhwb(=clmHxbDtkb?Gj37}pG*I_rfEdz&T125m`)t-*dQ79E0wx44-x!IWjTDm|a2 zmu#vIqo>!m(XosI2lCf+ml43y?FQd&vB9!Iw)eBRx^O5;ZV_4un`&BG@Mc*wBY%Jo zRH{n=k&tFOlsqMX4~&^5;}*uf;zzLkc7-R|gjXV9ER80NCPwj;H))|wlxgFM#Vt?k zBn`veQigm6Icb!Td>S8vM2v1rVo#VRaC; zmzZ4VSiL(?bqk3sn#4u}0`W|m(3IPG&TC_?-3at@T~ue`015cS(IH_MJFcmO?g$k$5GhLNI_bIu$$`$lo)GJuc z@r>@3c4jYeh9<&Ae5uB*>C%~bsQ|)92uHJZQkIUjBl=1=Eyx3v9LVrP&E$}nH44C7 zg_@*KTgQDMfhkv+fKD*<93?6ZdBMoa(geZiaH=(%&Dw+2Z#yfL**EyKZh_usbc*2S z9om^2o?~6338ho?{iX0A9#tV|o!B3Q@bQJyc84Yvxg71oSMz~%r-lBNLV>vILDLT{ za#DB#vhEb5hJy%7NF6$K6kbDFguFN-opBA+VwMOA?wm{aP>lgT9893YIyM|u2?L*o z?>A?UK14l|oAo#3x(t~=f^Ta>*}H&o)8r`KGoa>p)Rh>-X@o4VD7hvcBxW|8UxXFn z7@_jx6YWTr)2Gk%y`*s41dm}W#5!03>~*O!H&9cCjL2VSq-uJLmP%d6vu*^K^RfK6 zm5vQ!q{Kyng&Vi(Pj`9hSze|G`zyP>4rt`&;YZWAo$?KuE}pmXS9QDXbQmcPReJCj zy!gFdb=Pg<)AvCgowFBqCoOF3s9V9O1qOTZ`>pbQt$)X_Iy);!T$*?0*1xRZ^fspH zDKY8(v^c^9IcWE zhV4*OYKyKCPYtje$A?}&^#0(+ccC#n z#HIanw!Q5u??V`FbYT_Vsozk zB(2iJp<))=Ma)tmh8TG0VhXFISPx5DVqyN!ttg0$VIcgJc)SLitbr;_6uW*qv=Pu7 zD0+ysARuqmAsU1*KMgRq8=ER1fBLbb4uI~W$q*51JBK1x1H%T=YcYA9TAHRJE*#$R zLkx*7DJdOBL%G?gQ9QUnFd0DgvJ3XmiGYd-ttf)J3+`V4(&ErTDx#ZCMpvMq za0`WUXt6O%&cDS;OP^d>rfpbO8`$rM85T@Ky|!T|#b&HfwN zu^gC*c&CQ}LC;jI7g8=m4K)LGlTIuE5sw}c8Y?Ai0U}3;T?LY2G*Nsz8@bB&sp{lK?!pr_;{HXX6=nSAh32agk>#~Mm* zTywr>k9UTJt5?=dbT$+Whdn8Xfd5%&?mKV33C7*z*P5V_rVmwKX@OZ=WS#zvsMW&C zMHlpE&7GGMQZCuC3cQR#Vb)UKllIfkT1ZDuH_E0IEOh%6@KskrdarleZIn3ON(yRg zius4sGf`V!KH;=-@ZQy{fuH7D|Za?b`fZM9yXZ|f(Mg=$9bP2!%Y9$td?$vCbJed8cMQnYXE zXlN1goOo%_AO7td+Q<88+kL?uKnh%2pKdujkiCEr{vXF%%;@x6+@y*eV_GI?K= zqwqW?oB+C3Yn7%B=?T2Yw@Z($)Tp4`wKh1v7Y%+XMLCF`hdkH{;(BieBKbd*Zoyv3 zslo|`0L#Dn-94xpvCiXm9reabiT$C7HG7bpL@xkVb;y?rA}Wk)-bX>Gf=>R2;zryI zuiL#+AbgQM+NSC5<8uE^*r;AsldtcTAp82Sb&biS>dsZMOf9#u|C5)7y!3Q)u>X+x z5QZ=zda^Def22H6?ewp#19PwTSBW>Q_VTB=gSEZ4chSc@q)6-Vml8MNNK|0M@3O!f zm^%$AQT{!t$(bzv#o#{>* zyLX3V2e{}ww}dx_;})et1ojMW#Lm*l{YyMtL3WVq; zH%+dAZE*X=(wt}RD2~3IJ^GY4r77AI)rLxtaqq34Vhq$=!_74T*maP=st-s>=RVoF zmX9Me0a>3MH``Xv;5I$g!Cn=w=$Bx7MsJ5*ZQ832>O!oHqP;yF>xCou88;!?X(3-x z@8OTM9n7o?r^~UZ(K+x&6H+yIpdhmE@@E%PHGc?qj#Jb??Qs9Lt8L`YtZ&rK?4X_u z+R~}))k^Vi|2qwL|3pwldz7}`Zjm~>K>d6jZ8q5Q=NGO(w4K+T8hj$p0Q+`DL2(p3 zpBSB|obNQ4)pYbJpQRzluXMv^D{T=o%FxV1pYb5$=|+*bRaz-bCp^{rtI+JnwHz6I zEbx!$?JgU`^jzZi=dZCfv*;7Az%?2)$#@O$u=Y?pgZ8`zUsTb&R9U>+)Q*E$^}NE7 zb{X!S>=)~+nuade_zs_B){}He?s_|)TG>W64ic8c4O;vn*qPaRbZxE!Fp6oxzv_dL zZe+Q6DC2jWmr*Q0B`M90`vuco`g-tphB+ zH)q#?8PbxYfx%d8`FuyYz?lvVdN1zsTGxgMK_>CXQ*P!ns!^-sR!;NT4-d@JAeRVv zz;sU0;=YY5^4ZVEl#H8FA_E83Dgdb9gNMJ&&9#=z8fQEzd5C^x5(e^?_$8YZ8XB;+$HXvPd@^aCpnYDz;|Stv zRSHm!q8-~35|XM4o;pnddaH>Y+Kd`@UpLg3!?1It${=KkeIa;Hs(XpM1H$XQYYQ_r z1DMH*rwgjBO4DdV_*(;j|Jl&PrfH0f^>vCVg48l*1;@rbep*mfOOu`9eq4o6iugK} zI=iE!+z6eKrZqk|eg0h2qYgd$L?FpQRMbde!rb7N=A{!!CZ65Es z_Clu67^gLVn6#EBXUbjF0LuB!kiX)K#5cy9IWU~(j}^(HC;MzDiMMc=Dv@85n6tJx zaXiK9lJJWgX=^Is;U;}@7QO?2(xA^I(DJX(NTXR9!PBCn*Vj()qQ?zj zfz1#rAWsEI<|uI)p7jqQC+|*BiwNdSPH{B669D<$PO8Z6$Spn88)&3grfeUNYR`H!@8QW{+_VZkdcNp%tqDApwAX|ANT17o zupLc|Iq+bSPCPY@I_I{dJ+38OVaCXm(b!!0VsMjf8RyAe5&*aIg&-Ky5+vUf?jLbf zOuhRSpxhH8H19*v6|;j1(%@#Ez8rM?c0b(hMHh{lL~egn$JylSc#Q9sE4EDq>ouRU zPIeoZQ7~;n!ve&6vo>PO74B*MdMd9QFwrgRHa`?e_cUs1{nOOPb4(NN5RNNA=5RjM zz*GGb_Rwr%(32U{htB{t9NO}iR~J`5T7MWvJHRHw*>9SeunawdXGy1n(o$!*`7m0e0I})I4x(Lzrx5dZOF*E&W~K1qD=uNnX}WC zB%Z$z*ElPazFkzE?0szj~e9Mt2QigHZk=k7kcvFi0^etAKX}MeH!Yt+ z1tnG$?A+_87h#k9|3pRSz$aA--$bI|!sHEmRuonLxHIa4!>)IHzVtQ3HA1787+^ZO z(e>cK__zPMpZMR?^TVErAD4}P3?GNLMb$42vBCGh67@9uM*gy0sOkLehm4` zeV8B6Yyd=i{FN(U{6u(nCoVNPvg93Vx}S-Sljw zQ^9e_(W{hBt*68Yk#e=PsyqEY20dMs|9?>S=3z1Z|KImH+d2DmHf_^BlS#X#RVpT_=Iek77Ag?R@NyY`(&-i+^64l-}m+VUe|G4 z$8r7J(f{*&KhMYO@r)H=(}X23#BfLtuED`zM6nKwD%MB=5mwVIZ3Xb2O2Q$53^r4o zOxS8JG;&J-O$C$)B_Ry}Q~=?S9vP8O1Ik-R z8tlrM4ghX26HSjaQDYcFxtS7mH+3sqUa#o`Rty{6(GaGokqOQfprB&!N<_Z02sZsT z{&h+aLWQ#3fb`QFQvI-uB&H-ODP=-AZ0`Lwng@z0r~3efnm`gt6X@8^7<%R9omiq) zrUNj3qej_!a^R}m!vcg`szM5!7}N>F_lOHLD3{t&@4a~Pop^wyK_ zi1Y7=Nah;CGD~9w0$_}xF=)U5xQD<3v|8Z!{~xf`s#a;=e-}aYDSNMSi4y@AjKv2! zE9hY*)qMl@g)7NhPmCRza^qAb3l>2nYWFK#N*$)W{rdTOsL)qNusxxK!cG*VS@Wu#cteW zyNJtved|j8Ik9_Lez$J{16oZ!(UfpNJ1eDMifWL~*huSq z#GwW-*K#lJ*7@M?wa+$ui*vlji?+X`zT?(%g>8=g#mEfIh}+)r>8nLrqi(=}nVGKYmC;PqvI#hx+>7)A}Hv0miC3F zmt*@)vHXeAwl-S0`MBh!A|n` zWknDzA^CZzZ}92)oUOc|_46G%dQP|p;gj3(#=rl44e>@t>f9Fu1Khya(in&G4KCc05lA=7-G>#iZ>tbNZHafuI(1st20Z$!A1;0?tE*` z2Te2O&m>HM_GwXzXo_Kzl5X24)|09v=H5*Aqg%8-(K?nzi-2Awi2Pwd&ykw;okZK+ zd*Q8l)o%X>h4pdo3Um;*<%?97Vf9PQY8#-a6ro~%AKT0&L-yM^Wy{$$gTx}WY$eGU zH?a^W>)muPVP2O< z;A!hFnuB+MAUrDg3q4NAotmmS7wx^yZR2kn$25AIL>NXs8m}-@D^BG%CR;kvHOz}E zZx+;?QLYW*9W6{HTDzjn5*r*jC1yZ4>-0{)F-O+UAMi@tDlm-w2)eH7Dp0B%=P7yq z`7X+^7zdzM!Twyos*C&&JIAdao;DcpUGB;wdC=N1!z&CoXX%85t()5Lf)O0IDsFLw zw!i3u7%^#_Li?wya5`){kQ^Aa0GD$SDSpZ{c;y$ZiZD9lG9{YDSW84n&939i!n&7N zJbOHUDtUcDMWHFpcC?hcTY?DG>UJ@={$n<->hj|YN!DVqgKMljUj*xXN2M`G#vv1- z$~s1b^AA=b+<5eI?1}rpEOD<)&#`V&w~I~NkonGoAhq^g41N&UFkNneg<3Jqgr>U-1JQ(&^th5TVDY`ZXp>I`eZ}Z`IQKrylwYfz zzjgSXMq5hIJLX48&}`(`_V;0dm!NFJH?JKB0(sP-`TdFjwsqND^fZ@B^n%`b48_NE z&Tl<>)490dJ#3DRx{`BkF$ak56LaFC#O49?3*asgEKw#MGv|>rOf3-cb=-b%9({u< z+<8gZEYsYc%jinYq~9Y%lBw#l=^X6Z8RHU{6p2N_aHpBzSW*G(4&iHF1^#28kHksHskD>dr)CmIkwkCQ^Eb1zT-eF;~F@Vo5iT`{gKFjv3>rDG5tshwWX z&8bXeoOmhb0Aw4wfr1bD1RFyNomhPb%dH+0&ztW( z7oCh(iBB=iA9(tU5!t^jE)x>vxH9KkYj0MgG3s~eZXeHwB_xCF8f37^M1@n5O7=Z% zoAr@n)XSfyJ{sKJu_{=TIDfx*|CQJ(U;%q=f3zwqiHXBTt4f?=4z?PGQRoFTlvL;S zv^_OH5jm37Aff+rY(Eb;CSK?0Zn=9l?Ev)S_VJm0+)P7F+ZX7hl1IrPSZVxD!B4)T z7nNY3A&&^Dx-(=A&Gfr`e^8JdUFh}}bvM4<3_V9|$$BC~(_LF?FM^9jeh>fjU3j-m zS-8hsGVk4J)-B=z+z@#Y{Vv4y`4R{gHWlKWhPy*|h$W9_KBLcGsy=RZqf-pw^%F6Mh+(DXJFJG`#2L4w;=y~aO8^rO%@iR=%FA0PFA5ZbAL zzffd+v1ha>*n#XkFJl0^UY0;i!9}rJ9Uea1qyQ4T_BpTL^x_MN{j&r_r%v!1%U<>W zJcw_5a3!Yi!-@c>^XNTLo&a1l9QJb=zTbKOm*VxSCffiw2i)Ut`?kPmCuL3qe z6C(q}=masCBgWN;2{cm~+#u^nzc=I`(P9|z7_b`Ytpgh&$(Q*kp%NDeSG6qZID}j; zM0cuId^(RQ|F10l5R&~Zvh}Fr0Lmpm_;D&CUxgyW@fZSOHUduRaFGpr!U7s(AI@W@ z=w<0_j8J5BM1@U*kT|h?5rlHB$=f7AB=&(vm2fOYuZ75sV(^AungHv9HS)Kem}Efy zQcIi$;F^^%CV{yL;6nAXx0-@bY~GK*9XH^oA;jy8d=)rYfQnkKmnI8PB1IlNS=OqC zgFE~enJFfVHBM*EvRfp7(Of>Xk+euzkSro}DuK1IbxlJsQI-UX2(Lt?I;SFEK28S29MQ{L0Rrl6 z#fy~)H*s+&gjv_+c13{j#NihzWnbTboWJi7WCS4jqX&9Mk<|@K-9}Qmx-11i;&nzM z4G=nt`k_>Q??g2#3j&i=Sa=>z?M#5%`^nSt>V-;$5`LhR)(Ao4P5C)W99-Fu^+sjz z3>;KFG#@)fFZESm;PbM)^IPQ_;1LdUNQ?S_%a2tPZfL+4K-I)XlAjp#5>WnQn(gmJ z;O_qxxM3cIN+Fnc&k2{e75z^h#B==M2HDc9`Hy#}_En$$yHgyuxW0q2&9jUf>{T}~ z`_OH8rgqr18~ch>rq@^daHe><_{*d7H?9x(W#$kJKxR6R1=vme*VlD7`B*U-M`Acx1{mD@EzPq=xSC*9;RGal9285OkO}hyxVUwL4wU zosjLhuhcXA{i-L=aA&-BY0XP)#O=@f+FfHxdtf?`e*p9Sv&m16Avja$8j-(R?egs` z`tq-$1vx}s@16Ps?ss0ipU+3(d6S*`4?oXCQ|0Ze2>6j(QGZBuz#e0cBT*pprY>U_ za$QNTao(E>SECzqqM|i>MG-~l)gwxKv~tv_$e9p{CmL0%B{MUx4KK#p1!rBiaT(jr z+lHCjFll)aFt7~Igb}9|k#im*K%=oXZmRS5=I6B7IfeV&jTp8YtWVXAhrzG#;fN?%p;9L`-)qZ z6L~EPMs4^q_ECYoz4LsR#Iledcgsxfc$POQJjzT# zj8}kbLwPq4x!OQ-um99-y|k@*w^pV<>fZ{~W}__h+uALQ=b$b1Gq_VVeKF-grQu#A z@Xw{SCeM!&J0i`thVgDFo2tZ|&n?G!KptW12<|J|Sj_vhPyIZ17Ta`@67@^4PKhSH zncqbkT(>_KyGlt9d`q>Jwmof%)<%uLTf%F%_9%nV_cdV-K+$>Tn@#J${#FK0 z)_G!9J1@xlz?P#Nln(RQT>YO|`P-RHps7!1n%aAj7?EN^?NizNYY}_W58!v*s$hu( zm#Di1j3P}dXh@bRi`_BS`h+|~N~@HSpf5Cv?J)80BD(23kxRO4seA=*JByKq*%Z-` z_E6%AtE9Iz=!}o^m4JNPJWG`WFOY>z{@@mBYct6b(s~+=qTO2T5<0nsTUbw|7v-9F@o>I^fIS=9FG@71vieFYVV*7*5?$j9X?I zpc5Mvxl|@ow=d|x?_(@%I2nf4EHmFEwQ6J)TV0>Sco_WV$rQSnyiJ9E8n0k3P=^)M zj$2o-4*21h8agNaFK&P5k zFhML|DdIb?i*ey3yp87d4hqpD9Td92dhg=6NNdf4=^vHKQqB-yBjn6}!8cxl%mk@* z*AQZtn7!N9nD{p=kIK!!82uP3i^@K1uD}=vxi7QtZF)DC$Sj_uJ;mG|`#LmQb+g{p zZ_?~hVA}1YcVaz`S*BdWQJs(UtW9k_UGcyjyf{MKI`7;ZO|!;3(CV=S7iJyl%!ydz zP;6}wqM8UE{1s#MXk+KLrfD7!I!&{nEchT07l6Po!^bi9=zW=gv@nA5<(C; zUtV*z^X4ESQ4l^A2m}}E=4~(pc*2Fh5@ zSM!?+ls$-)QJaK>GMn`rHDY1^xC{tN)osy8tU*x+VW)ggVTD+J-7fQd9=Ip>Y00aH+i<+fF9>-=ZmvWPJ{ZE>#Ug6V-k)nROGOZ{6 zy>{x?KTfC98mbKPen6tm;keNSH%N2!k z6e@?)?*oO{gs%gH?pZ5=4LE%yMPstnhHx44$H=&hed~!K-5I6iRaD?#b(3DbMl<}$vw;3w3#9iw7eBKN2 zL*sLI0%JL0(?KX_pd~+rk(>D9IdENwV*58arbqp|6K(B-v;h<1nQ8Q2x8_)M5x?+!P&>p(b2n zQP!&0ymB&vxt0Vm09!Fq*x&&Gzg$VF7Xnt!d7ISObUFb(C4|#yD~yWJ2_zlLT(e3y zpR!Jc`kS*MFdJ@hl`udJcig~nB@sTKqfX87Q{p(IsCYVNqYkqeA`2mO^eAco!mL%x zNC}yZ@LV9AA@%aZ0C+@8Y*ZmVg)+D+j~5Z{2nv}i(Pngcvl5VrvB`Q=s1jExBGvze zNALdU7D{1Rqvy0(s9IpoUB*;j5 z@I-_B;4o^ssN_s_37p^SVgE5p=G#>YA0GN8l%D73!SVW^KAgFdprMgC5I#aogy{?p zjCjCn&A4dz)X`r-yrM)c63G6+!CTH?Ndsy?4^%3PhB^r$0$H*O`$|ag1^}WOV=g2t zf)8~BD086rNkHTs2)~#Q5?DA;Ls$$0*8++VenW^cX%P8vfKoMtDHq6K(@1+Y$_$co z=&1F2P??%{M+X)QW$&)#$DabT+$um05Qq@|-AW*dT}&2$TXeW61>gx0RBVi?CU30(8;7ST z0lWby&jElRY=pTsFPmQd0g`{E;bS5E#{N990GrOxOxgfDv3g9Jp6M)qzc zVj%#C1*lE5f~RjtojMF++W%IO?*JPATSd;1&He8cd4RGCEIbqQp^qj19~F60->loz zqCREHXymH;TRT}x?5LH=l^w{86=@}Z32vEjbj@!-|M^fnFmh4-;@`YUMX2^~ z8#S|*Skt1rHIe~E7-LljVIPTF1Ql{Oq*-Yh*Fx_Gc?BCERxh!++2At1r7d#c263O+ zoZXo!F*hv;IP#p_s~#$>o}~;?G%lR_yvryrqx|K9jxb00sJHWss4wqPezd%(7_&uE zrh1v-rwU3$S5(9_ncrPZm#hd5QsG|go3Kg4689STx)(pkFOPj~%>s{_%put6F}mz% zh_CeYk>BUw2~)bP9o=o3KMOfYxb#VKX0!BH;qY`0DI0Uix5vR*q8LC3V_;$0< zz$O&hcQj0fJC>5MGOQr$<&MUgw%#%oZQ^C*PRJue7J8a`>mFmZXnZ>@i|3XeV=NS= z&(4Do@6W}I9lVYUJsL*7Ff-jd0&L&(t$UFHpImV6L(6>*;BTs5!y8CuUAHvgWr(IR z?^pAD@_rxDT4J8+?*bMnJ$LhG|CX+6n?jD2wi}?nyS|tl0UmuZ_6*71Fmt;{XN(s| z+CCF7cA}IBdRx`||6z+bOqov?GFaIzN&mh9|p;SrPl#&6Ay{J^*{izH4b}R7d9#QLcACI2jRJO+65a!f8gL6lW z`e2(vwFLH#d~&*IATxnt9|c-5a5XBo#g%!nJ_of3Im3aY zq0zbGEfg&qbGr(&qvx6hUv-^in*-tKvMv6q1&<8(H9^uw20mygnd4kX`E(*#ZcP+J z%}$aSW^6IiQfk#4DK%mfm)uW{xZiT{g4@y&dk8|Ag%)^5f1u0IE^<=h=+&87uR<~G z{_CcU+RyF>sLehHsiAs*DQS|DSlMB+`#jF*H*)Ke;DcPamwa3&uysqqIR-de8@8D_Dn^%Gsb?3AfYtO&x#VPmI|H z(;Wq-3eOKBOk8ifW+OLpgA}0g<5P+?b;@ml^!!e&h2W$ z5k%s(@;Ryx$U+A+6j#v43n#Q{$lomDcKtbscWwr(CCNx?Kq}fp)jk^$eR8YzK!b^d z#>a{g$-WPco^wWE{TT;kjRXHwC>Qb%`4#7m_cCs?7u{5dxauiPlvM&M%tj>#NIvxr zW);>)avl}gA`U(bMw__z$5-}ocE8=brXf{?VwjFF&J4GktN{A?$d~B;fa7ttOJ`-x z%T%3t%=RgHoFFyOUJ;{&FWnz#`fi5E_s&STPWy9XZsLH-@^N$9wd)BB55^3j=Ec7W ztdz&Uj*?vlIkpDa^&nusmgkwkeX|DnvtD&4xwQCGFD{h&h(HR zSno=m^@jp!0nm*(JGPVxq{YP%#r7*T6kLeHGeU_Wv6Sr~2N6MD|M;>v4P3wdd745X zZy_Wa==Zv~W*bz{Le{38EvA|)7p;#m&|>^KXP%7gUB1$}!*z54*j1wnv$K;@Vp7|- zuUVrc(PuBT&^uCp1i$LZR#^uLir%PiL1c9-Z zl9DbQEmd>Qu3Ckevmb#+QC$2MxIhdQ_h2SnN=q9CCe!p~|7g6cJul179=#VtF~k+z zm@q~-sXy3<#{7p{438?l%=(l2Qy)oaIrn2&7q(~&3B|GhG%EbVqKw&el8 zlxY4`uYxJd*{`n@_ERR`9`sl_02;iz%r=jg8u4xj>w+$_$NgpgS05#Rb0IHIpo^zW zPkxl>w0l2-+>`tWGhmT9_wj?p%E-vw@2h_RPA{ynmrefA_fx(%Ol&I$YzB>o*1n^% zSmOMlty!nGeQ(VEZRFTRV;R$OLR(mconb?dTJwTpA5Zp|hCPb&gl{b(NhicDZB+PjH1h7d; zBaTXXfQ@O?8Nu3%&u=gamGtj^o`&G317TCfLI~+Pib@p%aQJoX%M;S&2XrWS>-dlg zC>G*aLcoU9?GO#A0LiG$`mSL?*3dN?%E;UU6g?{GrQhRw))~2>;?rTlGMv4#mY` zj-;aVb$N7v0`oHP;$5~%;i!Y=J`h$!-(f30TVN`h0Tb2?Q_;2`EagUZ`RAS3y);sp zws1)`@Tm{{(FKS0{3C#(RRwI+hrgr~Je{$fn$kn`d=m|L)0yyM*yyzul+chpuo6%} zD8l8l#CX@GG;ke&`ZS7y8JR0W(9bgekZ2o8P~cfZI-()S)Yu<8jTWiO$N&XtEGt*S z&j!@bo$&ul1!@A3jp(b%cZEQS0susW2-c4AH>ewW>UpFY*?K~9fI7#C*P!2)yc2! z2*`ZLJMx;m_bp^7Y5%dm2H=}I6zqD>Xk(vXGk|TeJu2$RcTH?9$=Ct z8ST!IzdJV~t={cn>OU!ymv1%RFb(&=)sgm)DsrT)=6u8R&uD80RDrj>SyXI#}nRW1=Zm z8@s%*(`B-PAW}_TYFI<2))J9W^F(pZwpYkumW{+Z{yN=NQ;Hosb2pNw2!Oo(x1Ga5 zrLjDG5m+haDiC-AbC(52gp8sN%eb0ESjdN@$*ZphRQD!c*?kasuhQPl(x2iK2 zEfN-0oXHV&wUIW$T5aQ(mlQb#sc~pyV*#>zGPNuTqRtaN^@{WfV0|+2&koT=G;8%#QNVy)TBUIVwY&7n;Eo!!DpZhY>Fn1u9yd5jZvxrFZ1 z%r0%%K6TK(hjp#_T?*Cn))bQ=wCm1gcVe;8Wyi^g5j*eemWQW|aImZQWkj^s{?26o0c6%7yi|}r*!mSUg7myt{Xtjs?8>8A6KoBu zwdfhIj@XTvzh`s%%a`-fF~Cd<<}HfehZ$wlwo;k@+oX;I%74l~ddaEmhCOluAbE>W zGc?VuKcQZatP7M4R0o8~9mkf@I$#6lw5)B=vDjTWo4!DwgzfA^^wD_u-Zfpo4v8mz z8YA7U-p*^zN>_$RBjLoMKm*>Jyk|(c*&Zr9x-Xem2&AH&z7k{?c|d4 z&{CVaLiDaSPw}Wm_WJ-1U5~JoB-5Xj(}5KCWt=%`6h!T?$P9SO4P+G_p1BQ8)2VD2 z-i51%XPH|wm!V@sZTSs@?in^ip?MPYz#(PX9<}7ts2=?~LtV1@36CguDy%tr7Zlpy zJgV3LpD?Ei6Ub$y-lt9zSLCJ zUpJOND)QB?oriLk=t*Blj#>`&`uHJckzVpOs>>onSo;~LFG#mbK_3%qm?4%?_Yyhl zFSZwwFLDgw@VkY&EL9q0=>Sen;1mqHiLhGyfrn&^%lF3^#t z^>u_r&S77N0^jmt%$L$7{_5D!!lBZGh8!+_Gk(sp+E=^jA8TAGU|i8tdX8toDtK}7 zE-_aJoYRWU1}FFCA!L-tIjh3?T6yMH_zk(di&_ndm&m^wFM&Y&0GT{Gx9RAY=)>`j zXA~r7=^70k2|n7a^s@oXR)zKU`)VY4y*`Vo*%Cb6Um*LIjLpA|hNKG;7C^}?(yF!) zQ!jL-v?@4@CQJ@<21vn!r!4fqvS~NrQ#>v*GY37(Fz!Ld4Oj-3lOrRwWzmM_sx?_6 z>t#VwGCd1blzMgtxT6x0)+bS;7V+#4t0XJedytW|^vH2B0>|<@@^Et$tnZfvbZ75c z>C86i1$voHp2w9LPSjb#f+t*)#5#Bza;;GM%#L@c0pnt_bjEyH-_JCkVYfAwJ785w zUDdE3&R+?j@Tu0&ndM5Ct7}Hkt>W=Enn**)> zch!>Lv4f!BZ#BCbh2U1Jak%v< zw~)32arh!AZoo3cflrU3A75K%vMQC6WtgFSIb{e~_H9RX=UKVe?{&FP<|5N*&y+|N zw*u=m!g-jRxW>f+e@iv80wYD(OhF@`B(?8f1I=stB;LAwkq%|2_=vj?te!S! zY4w6X*z}E}MfpHdP9AOaLY4SIevax;;&yrRYzAHsa<@5HwLae&(S@NgSO!M) z(CU68t}~L-sNIE1kd!PFAq(K|aU0j!(qIO~RG+(a`j!&Lig{?qV3qBOvg*x)^Rf!I zL@RU0xWuVY8(R#$Jz>GTw`WDh=C2r!i@qXxRNqXUhpEb!P&dx!08gn@Wqw`XXVl+s}c;isw)<|zy!n=jja->3=~ z!!SUU$@;r24OiA~0@N!d z_62~#rvf4+T%i9wz)Xk0bO7_0VbNlubEcS!#a?Pc91g<)fDk%4M2)Nw14(?`VWj|- zKrw>k0x>a_h1dv@7we4{D*s~Op>&ivy$F#?Ag~LH0n{b{Rc>HojNr*^0PD#rAP7)} zIPn`DQrhs>_+elbz!N1$SO_Eb-weG@S!~!?0z)6KwZuAlNklX81%zj43PLm`f8Lao zCZKMx<>Ac=MXKCeQ#!Ge5XdS?6`+dgWvyZ&{5ZG)e+SSTb#>+UYKoKDuvf(>K?pM@ zm_sbMmj)yGg#PCI`>Aq(g@b`^5(JXeL_ZcTn^jQSyzSdmM7*wW3OvHX!Y!ne7b*cz zh25(F#7gXMe*QuT9YG_^(a-QwR1X~>`3G*uG`MM*SbkIv`{07wE9jT#Q960-ydn8;73qwqS^US~o! zgvV=%;WxzD|Mf+qMnF*LjUs7;og%!E$cWs4=jaMyn+g1J1SkIMOt}OQj8btm0A(i5Tn^gOs=H{#SUs;y)rfM@IYa z&3J>JL?zG5i~S!F-4K|z^i2JL5utz;^r@%Pl~6Fen3Y?+c&pg z-8R_W8nWpck4*ji@ePd?6Ek0FZkN8ECjmcY;~?xH&|TUZ@sA2-zFjtMwQA%*Pnaf2{ED;mLw`f8Et9i+k70O7i@oRW z8$N%JRd_Ml&yFYcK-(DVci}8q%+J zB#3cedx_g|;TpdlYQeX! ~Lzg;(bo+&WE@%t`mr6EVZ*b)DHyCj;CDPAQAE&bMB z%j(Y^L7?|IuVQgpYShKot@BMaW|+L>Fwk91hipBGSvc^_<@281UK`O8+s~D3v}5(R z*G7A7yH9s)Db1y??XipEsyH5L*OkoMjls&Zmdif&GH;pEBJUE@2PN0s_eVGNn;_C5 z&w1U`(b~^=L+j_KS#cLD`cNJc)Hy=7mW;j5RYPSb_J{KKVWQ$V;V9buktb z(t3`&rw=)m6UU#k;f+nQfKJ`y zH$L|{R(YlgTr3Z@?3&fCErsCl{Hq15yPJ;Db?hl@)jJoC1mlZy+^q}F7QEat8?xVg zn2o|ki0E4~_t74ohobk=Q-?1g(ZQpw$~18X=z?IqHW#l-xkEt>C83QJ`@)}UWHykj z)licOTBk%5eLpDo*t=1VV~b2IyKP{h2`9SY6rD@2<2u)Yrtp~{TD24{IV~Bi>$HFy zsve#&>{|e^iQj0CwQ8<)%~1lrllIy(g%<*rt}_W29(bn!`6FgLr03UzUqDf~w2WRR zzuXF82TNU&1mzw{T_B*?=QyNH_16!wm8`-g-O%=3?l{B_nO!KmBK0b;Nb*4h;Ig>o zOYbk5>`mte?(L;(*cflS4X5Ch@QQ|R<|L$8^~{TDjp?*_~Uti*t0p;F4=OEFyEm2hq{#H75Yt_kboOe1y_ zIpqK-kAy~Y)-u%b-P|UqI z+`}3B7}Pi*s#zR*3nV?PzF(h&EVK%UGEOFG3A05mUbf?+tv*()O^rXD_wm&e$cBRrLNKEn#(rt(?;YRjX76zlzX^` zYPTlf+!QWuW`MgtLyxID_Km)#p)F;}jijZvmksYuF2&ZoV4=i`%(C?GTNxE}a zzgu|0)KA~)`Shj5lyLo&W4MpyAm1kapk+j3@$iUVMIUCUOxeN2Vs-nU71fa`=p`nec3|xM$%4s9e30(KwL?ah0r%KX!JAOb1NWx&d%HK2icCg-^0>)OKFTg)qYsL zH0IR%yOK}e*uH|-G9LRbh9Nbvwc)I;R`skmSJX0U&LQ!tt$7ow!(XFP!`jnGiDpR9 z%H{(yLPt7yP1Beh(K+yqfm)?Hd32Yf`O!ZY`wh77?W7;1bTv@*_L?0cg0+CL7ufyJ zKfErAw5-}H4c;wkT`}Gm96#ifdB#~BcJw%=B9DWLQOLkwBPSf#X9|2%7oYqnM$gsE zE$^D5^c1M^(Ped*rkWws>L+b8vwmsr8CV>ut~OEDryIQL+;)F_q|7>rwcQrBl@IQH zFAjQWA0z0(@kG3Qw0PS&&9ifzn6kC?3m%xxZ!0GqD5o~|+ux$4+PiwSrx7|HQbkS2 zI4Ka8?{8wIC}*c>5D&Q904L?Na>h~?f`!0m-9ZwbKEFUwu+6CR{W#Yr-QV>nsdjN_ z7c-hJ2_`JY%{r11T6Je*_I^6bCzNHfHwQtu7>{coT|Q_rxKT4>F+GF*GgKg6dalCG zp>$nv`SRA0p}BSToAW2WOfgE|={hiV;vyR#ShuCvX7F?JzhU+dd+-HjR~@(4gy9uh za$LyO#7F?H3S6MF#FF1&o?Z{YEP09;fKMlJ8p_{M6_K>bJg*S|J^BFnxAKP` zfKL;XwK9$loHn}kju36v2c#>F;JzAez&nNLw^}JqfNfODpRGh}W=a1}!vIDiEiOcW zYJ^aAaQUu7uG17eT}dFoFP7XAdnTa6^~ac;A_jxTH;Gc>YylItOq91kkvI?cfiM?u<1`zyfcTgk&cD!DhFz$ zPj#?B#CIN=ZS%`I7X`mix8_fkZ z7>`jDQ9#+G!5HaKEZ7GqK=>(eUV`$wPMBt`!cROis86aC8V!%;YWv{wnYggVYsP4) ze+}yEXs%2RKZ?P69m(=*@uY@wLu$E5hxDT%Wjdo*Dk7Z2;ru&Yt-QMt3(p%en~4_$ zq|7b~jNoik0?tSCngXN=N?31V#KZy9)L1xNzkh^+dr;{II^h7kX(K?z3UQdOyq{uX zin{cJ7KBH2*3z-@y1Y~+F0BiORFIZ&6fYn@LW~ozDRn}G)!VHgEcjMo-*o+N>ALhk z()E9yW~M2mb@sFWQH0n0R{>7Pj=z^ncwvbf#+ydK99_w%<$d{9TVSt;+uRO^p49h)nCme#d?Q$#mq_55~+0$s9G6&2NStRQMt zZB*gJz8i~}$CtGGIX9eq_P&zOD6(TUjCIyWSGrNmzZjpXL%rx^S(w!MtJ>>K4gTb@ zjR))GGnHXJu;yZbI@jRuR^N2@x>>;)g@8Kq5*-X8?0=if7b|F&Fu#@qi!S{ra3Q)y z*@$Eftv>9%rWWKz^d}iRV1wY*USVkRy>KH#Y+L5G8vU?gdUUQx6q#?OIpVo?LTA=# z$6)TA{Y#72J+J)P1I}^weZ5d6<(BYG1Q=$VPw|Y zAG`-tf|;nA_e;4+ORgPy8;9QKE-&Mu-G@3zg$@O63$dIrC75puE1s)(@3u1!`DG#Y zf!UD8;+Z9{6x=tCCXsvn489nXtgOL=sdI5^v=}ryz}s`;x-Z*tmv>W_!^+VSBRO%* zq0meN5>579Zu8{=e_-x}ujy__Z}Ga()&V?TYu$^XY1_7&psUwR;iI4d-Z4h9Ptm2% zQn?g*5Hd95>W28L^p@aoG4Cqz`@Pxbb~qJ_Q`*OJZ1uuuv2F11_1)7geGEA^#`()^ zlU!OnZ}R9IcVpJ}q%^H5JD4HCvY|@er9H9hxr;D8RL)J;NM4xvgOD)Z0@YY%S7^Pr zhZOZ-@#(u7P7&{RD|nVYC9EMP?xSUp`=V@qt^2)oV6|>Wxxc}@1NmUtmin)j4_0I# zTK1?l*i$XJhSS+k?d#O`oO|7fvP-rfbdhIgsgS-pB1e6kW1l7VBxG6e+Q5piJcu0k zjfj2shFDaC$r-&DRz5nJ8F!!hPSE=y$tdWJ zCcAH&fA=vRLtcu>i=C2A>Id%UoCV1WksMtt#*ZG6H(e+Nm^6CwVqBO6Lg9XIL3$bP z|BxfTaFG3T?1x-O%2qQF3p#={S94zBU%42IRwX2HQcg>Ld8Dj-Zi2Lh)q+U<@dYtC z$ylD+ZLvr4>iK0)JRc5B4^ivZ5yq~y=6olSn5T<~2#_dEy;cAn#1T+R&--2-0rO6v z3`cj^s+yGyJ|IQMVt?CMHu;@Y()%>6M66iCqjXs8tKm_nMR_3u%I2@6w?Vug~UG-VWic~8h1nA3`rVN@nC^$pyNE=R3F2*HC*VrssC13 z8esi=p&a-W9w>z9Su_(qqUu77_vTN?Q|?_p)c|4?@lsT+k@WXQ86YEV@}6#aa@_F4 zQvpH%TY&=zEDarBdjA#O_TiR=?M8(9lq5QffqsFzY5d(eBSa~Xfo!*RL(et=CM``W`rVLnN?7@6-UD7DJ1 zD*rfWeQp~NeDXB=Hy!kI8A4r3i(7W>cg6CUCPQ{(26>N#gM@D1(e!C+n}LE`Aq=dc zFCD&)HsgxB%{nanwHZ&HD?!Jk?%%mD^6!ro+zF$B=1*os zxD70Qcqn}8j-yIM!zkU7_B?)Jw#4M={VS{cUUSogG1xN1i5c6TKp~dg#Myv zi8|r!5AEqk2g8DlxW$n_-;?IP%GBQn*0M-h!dZ~0HPsSIWtxoZb@|T8Ik#DAeHg4HjloUu3S>8|^hW%z z+cE!VQoJISYf?w&g{)SJog0M~mqd9X0HA1-*yIJ1aF$%lyP0L7|L z`U;Recta`_{6CDnd032(-}imazOU{3v})C~N<}l%R8zu4NTMmBNCru?%~nktQ$j?h zBq2-**)lCCQd3CwX(P**$(qnSr|)y$*K_@@=Q!@;{EN!Q@dWg)MmY3?5XBW?WvFo(up2blDX}vG6dK%xQRh~_N&8ODivleiJS1qy zD*@3CG8`<)yJaXwdL|a+OB7grKFXtB2re!1`1twcJgy42QZAdz4+ zBu(Uk^NP9a4AY9bkRZJxlM0IyAwRgeA5^e{q21M7VK*NoR^~Af4pw z${^>p0Wc(h3=oKFR0w^5loN&GR}|bYM~%saEo#IJ0J7SsEqr{h1{F61yw-@jhQgEO zMKSV{-Tk;6LuhYH$^D0g#)fcd1-qAlc+7#Q4YNt|q7p{lj2d}>v*&Vp<}O;ka|Nsy zOwnZMZVtHX0Q^eNtmPGSlLY0QWb<=K+A8;onW2AK+{aFS}X;+is6_ zG{gtB;6P|(CqKIcz?3EuK7blS1)$4=ytPH;8Fvvu)!+{v+~-tw0qCzGBi+cd*HKx! zG(e6TIhjcQpS`s7eHmg~q;oqC=PfNG%TuNQ65Dz3@1Hs@Fpp?@;%@&TXyWr?sfzSjfuenNa9o=XQ<(@rdrvb;aP63=TQ9LHD(Xjn+58 z?A}*ap6&dA1gm???dX_x(`nxeoTz|i;ssS`|0P$BoqN>c8Q$% z9kwTNfAx7M4=$w$pNu|%t|xl>k23qm9^kD#*V-4Mg}S9AVyJbsiWO(fsd+h1h7R=G zn8#=qF`u8}b85eF_>|{(#r9H5%Q9K`&(Y`1Dk*{r2{kJ>-^bX@uwbS|e(%T6pWX(6mM?$`! z!ADTrv8cMmX3nFd0ckxN3erH|Q=}K%J6DJ96TU-bJ+F~=L>>^~ev8!#I8e-H%xu`e zHg{hTwKm+yh5YjOR2mLBcjgmZlcpb#-#?$r)xqu1u8$6kudRQ#*i0%Y4(#(Ej)uch zsY)WxOLyojWA0l=X6EzMJSp*LTzf;8_ub9|?oXLQnSx#rh$3oHm$Tid#97V8RU z5oT|Ng;XYtkZjFTd9}z5o<2~B{}0m$_`<27b~|fWU`RXStT3=+Nk@Ws?~8Nx*jbXpP2nLe+~3+OCyX0oD% zSx#ndW!_hjy+(0cxzhHHn&%L#je4GpEZh3A-#WHpw#>q?;+gCKVZL?y*y#XvF~Qz7 zaN(e7Ln-y3g}Ulm;GC(7Tb~FE2d1+&0G7Wd$vZT{_t2ycNFU79&7XNMeDRGyrIfx< zyrRcaH!x7apUYfo8vlC=xzaLk@3TGr5~S{{J2-izNi4iDo{aBVOdJ38JS&)<2OHQz z+vfxQPL*8DQ$b9I_T?f?r<6J1@arcN4)Ud!dnkNjejiBc-PtMnL>R*s@_BaG-&_q! zmy662&_uH_ZwupmF3{e|JDiiATnN=2 z-jBWl!Acvo1(q=kc#u-w2Di$yQ85mU*gTmyr&+X_76`p$uk@UrRjMD=mOR{3ZS(Qx zBB3*M9i>2wwj%dR-r)=jTb?n@2Ktl0W!%sA?EfI?#X9GjX*Mdr+|LmbiT)z^s{4=_ z_BaBLfgomv;9|`#nX{ZxY3srXT^L=LldSCz=lYK`?5o2$y9U3 zZI8m~y&j&&O(HI`p87tO06h;ZC<4Li6>|rxP7DJ}Wr&DR3Hi>ti|fvPeaB3U&vq;}rwmyN&JJ_oaM=u|O7bgr?S$AD%NU3B~lZ7oi zwcs`%p{L#^V7u=Z{L_}U z_3pdpO)g@Nd1Lb{<-!cXnlHn$&ZMNBE{EHG}hqiZ9VR z4YEJZxql+IjI!a}{1I4Uwecc?;WpYP^m*a%&!?xZmKb{^vb0Bbt?JI*ehPJp4Ii_A ziF7;A^2qiOTA)~Jk(G;y{_yT7_mP5%A8ZFVfLQ&0C*MN}w^$kh(r^He?pmy+-Q@G7 z_w>fA2)r97cGSWAgUE4eUO8-QN*378E;B!Ga$0qJkA(62)+3uLaC4_U(;34(fo+mn%=KI#5CJ6)oYh{ReV&%(D8iRqo0_P zKvAlhSTZm<&V`@d_FAVw9-hblO0!Uno1ip4=6e`$!*yuNON_*D@Mrqh@nH;Sw-WG= zg0HRHczr_2HOKNY=G%3V6DJp;5(LCIwqMQ;!r~w7VL(OA4Q{I+?QK8c^YYFGRz%e` zqz+B*QfT@tOv}LDzP#macb>70;%>kbcD{y*Z9lY`~Tz>JRz*|yh6+3 zq7vE|YOOUcG_fM_V=An^W(4`jyATdk1fnB_ z7Ze9_4F$@5x&Cd}2qxe!U-vWz%BXX79ldlOGG=w&hvP;(~Sz$)oNkIC%gfDky2yFw7_d!{mm#>F z0qGGVY72=^)DK7M)wo2VuA#{sso+cHoM$sXhhO8W=~~fct!(ZQ8gZ$j4Qby`hRQ6g zD&?K7`rl^$hc)p3fR0R*0RuerVGT*b0Ix35!73O$3h%Fmb*rJ9RY<%Xz;W^4z!p}H z0w(agXt3FT9o_$`O~~Lg3(%|BHf;dg0T6wL00IMrk81O0;0^{@z)nDLl7kBjn=VqySsj2d>8 zkLuMRD+J;lGT54lOr8>0We)>kg#wzSjf)D_s_{6`WdeSbE^Ye(fF=?qAG^3q>VpQv za;Q|1o53q+&M#;KXLvvkgeRU;UsxvxeC%O$(%s-&b`ZcgS5cTkE&`trnujD~Z(y70 z1*-tkYJns$5$(pn=AkifxJ8Fg;*J~Q(`6{S3?IxvTFP-p4e?Srbf6`@fq{;0Dd?pk zGU!B5z&OKztkV>I2S}qW>2K)bHZpE?MZ~KKs4jPJ(N0u%g?I~)KLaw{Q$^rWC2%Dj zXBWq%hjQTl??q7`^oc`jH`>jQglR^UNv1Bih% zkOf!)!e><%a6$&YbHK|K*n{M95=~I81UMWdR{($mLF-hAYnpO7T_6$c_30vZ13;u~ ze$PWv%v$+GyioVDdS;K z2uzimC3OEy;(uE?5B_=?1H%;lIWU!UsiD%UXI)L}w47xZ?+59(It^oj5?bE1DaOX7 zdj`1sT}BSWZWsOfrJOZ#C@0Zt$)+VYcrPX{&H1AZT+IcxmLJw;p-3|aD;|a}Pl0|e zo|m5E@tci5x5T6D+xJIaF_#U zEX0_(2+>2NVl;=tUT8wNNSLRC9)0`6gEClZ0~}BEn%&Myi?&;LOOI;SxWtY+*$5FO znR@}Hl(_=dk}3xGO|)^BRVg_*Nz%bK5C8clA~#GD9z2_=UrHydu1qYNi5ytXZcgS= zZ1ck&l5k})#>?R5&wW%B)8ulf}r~jM*&1o5Y8G2v2>r<(`{$dD4Lt=4u(K|1zKYztZ{C_s(=}pvK zdtgab-FjeTJEe2}x^u)fm|*VF>dwaBpV z*py$+b7ekFz2MPju%l*Chf6YR8wwr{qkE_N6LthuHY?sT-bF2>I9dbAcjixL-=`u8 zm0ZstgQ3acl+D-9mKodYXdm_<{1$&kbiuo~!4B`<^so&%1UyGw*WEnAdIuJXlJP0bzwr@+_2@IYslXAF;!&SWzS<&x_i^Je3_oVQEH>mBYyp4TW36t zdUGiI8l$Y?fo9mxiJ;LFnB@575uVZAgRIbtReDJ+*}p$AxU*#_N_qg9?x{;_rLPLj z@wJ`R^>ODvHVevfr?iprGe0Ov45;z}U>am4C$tmB@TegREw+jDTMvL@f8Vit*oFco zhvPo_nK?Eim){(cv$-vBdavPDSUJtmp0ah)_9JV?DF^SNLo)Q)j zNNZ+2TxF-NqRn5)glXaq%vHD1$_zyyEG?f8`?+)!2rP9(y{5lBk;&W)_**I;5 z2yNFE99wq=ww+_5Y?2|JsI@x3re3k9W$?L+nhsHqKxby+poB5}9 zaG%G1KUy$Wp6B9nr=YkBCESJ90r?XyMREHVY_WQ8(A8PTI6%Y2Cq-J_Hx%2)z4Z<& zW|~m$ccUMwdxf7}q0TJ{VN7a24BlLsQ7a*AJ5@?5XQWc*L4&qly_55#)QUqBwKfO_ zq-EP{ZE~YAGR2icYlh+bYC9>|g8N>PEXu9aw*gm^BFOWguvLFz15OSLCvLnxOxX-s z*X2kimtAZiyi;1URifhf3*;)zbDIdpK~``r=7qhnNeN4kQmZ@{KmNqdQw67be=veh z0gL9!uVq_7P`+P6=D4f!lN%uDd)GIOfT9U$?>aW*WIwsp#db1YmQcXJxNoj-P3#w~ShNJ%^N6GG4Lq72yo)vDLs#gO z5q1ELoBh!I;JRvL&~v@>ghGL_!f$c1r+D)VQ}L$J1+rb21i(X^caQCbP?D~G&ih*% z=j04ys0Y)l-c2C02$>EP1>?vUXK>`WJDBkG0*S?&t%NJ~st)|v1XnUPn0P~1F;o`h zi8oYFT0wVcI*sT9i8}WCVrV9f7`te#2bT^+f7Q{#zKYM32zdzMk~#4XN+C*;f73%V zGLH%#IDNjfcZ2;E+B@3kqYLx_TBO%?_)n4ES9=+*o_=4O$O_tWvdPYgIMtuaal`jyKk%dSmoOv6&)6qoTukSgp3)G_jh5~PkL~gx%n0q z-`ENh3N0%ADFT+Kza~az628J}Y3FO-2J-UEd$?sc^X^+N^C!2)eZeogu7TPf)a2;O z5f9NH16~8~b7Gj#2lKoi3MS7NZa9u1X{*L;Ivq}DH!v#=kaMKIeBr4RPdX0UI2~>* zDBiS>0XRRLdP^)t8k~I6=Qpu_O0g2IOCBEZ=nvLglFZ+9AA&9lPlrTtTc>)Knn2|2 zS!J4c*Nt!34=nlhlESVsg;mWJ6-eZ3OVNjX$y6ODhm6Qn4g>PPYQ1Tvq zKbo~asd_`~3jeTY4-HWM!<&-pSwk9K&T)$ulT=*wQJ98t4sIoM+E7J%l(+lNvQ7nv zu_2SGQkSbv+c%ZG_(Xpxj5Vt3%}G4*uHeEiccn?J&xN4wKV+y*Pu8>~^*ADQezW|^ zgocG31wJOv57KRePiw|L;rW7yx#j6y$U>%AgD@$nm7~7E*lI&us8orgA zPqp_b)v+1oeA_^QF)%Q|O_xcB{9mBjG((Y}qJ(1Tb=I zNK%a?VnT37gIv}{L<=y0j5Ml31c1FX0~u?WM@WPRcM(D3w!RvFhf4%cC9&!}vG0LQp5bZK*)()6tP&aSdW6Jb*5Tf%=p0 z`~pbSUxEarPsSM#d5Z+}dV*j^WqskdJAZZEe*qGiBy6Gx1V|PbLa$1*uMZ(JWWaY? z@r^_zxZAj33ff(t6-L~p6UYruO`u>gGYfG3cl zcgg!s⩔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%0A_D8CPb*MFXr1?Fu& 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�=nknAQ{B~O>Pf_*xu6=Qk{cu9XY{&YLl_(myF4xlU(Jy!mcf7cH`wTnKd zqgO6AZ~AqJtk3)8b(jS3+^$l715i7iM0ZZ9Upo(UH)$G$$}HVTBxGHT{RZlH=})hH_CzC*buy_myO$ zi0pw0{xL_H+L>36Y?AjSE}woXX@O&`Vf35XP(vzgRr84C&ojJny$6O$Yh_eOM7a1j zt%T)q>Cq-@CsyujKkL?}RUuto{c8`Ud9u@x#)oP>r*`gIKK5R&(w=w0GdYqZvR#+WZeNcgyp-R!J_5XBf4%9Ho5>i7-bt6+dD3*D60JD1^x=C=I?9Lt5OKeS<6wh;^DC zJ^QkxQXKDSLZ#@y3re5fhuF*~w>>z6Hx@o8OqlEL{PAl8dINPJ%IG8^V#i*z$<`%za#(<| z4qfHbZ=H3viq{W5-qx=?4M%lIvSEMR##;=leL;bOh%_hb_UiU88ZEl3a5gQZcP_Gih4X8 zXDR=MX%=9u(bO&4XO1%HA68SU-$de%&5>a&ww1ya#Ac27va*Y_MN5Mp37Mui+5~F@5 zVrl>Y3|-p-0H^^gl*sxsz!*a?0^sA7&~Z&%v>3ZC5exDHnF{oo>(D$tVu6onP9zpF zGGA#z8A|*uak?mRzq^#UAWKn#QOdLD#jrh!w2dT{TT+!;E@7T0DC`1)`THsM zkYG9T^%3-1smgvailRi~7~qy+0VPyu(uH1Np+WszTQ9&Vk-5(MDWQZjB=`qSWV4c3 zCr5(^g9sMljY;7=IG#z$Ld$@iH2e}%ES3xF^W7ihm9Io$n)xbPVCPhR@C&slidBUF zE8{c60OCwV@jQS(D;K`X0o1|YVB~(vE>tiHYT^sVQ6Tsa;szNafv>`r0X7O)XJX0e z9OP-KiX;)UiI0RXIbeJPC;>J#`5?emOU9A|_K{@>=>H6G*8r#fmn;_Z$S4Hm6|05* zKP>4f&6<0qd2v|GQ6U6sl%WM$(%p?4y?AEajorhSfPy8kDA1C=V$wpmYpx!0Bi28U zZkh(lVzrY@3v%q$36tp1!SfLZer1YViXYl9Ziv+lSY_ZCRFM4aat%5Hw4_y_1-w(Q z+r8$bn}7QVPiAUYmUig6?WL3zldnLY(n$C2YAl}j%W6h;(pxJo{Tieh>gySrJX=h@ z{Xv+m-$$E1^`mRsyC=)c9*BIQZKv`oht#B%i6t8T(#%^EeBnNir3Wp3sgO*zdC*;=9ay zPccR{A*h$P-@g_RlSsi!EtZiN2}v4Zts(O~o{xw+f9jQ|_Qf!d1B>+Q;T(G@2>bh! zMLoe}xlQ2+ma~~{vF5*WT09Hj@>0IzuO}@Z(ISvl(st01cL?N-$aC6^h5D=9Tx?*`XM+#0jDi(rNw z^C1h@Hf4tY=x!Anro=dPXpxrC9(&zSJ9|tQ#SxG5a!ikMom^Le)xz*VaO6>|E9JwQ zc?mSeV`~-Pgmdx2!ntEM4-!($qgdWk?WYj48&=xK`GW)!%NM^i7RUGRWlW_Ua=AyT)nALTVQcg1)0$d;jEliS-XAE7kAIh@lf{$(%2 z=n{vBr;kLZu0*MZ2@Ac`X*CeXi?eU~46j+bB|?7JR~=%O)(3Oy_gxryXLw3A_B$dx z@K2vC)O6H-)kUKb0bmgEyqJoL=Y8^=*CB6AyQ8E0I27ThAC~47p=vsO*H>bHZP}?g zd&lMXKLOY}?*+AMX!89}KB^(lFFZB&cbS{g+~ybi9nk1`UJRpFZEFsS-XXnoyYB@r z#ly*mfzT^0ptrsSYo8Btf2hlbIrD%gYfCB97V|OCDqL21P3_BdW_dl`hzay!I1fV+O(hT4grbnSTiNm;ti$nPJnb48rARJWwdZ}eYt zzYWf*wYI+>zcgk+dEZ@tM=lYphc_yk1oTs(vjKYe$2HCA${3tf<+)D$d$%=HRs!2^ zojS2zOd<`N4x>S90v{JY<1y0As2$V4M$Vz#_2V9X>QqzP-HP+~2!-CiucJRKa6m_= znk*Foahpm! zO+D~Ui5{v1u?UC|ActhHuO(c=;HHX`2|SM}nZ_-ZhGG#+WlX&q5D|M@u=x=&6iN(2 zyNWJ`m1Q{{ON8O&0-$(Yq(j+g@8u@g{gA>(Yn*i`IWFOg12;k*4|h0sOw!NEyv^fo zzzvfDn9(>AlFlwv*-57Acg4_*SVibj#hPk?7-@VAbH%i|A2@ZQS;bXPqXn@6(+3_n;nWzr=1IMR@$mPR}&nV&+vTAtn zY7+{~btEO*YdQE%T49$k3sQ7SqLNrZh@(S#~N8Q=72U{njk~7Hrq4%^0|R zFk?ct>8?y*eur_lTmeAsxk3PWv+z>VfZp-umg&?HU?rSIE~Uy4tHsVKYavi<(RqD; zK(xu>t3H9{6-9(V9DRX+hX&B}6{op`_UJ6bE+O1dUg+rd=J=eFUp49#R(gllf{v#H z9$Et-_CF>*8(xRxO!aKKR$r`}kOxsCu}*1!22ex6!CS0b2?iujjmIu9*WLR6IAuz1 z*Fhi_+pV($68WU$Xko%$*j?3-af1jM`&d}0#&EOHsZkz?XGsqJINFM+62787{I+N- z*Q?-0t(;!l0t=@`XPi$#qNZ9f4=S?9%9U(+WYD_CM7~Y=hb67hK5Sq`tFl^9p^9#~ zr6G9F9NR?(N)p_^n7WJBdm^8=hLkPoEAgQ^UbWLZQ6M5K|2)dyDgEG2XBg3F7LSX-$H zPjiD)<@SwvY(TXafcZ-ikA)UdE*Gc?D-CPVt`aWMGMYy=wfnd|0B=!9$HYDa$kaV0 z0!Va+e*j^!kuFqoySQlTyoc(geQOR!((!uD0(i9qAM|q;wr<5&$VYpjMlA%YIm~DM zzMO6Ri2JB|d5aBKkQrScvuHgDcKAbh9xU^rUMTCctj;#etg6%f(ye`FJ1X13>*t&j zH4poP+$?ego$u7vXt!(FDR1G+HLHc4NzDB(P_Y$?!!BG0TIf=S5$pL_YHdShSapw4 zuA%mi$V^wbH1^e0CXpIp_VD$m;!S|$=dUm!0WC?7 zem}NYD)QM4LmYD9qv}`%=St;Bq|KSppRZozACWy=tmIT<^b5>-1%;JCe!I-p99zQC zLVv7)k`E^d`s>#HIA3gG>%zxAe^u>qBk0f9(CfcO%I;n1D8B!^wC~Tmr3#3J@cC6&cjZG6Tm_GZD2oA%;zd$8ySR5ak>TxVGSC-JiNw#Wj>U!8YTZ- zH~~x`gHCj;9C@CHz9q(~brB-uf_Fz?>I@-M3I&;i%Op5k5`qn8LBO4NZh8Z_Rz3qu zki$B`b##de2%tVgf@PcOcR3x@gY3qG6rFLg#ZNfE#sry>VdJJNNXiAnor0C0L_J5 z0T>ujDp6pHJdc&$EFmrc7@AzgPMHgO*gqLL;F`={m-O@ET)YB$22{xm(wG9R!GbVB zIHH(1hJqfUg8nyw0kU$AErCDGh zNB_82}Z(WfAG$kE(U8 zQzM%~TWinr+O|&s?BkZzb9M>-X4ft}KT+(KczXD2pq`<}M8uQ<{r&U1F*zXO?Q+ju z+XeqWw`#uhyvQ{e0;*H@5HR^&LxEZ$jC-dX$T~hzLkR>*qCk>?U{rK2QZFWJmlLMQuM;z2V zdy`OcF8;)qo0{1B1-_e>4$+aqq`B1Dry!-jvb0n(&<&b%9hzD~2=Gab3TcD+w>6xmi zygoO)^Idmfa126qy_)_`PO4j(Knou0Ck}Pu{ZZPReTzE8G?Po%D#p2jqBi0sgH{7O z&9Oc@q(UJ*_cWg77@_-z%u;dwZqahLHl(y&-Sg+0`)c(K3wR9%oF-b!G@7t1X>FG( z^&j?0X?d?#fur;&PiA1iYjrcrJRs$#!Iok1PmUv267xO>6}FL3s2)yu7~pK2W9{ll zzqkgiS{b`y7ddI)ja;i6_YdxL?rO*j)T&x+edA81%Bg&1z-*{cG5oYu;5ENn{@_C9 z`WmMx_x@DRx948TK5?+2C)r6ZKi^>9DZY*o8JZ3*Gx`eiyBN}i@6Q|X#RVt+WJ@92 z8qVu^NMO@omCH;$A33)=SzA2oi)5j|GEBTM-NC{TQ8)!0390;$}M^2CeDSJI;f2 zOc{g!&16`e8H6J;(WGGaDPo^8>)h1i95Y`<&MwkP4YPhP7c(4c?)!Qqn%^ogP1y6| z`)jHX4@!JN!|3w?)Z)wcoCqSVYSJ63=8dj|3YJR7?NJ(v+etJ_KvP|KOhTgj+ed+G z_s5P=&y*mD^`o#2q%i|yTmJD`Px#5gjg~%g9I=WIWH;3^)gXsjmc2O;R9*!%JK05^ z+k%gDX@zj}uuwUV%rPBqD_j)dj;3e$o_t1C+BZYttbIATVHfMqnxoJxT@;P7w(G3< zYSYdl+h~suiI3s<(k&EltaPb!%tByf?6)B7fp)w2W)s}*(dva*Kg+ePT`)MYnq>M) zA>u>jPi>)`fxL6;8oMZNYSq6L1JpOXEGKhI{0mE8oqapAY;z@KCx!s=WT-gJ&?fLh zK>dP{bNxg@t44uEmrgyHESB=H-(&MktR>RA6)}V@ehwJqLxzDB^2agXqP0SmEJ}O}>ddlU2$i7|WAc0m z!eYTt6*0_BiX+_%i=)@3N!dmNEPnB5xqyt`V%k}MCN92>k`6b-S2aKD-rJk8i&X&UdQ<}S=X{CR9%t94ehSuWHpw_ z3`}MF`_E?M8t%jHy1a0I?5IXeg)H(oAMHMp$Jx_Vcxs}dK-Zi0V)HA-4d&SfaNY&t zC6CraCGyYx0s@l>0)Qjl{C2g+iett#WqYSOmy>r^)*Y4*&-FlKE}nY|)C)BW4rJ>- z)Q1Pr=nLBa4Cb0{Hiwq|@?7e&p>?&IH~f3;y*mf}E%5^^k#>CyRiEVrI5A+xO}s@x zB$@jDiN}u1+tyO1a}t6XqPk~_MdwOc`LFLiBLHm;uw*#ALjp0@VL`$7E%odR9Om_t z>Q|*%S`Ct1bVD}roGUAP@|e-%y04n6cs~g1)`~3AEtzLO=AceGjA)Ha;J~vQdAssN zx|^p5)M5H^*#&`ay$AF``nBp`HSmS}2YM-uO8r}7%P_CPUznAN)Hz%s<%JA+P5fCs zFwq;|JEBSo9zL9NtKS;K>z#h+aA&iIVD?&{W;o8CbE?L zj{M)K?X=@AZ>a0|ISVsid4io`cXj%c+ssKV^P26WYAFon)bWxWD-n(Qxa+Q?P!(r7 z)Pn!^K2-@)|701ld=T*men4npAwj0}!%l21mk;JUa!D#h0Q!~;eNxWP<-#7k$APhE zyc{_TDrs=*h6_`d3(#@|MV1O`$Ui=WojhP42?Oq}crzfcxhPPYTeBd&asL{+;j3tn zVBoj$KqKD*Ffbl1<`H|}BSG~%CP#NFkt@0~Dila?JO*D6gjZyNlDbEM{&hWLb26$( zNo-Lcmu2`5Mf|ETAF^Dz6 z*(B$-JEMVr8R@UZKr$Zzrnqr5m~8~#RgA50Np+K;z+4KGk9y0^D5Aj_3Su1>(jo`w zB-nYERCN+^XBV)Y7G4y=2U#k6ucsbULP7a^k_(~8!yfYBhrrOY7h0zOvHu`1Ko1ihvw9I5-dSkCx)5myj#X+f~gBx2FNqH@IDo+HAX36w@k5Le33Sag6G4j*fP|tvhdFn04GIIW>c{n zur@M&OX5K@Od56ratt8M$3ajwW@X??CK%;e%Pm}DR_3ilW%H2xNag);kiXdy#=*NY zsT6LyuUT4;80GsvHM9h%`fm-*D;1)DC(q<;p)f@M9_0A*eh0b0NG;9khTYqa3bgM3 z9^}ZEnPQ^KOZpCJ!2kU7cZsr3V0K<@_0t^>2>z}ae;w;lI&|^F=2T;P9Ozi5{PKL; z{bU7sF|D@O|JsCChGw9A%rE9?R?en3Jx0ylhr{#1d#2sA0{uMgA;m-8szcBzAYH>+G0Bae#g?UxzGw6_PF&f|T}<*$v=ta-Zk@K-FP<=BR=x8<=h>N(`4 zZvJ)~x3MFacl0cNIPe-1t$O)EvkQlF<&J8w>WMqHt>w9UOK~m3Y`9$yOfzkvX2s%D z$fcw?UUS_fx73kzgl`k1x556K^V=#U=Bj7=OPMadMx*(#5{V!{i{E}S!?HbG7=U^(e1f@> z)!tbYpe{L;Fb_m>nU-$N{dS(y&e=N#&GJoY0% zhcvtMgny~;P_f?f-r#pU-6?ecqQcGPLM`s%4?f8J-X-C{AZJWQjrHH%#Z(%33(1ve zttX__sk43R3x@ezls0d5FmsSmbGA01+pJ&9-WQ{4Yr@M6W;Q7nSX&}xFBtv$)o}jC zIv2My!OTb&W9uqepxvtr2-C@8^2gOw|vYGSTQc*tq$D0BQ>dUQi z=5B`#X5Im@jKs}lO^VMYaj`6ZTcxU`{g$@+J)wF5)Qd$)J7-)-F5}-W-@e7|az{Jb zYG;RIZH(1~({KeBpA47NgOb_C&^XwgE%w6$P($>ZG3rkg7RAXf)SZjX{a^QQM-v-?> zWO0OAzpgFMJcIdp#aG40WWJ1)Umtx3 zjGwJ~;eM@bd0`FNWQL_R&O<=uEb?*1`fHE9wd=cuh@-h{eG-EIX;r1CSssNW#g|2` zvvh5!sStloDM*7$gqppQN5|j}-&Woym<&gA7SPB-6|~uQLo@)fRu=dr2+0X$Xv#%J zL2Kk>K1f2tZA*kXDiqM8l_g9hBhx)B0R5Xpk9*Bj zY$tV-cip#WoLrgFjvP&nmw2yy2vOKe&|*pHnw#zU9xl}f(eH|hxZ?5{61yjRoM;ih z!6aN1#|)GS?B>1#&_Ykh)9wYx)|h+94J-(yTnw>gHLm`cdwN+xvS`b3$R={+8lblo zezl~GcU%f3RO~a<2pp_7OI&ePM+R3Tx9hcw`ENRukd?_amHF82jn@8ypL8&=cJUB3 zj&z|16OH_&;~O}AIk1&3s6&K`(C&$uM>@)n=6aYfd5~;KlmO7X+|$%Kc9D6rzaX5O zNg}fGcr@E{*o7Z<+7+&qOT#SR=3Nuv3H^YBpM7Uw6(WQ4 zp5I8Q5n%Tk;QbT%H-nzKwfp^8MT`MnnF9{(3;^mm{wbH)rXw4XSzT7WcLtFj`Nj_ErvEE-oaG=hPp+g|4zj}3%$tF5qHQ#y34 zss(*>6EqZ`mpe2ph}%yd310Qdjzk~6j1`9NBuAUV#wJz?*hR$HkrvCtwScPnhK#AE zB0m<0SD+PMv^sTb*RR(|LoPtGxR=j0U^@>#J##Tlp?XyDTJ@paQ6pideQdXc+|F~2 zF61r139M}R;b@g0ml15yt#6xh#@Dybw!#G$=yna^h{2HDI#2FL)QUtQ*;GhwPZp`a z6C?3e0E{L1t|m@GG+&ObzFRbTSbeM4rK!y3-vbxImP+&1lW4%9I}Rj6UV)i%6#Mq7 z?~`M|+w*D8r4g$hpodlLgvY}kZQc6gyv15fU;s}yl)B?$-%pXuI2uM0x0BF^P2P5d zIzEe#{<18Xhz%Hh1Yhj^v*8IbQY?c!&Ao_uTm#>}_yeZm8p1~G8AB<))%DhR_~woe zUp`{su%pf6#%QSkKQ;S$bd3e0`Q3xuRGx!x)=XZPAAU7jQ_TI{i6qch7Tp@l02bC7R;&MWKL6{+r%M%iu@f!Y^UB&4)y9eKMB-qe^so##^T|gORW*ccdaYUEf$y>{jKe1qK}60>JZ5!hT-* zDIdf`6ao}`@0GAv7E+POe=A3Vo-dZqKlu~-JRF4-r+wGN#Y&(Ll>lBzjNkzoKT~w5 zI28p>O%4n=r=3>dZYok2B*N2Agf{U=JJYlUrSKg;)75u>vovkd44z3%TL49-4EeAV z?d7uHn2N)L;Atu9gC=edm+K+BoVmxIZKeI-Gdzgq-kpet0YLSTffP%%u@Bj9b zh*u!v$J1kGvOwO(c9-mG6NJeO(FS}2oaXm+B4W_F$2IYQBvFV@ZrD#G3T%`I5@%AUdASwiDPdq4l9x~95e{_$os9gmC>VHE zs+o&uoJrkTUvM@K;+`mMVPx!7Tn79{`j`oFII4ll|0P-3q2`&dctuL&zwvHyR#HOd$(P0Qcybe9mO1{-NID3*~lYbh}Kvq zW?p^ss{N?`#%|wIwM032@$R;x<#BWRz3lXfwig^1(MB$_QO&kvGjHdkZcWq=doL7y z<3O*++>`+eNbWfMh_1&s6 zzBuUp@h@kV#>&Nd9>Zd|xh6>}FkirJmD?{Krd?#s#b;(VacWK;_blid?bN?h;V-sX zOyb>heLvmSsRoe-l*c=yLB{F&6a#_0?YDr+*-?Rqn^xEGe?E1nC z?`~9-ec=O0+mf+9l4-g1KBgfcNEo-Bg|WA7-E;*uu7X)6W2E0*hgNMWxQNVLTTlb3 z!eNf*neVfG@m}3YV+TmTHWln-J}6Xm+9H$F1kGvFnT4^AkX>C96Tdbf-X7e<%X$gN zycDP}s-Jb$Tff_WkmSJ1LOYRwum}N=pDZ%0znllbu~&J0^8tDWucrI*k{;ZzLN}7G zXH0#-Emp7s!52SqxF#r7mQ8{y5qpLe0B44U>0qJI5dv6#uIz}1VUt7PsTFfBfbBxq znagA~)+WQ@<9<-!@V6zCd2hda(y`(!6JI{&C0C0mD1mFPRKj~d9lyVVfj_#04ZmB# zF?M2OrkB+sTKOk+-p`yfD~!&;leLU;l$P081k z2n>zcg^;Fx<0Vgty3S9DYocggqDr_5zd75M)UQ{jWKFGe_KBW?U_#@C@YQ^XW3RFV zohl;9v#nQDv*A-$ikYs70)wGEhk0$Ck$5q}Cn@A$0hg{)OmbVdBq_zFCkhyEGG@jC zF+G87t*Fj3ajyM_E8HFzIULUZr{TjQa&wiP9^|fA9&DV3Wib#A3r&Wk!2N_~_Q!T` z`=Gyl-B!7b>L3$o#E)QnsV&nYK|VSJ2CF)-R?ocUR_4qpit}*36Pngkddz{h_Lfk+ zcC2{4R90|lmj|XbS8EFpZDHKZ_uFSKbX4czbP=bS){=wiAbn1MW}O@@J(wBTg1i== zP2!oCrmG2%OC8T<-<-y6bJ&3WRI$;@nSntaQiB?cBbkq*5$J1Hh^5V~>{965Q z%VmTxx&Vh(V8i@(@O7=MI-#pu{;9R{49FD+n;DUN;_sRn3rEgs>c4f zVtl&YhQ`QVu{uT5C<5#Ob zj#V*cKwwrR+0IIuM@>kK*M((m;C(clKBSU6Jnji;5{N7-6qv=_R(ypRt^?jHIM9%d zBJW6MOsM#bQLdI^0OAkMXQvH7k=HAh(W zIx%F{<*pN(VsuDG{#6UFyl@2ump}FGUDD}gDY&=j^J({GABj7sH^cN)weJ2Jf?91F z)H6e~klbsr#y`)lP;<0izN{-}>0Z`C{M8Sk>Mwdciyp9bHwb%{J*f?OL%y~(z(t1p zK!chjD{+Cj5;-9nVKgP^jr)MIk>wpbbnRMDy3Bj`F9AMEwY#>I+oq|*dKc%yhd)=( zKkoh^ICS03)bXBOeFakHBwc`0a7*Q=68!7kJ!%pI=y=sG& zD=#eH^q`0GGgHG<9JbadI?J|Jz*kMaA`g+~p-o${qE|UccPR{4FGP@CJdkxXz&5G{ zBDkPXcLO{Z9Tco7lWLT5whG?Mugm!4!!-x> z{ELYJQct=!jR)0^xQJZ1EHIp!L8B9RNF%Y+XPsAxJnl)#T?Ieo{IbsDx?{l5Ov8^A ze&0(s4Hs8Np;Z;7k7{yiM|4sh)dUp|HB0~5J5PG-$@^SSPThPa{O;lrwMkLw6lO!T zroW%#6SzsBCsn+-i1N5<@8#zwyBhm5%;_#?SWTKGtSb0Pkk)XFn51ZJn3(+D; zwDo;GG46@beQnQS_nX;4luOemGxnk@#UlN9K=Yx+tM3lZ|E%Kf2zjJkH*)d+oId`4 zZv6gt^Y6?K{?dw8^mrfJA)+NME*XL>@`W3}(-W%m=}1af`jQwi771_D0{)evh~T1r ziZdR+$JO!vi>_u$G${7qCSp{V$@eM%JG6dTP&6-iOf{IwG}dTO_U2s7 z4iGO*;zR3mFaQ)bjM#@xi&A88x^mKIh#RGd)CEusv(Q;HsquU?IP&;LjM}e+!N7(b z7qUd6!e;SR7Mm2DC2tAP6h-dUK{{F zqrk=UvSPU?jJV)II1J0+(-p|2dr*8iKUx91pqbX7fJLzQVTw$TP(l(f#(B=`PLz;+OFa;t9 zwxahwcRt9pRY1Q75|~4_YxAId!;pP{|9Z_E3kb-c^H)XJcITGytMY~~onY+I zH=SMTcctzDSUlavYCRLfWClTXj^$mc?>~jeyG%1XPel50z^O(5#>|s8>47nW;Jxpo zOFVYWpYN)4ZMU9e8Pq<%UEF zipKLM<9pt==xQ#NtPYvi`|#rvs@`>61+>2^b+~%zaP!vV?6@dnvS$-%oW|auwv+2* zCRP)WiJM$9gFRy_=&2~x=n&E3!^vex>;S{)Qe*-lk&G*f4AD)z`Riaf9OG{TR;Kxe_n6bfY6MNPJyG;7f6 zZTZ6%P z4YHSBsF0jzx0#`WFe0>Z96?})RymuEg zf$uw*-~t(NUs_=Qq9Az^nmw;0^w${no+uz$uTBkt7j4Fsz)+HoHCTNY+Xfamnl2KW zm%)3DwcYx+apF>Ky^Z_umjxu}Hj4la?Wrg-!_zH9s1fcvM6}W(mA&6pUe53UbH7%? zq0rE8x#&P&MwZhc&we-aHb*yj2P{>(rG3tFAv(Z0z7pOGIKcUtTIZDdRW@EETJVm_ ziNuEMb7BQVEEpX7i^)i-vs@gdoO!phx%0ZNQ*QOFU+H0^7i51oyZt7t-j~HNtFG-7 zhHkAA4PO<(22h%EWtWX=pa!DRY^pW?oqp=jmU|_z?zESl7)-x~4L@VTD zs$`{SfU$22cD3BdpQ|hQ!{+a)u#Pcsf!H>qa0E9pXk1KlB(9H_vl-3ShAP`Bk4GRFsRCF@YsI)rAlu4C!oXnzy*bYiLZ$17R}bF{uG@TO*&51aGkIV7On?VwsMUu@+Te9&D$`tN zhO{1`upq1OJwBi9I^mWH-Nm9T6+bMrQCKj@A8khu)yga4Omko^sOi?o3j#DU?ki~(*T?1w1LmPIQH&Vz)bQ?kQZm4DF_7u(NS}1wW6FjuHWliw_7LWS5Bu&e zmd%wC5kb8crsFGNPcSYCrmkKR{&-xhHA*DtjA8XFM27J+sBIHmdyA6vgTu&L2hyh1 z*Jz=QIC4?%*!~n^clYTekyJt`%P)?W1(CK+z5k{6^=#aekJ7JT^=?Y*#+7O zEcliPq*c1sWh1!<5E-A1QJCD#d1X_$nQ8z>vtVk+{eZgVqfZ}-;N#QTKvJY6ZR0Hr zzV?0jlF$=Ds@a`hGtn563jO#>7)_G+~^fq)BXG0K5^F+F~Ro^g+nV}@UmV6*OeZ&9@6{o?Fy14?b(R z``Je6S{`g|RwFPQt|>^~+|4R_9%*NA!)QI}T;YTtALb%}f3uWnjxw?=X>4u8c$0goP3u9r##57vI}6gsHF!yYiGNN5;|nj|Bgu(n02Q8leia^z|3 z&de2sVZqqb9Fuf5Ov_hDmdzwsFJ*`zB+si3%>abP%2`qv4LjT~L!E1PHgSc+DwCbh z{rVW0wkE0uW#@o9a3eF;+9No|22*639qeZ1K{nMe0>{&BPS_YPiI>_Unf3#Ie6%Z z+!S*X92C_%#V9)fGpLC>Da9^H#3tk-4vMpnfD)CFhE?KidBkljLLr!(7NcerX;ED{ zhZW%jcYa2p66ln}q7<-N9`<1(5v;_m6$1z3Qy5~jM{~yX7$QTF25R8xsT6QsTxABP zqU75L6QX3@P_7;8k_M{z3+Vk|FEBbW{euiPFT=VkVW#ou6j?!q zCVrZqF~%V5lOc}JKz}9{p3Fho@Y1aT=y^sOD1b*z_bX}mUpz38oQ7thC1}BEFx(9g z22DuTJmhEJ{cE_$cb$X?610{F%p~tuBf-Ti0$qmWDf#EYAh`m@;}POP&bAnJ@kqc! zF6=)hR{o0K3gF0ph~BEzf4=YgH_>}f02^XiDuX-$KQrt961~~FYL_GQgI7U}To&(f z`73&lRr)8dj#aG`EjhX!w2r3~H7d@HMPmk{++NT+KBhD9868kMH{mPpx%#P{4yjhU z-QXO5awQ(M_@nXkyAl=q!Je%BBfcCaLQEU+`t&*?XYpd&s(@kRtLAaEgXioLGg)Ac z$fbSnDe2p?oav&(E_*PRjC9_{)z1#{T(^O>e%-c`4%eJks;3UWl@pU$Ftj}8!J3$S zVxN|)oN*cU{5c}4cl`0K6i=-nt!MNVmp%Drb@-0{cej7DGPFdx3sa#RyY8iV5UeNP zzFc}*V*;=L)NtoO(fQBciMJVEb2%mRa2g*(IG1%epnkCR{4CY#Pk4LkeuJbFTz%Tv zaXfA*b8}SiNY28axYA^r)0q*r{^9zQo{j2F9I{16GPeMJyhY>}*d8v|(vC8CvvF~` zg9wlMVGw}S$0-fMwcv4Fh)Vu$hzGUmGVUlk&@B4mI^k-X7)zQ##pq z9PG(>W6obiSCv=CrN)NK7afY^V36rx5Q4hrmD!MvzpiMxR+8Tk1WVvL#ADtqT1_z` zk4MNIev8!lNt+GL&pMfgZTaA*pKPjw40dwBsO|-=vo16t-j&N-AyIrdYor_EB_V9A zVH+0_9Q-g3x<D_YBWsx5cqp>BW_2IMYMCcxepQn<(zIy{_kpF$ar+?%IONTl*J%}K zEp{0(qkv6nb= zuhX<{M8$eZ*E@&ZuVxJ-3;O$wVe1c18@{ZaY$34f{l$lZdZW+1+4Ec(_{x|?3p3W! zvCYDS!WX=Bf?~yN)oTtl4^@4V6#@-^5?%PD;n8Qv&g;`WJu2 z6Xz*SeJFT&tLE1L9&|ZN_742v zZZ!>ICiEA5aU46a7*O2&HBw+hQW(yQ`Fd);t<&B50WT+g;H}0j#u6|+Um*Ko*wLcF zkr~d%doZOTcB@i4^)$sm-aWU0|vUg(IC{D|B7kZb=N zYj6Gzb^rhUzh+;|jF+)Z))~f5#x5x{42Gz&RFuxf7L}Z%Bswj#VaAdnm7*F_Nva{0 zma}G1w2xA0AEnZA7NwHH_3C|H*Z1@O9G~O+{T|nGef|Nza2)Qh`}6*|-TE)j)HbKE z6|29Be0v{!eTiLWZ%&@3$u={x#2vmpN^? zV~)HctgRR6wyX-Vf;%$gFAq7_-i~$E;o*GN+U#N6slI0|z|hx*1X*H^|d@4$|rXyzcN3-WY=~NtMst12sdw562*zHStD%`5Kr6#qKYrd5( zLc->47u%rNzcT_?X8&eOx}c&Wb3&APE#9(2Q{kM_2<9tmkRN5Ys}~Me+8q>zhdP#s zZzSs1Q_)_wda$rxFZ4XQy(nMhWv8Yl(`>BD47ulTUH-)ScsT|1riwb&@NoLC)-IWb z3HRSoS~}9~wpC)|(kTgtR+3Glv>))t2}(5z%XV-?F7H(AFy~$_p;0MDm(;_$%(0&5kbG z{qTL;9sc$B@a8)?%c9|4pSNGj%x&87vfRYYK1)jDcH=Y6OBwsQV!pPZT7bLwKDeWN}yJQe5=JSSc}5q^T+ zh;(Y}Y}(Ua084?n;ps`R+M(XPwXtQ3PQS=Z+Ie(O%Ib=utEPI^w5+yv^1+#RHpQQF z#m>}?)nC0Z^e0`6@YCABUjrk+qb3w49R~IuMVcy9eG{qgjjj4joy=jghzRKy(qb;o zt7RCG!S%U*yH$hEGo755N zeSi^iAKmrAekI0c38HryV_R%Ja<69~K5qP8WVuuk#FxVt_Vw@foD^U>7(@)un&hov z+6k(|dB6cgsV^Jfut>H>7dXPP39$qjs`m>^q-5qw539*@3oG%RbeQmQ#GiDbt zH@6(Xy;l~yl<_Xu#rcy~Pj(yZ1N66=nw1_g3q&@R%_DJ7wZ_dhHyO0AL#+dUzQp`_ zrYq6HaCd3_Yp*kBo3n0x+4u9;8>a3#P3hu^Ce!Ir&XRL?cHNpdG=KUnx9Z&B;l*ED zS5Ci+yM6BdnOk3v|26%dr+a>=Z}GQ|`sokpOU^%faO>OY^V9$EtIj`pv-tbD_i6BG zuG;8Z=C-0Z>W(xYfq@3Py6Mu6u|`F@6)L={YOmqBp<T!B`8nnGGI@|?4w z%Sw*GfXst=4#LQ4Rk!5@@Yk_7fN}G3f$3ItF)AGnF?<7OiF~)I6n4|piYhqtgGrW3 zI3bl%z<^f$I+F^bn#VTK?B6^m!b0z`f^eQ%1ogn1^-+c0?syhCxG^3O_9ZdO_M=ng zCv(RzMSbEwphPXmyYwbEnu|GL40qH@mZiap#t^&hFoTC(+vNC33@Vq8$xPq;(q}6K zWkxGpA#6t7cX+y{bQyF**uV9>h>DtFV4WZunjK>AF3&_eS#1lVa*TLH4&m%ba{H3x zP`p&RH5C9@f;^TIb&FY+9Ex>ilG;jv0~l1-7}`yfoBjYrW6J62d@6 z|09+r^+wJr=hfP<19uR2|BC-t7rR}r=&7&u_?#1)*LlN&{?*0S!c*R+xvkVUDE%Ev zJ84ST?62B{iBG_(-N6UK7vL&NaEI*ce~J7~9eq$bGuL2j>6Zw!Ny4Sp>33Bn-W}ez z^WztNcRJkG~c^OH)Zk)ZY2x6B{kCUs_7 zZ!%_XVwssXsa9$Me4k408p`#$!6KYq9vsA0NP;X4Pj3kdnrX~lT}p3a z2g>g5?US2$di8My_N_Y-qvlV(zG}z1Jh?-Rb!oa4R;$!-1Ewb$uYi7Amj(tEjBv;> zI7Gztp6^`S96R7OAq?~AheNYjP&l|FI9S6Df>Y6f1z~+bo>_1 ziC!D2(&()V>K<&VFC$!?ttm#|Cj21q58tVUhM}Zh1NTDDHrXP4UP)8^1M&e~NI}TTsM06SGrp*xC&?m89HVA=x_%|w?j zMpUO>HvADpbU&~c*=S{HJW>^4)`ngkaPx++1G>c13K=HLA%gRKapqMLV$ylLG5YjizNTEQo;W(ROS z=$|}j)iOH(*YW0P)q0TzdVL1ADME>NC)TaoWC$C>B(H0IrE3$GYlZaw>V7Qz6?ikE z$3RPFH|yKjLvNd%W2}+)%D%bhUGrm;Uai=5X`1bkq;bFLDLClFHfas@{9?UC=>t|L zr2~H9$ra8&CkFL@R2(T?Mf#`4PANG4Hc2t|YhdQronDVEk%%l-_ITXVo|}BwY?;`wEx;lRz#r5xjp&z9=4XkkpGFo+W2r&=plJe~g|O%J zP+n_@PM+4Q*bs$6>V^x`XyM4o%ahJ_GDkD$fK0_y(%n6hcv}3Lh~{66PTB5QE{Eqd1}$D{8v&U$xD40Mc#+6{uPll_6XDyeCY1!uPW#6*t+alDjx=ao*p zvk;jRCvue24UM-$c){{lyAxSr<#|* zx2&u658;M;uQ?*!%RsB_de6X#k(DrQKxxrE?)eW^JvwAT1rs8_oM_c(4{%> z90Qe&=-xf|cY3(*HInXLYTJAr;R$7;66V9A*@+&cUr!qrdtU88FQ=i_i)N5b#19Nd zRP7Mk)^@yniRhmLhvth0I<8sY%}YX?4u#^jraz{hKAZsSSIJ+*z>}I&vCEWdS=~;e zOUsKt!{q`ae{L64*y-Dj9&{DT2zCb2wUG)IGd|_!1J?buljEUyZq}jt$d|w}sQI;J z0S0EnzHdK^%|B2HWdCH`B44p{in_G;k=v?ZkRKY9;`fkcgfs20y4a??SD)33@ZlD_ z9M^Qey85{{;xBloU#l>uo7AzGBNmukf#p1N&WWDN`l|IP&RAoJLau^)9~!`{pauc9 zO4c8{p1^_$1_5VIb=*j*0QD2Jvr5Cy7)GI5bZhe=&QhpEa}x+nAt_vVE<6aSg8BB% zq3HPvoIhmL6&WU(tdA2Tpn>arXs2;aA4|saMty%K>(96E#o>DrHe?%nWvvLFV?l+Qjb9r;fN+CH8kQkY1(Mwf;UL7Oa zE1!z<&@gcp>mSD-Itn=M-R|NuE_9t}1aFVswYpC&v1_p+!bZ_?$Do&HdlCAQR7Lk| z?AEt{A3Ic>COnMUzfe-oJslx5ENMh;_E#HS=LO=ha?#xtzm%Sn&)_;>k5ha?rm^l> z|8k~2xj82-V|JbdTajAh0kG)yXBsZD726!f?&zxu1JN0fEGn0&bM=p$le$WT6M%T_ z_PxwSSdEL7s*YweQOMDoLLH4(uSN=ZNuiMyM4t%_-FoM??dPhhy)LPtA0B4y%GrGU zKVs?Q>5sX$&p-Qq>%XImeZ1E&lUi)CX12s6PPKEtD~15w<{Nhof3H)as83Y*Cx0%~ zjp71EP{w`zuZ#bohK)RPv)=U;T@s< zfdGi27H=~~{l0G#kf5|%0Tj57BL3#%yhh;(%#zAo#hN!_H!4O3!trB(8>F*S7C=~u zoc`QbJl*Sk*gGox--BB8IW8iPOWMdS4p3t5+2z!hqInboL@T@U27Ogo5SlBk?8E1B z#Q_>D-q$0Kr;DCMxby$IzbkJ}mypHBqZuB53UHb;_<6jtZOci2Y2mu|DCpG85Ta>l z;eYZ8-J`h!JSVVbCmP0fCE2OBb(XU>B(H`$MrbZY5Cwm{QP& zARZV45`e9%1USemELY+il{$dKRzL-$fF%+>exVX*XKqd4LPa;8!2|Nfhz#adNL6x9 zTjWjw|AX1^yML|ux1cNM$wa7so-qF{=)MRFw>R@m@JuRmjI9;GPI92p!FKyOQ}xZg zOL~LpA0i$yorAAIitA@)+`#%1WfyN5%sIKX`4%MYAWdu$7GJ5EKF(7NupnuNZRw5n zug*3&9I_RXcAOpt^~P8aw#c4=MC9Ya4)>7w?un5{l0SgS)U9YXYVF3w3vS zKD<6TdI%vfpE2+aVGD>R0!`o(?vRjH8MNQu^UAgn=e72<4~(nVWN8gLQ;rj^Cq^IZ z3!}b_jO{kLM-oO^QP;S4yQ;FBbhlaMurfCF1`fKYd|C0y=Ukp|lh**Ho1VR%wV;;h zb{A%KX02Wl51pymWh|TUd0n}gb;OW zJeJkT-E;@E=!Xv%_IQp6v*|x#u3}9)&VYf1jI8aT&2b+^H0D(QQyJE#IvTg?YL}TF zVQ*AexQQo}Sbaw+4{(GZ>X%`v7TU-hj_+D}ytjKNB^=}5+lQq{eGV@5ZBTQ)Pw&Wv zk-;BU5ju$cwL1)nKlD<B&32)&*Ag%!0}p ztQNL;KHqZRXgn;6GH8)1tU6%X2q!9Fx{eA@Z#a|1wYGFJxCe}y;&I)I7mSkviQEZi&9qbiCe=;6Gbl0GDNmFkCmMm!n*=*&pFhmNVXX$)vOcy!(L8~@==AD8;?;Z4J16c;ne+F2a zF?;@|-4U)~Uvz%KPqIi*4$_cj?d{AKKOO@1VKW11Q=7ZnfMH6lyGvez1eyZOHHzLj zyPDSZ={>4M-MCht5g3WA@o(x!A>&{yA6SJ@jP_7~!2YmftH0^KK^*KcgacmYGX4-W!S~Gfo?7M!$W`$eByAzd1!7u*~Zrw znEH5Ly#B<}a~rhkL?c6iC}7)Bc9;pLcRn{@C0XsbSa0Z#&!?f%x$l;iayry{i_-n0 zye;X*)d4H=+&fNO9LfR&gZqW8VTIcT_;{6BhsDbq&iU1vV|GSx1%t{tN}9_R(U z2V`ONN_50Y(Wb?Bs@yWxxfZ+?%V&S_#m^lymU@7w?v}XKH04El*vb`m_Zgi!a)gzc zJwFibFOn854IsJvw>KDb|2bNBZGILTm@)s4ih$2P6PUBDiT{wTMy8#+wh4L|0sR7C8l7nr+ND`1Q6;|ok7 zcj{CY&}P_c8SZ-os)a9s<%C~*`!0BBZ|9Q!}-*g%G;m6`|9xw1&tVr)un6)T{ zhcHvHkb`pK>PVWn0t#xcdGI&YZI%yJ!24Tobp0Y4ou}ijxGZh5l9&za9qEOYPgSGz zBV^b%-Z!lMWEmNvqe&syz zbGimDJw8U5BT(sndMG=JXX|Xe+4jdx{INBBZRNt^o!(azSQ4l}&i@;}x~PmzNMLcw zN8eJGb_>tV8nBn_iL_w-f<@=e8$R}(-f{sN=lG^TDi0tc;Qkow71dRL9XCahPeYs4 zouE1l2^gTL($SY)q}L@dY$_4aq2sGo9!u}m-O_)aemSB0#q6qN-1<#nG{QLfg<*|$ zu@HC(x9wUIAW0OH>mF3gYnyQ$RDkZwA^bg&Uu>J-=B~ffJth3wkDd5ra=dY-rAQ$q9Qz>r6WXPmg z1;X@^ykRrbO_dRnC!aFU!4>jler@B z<@+_Z&$PvU;WjpGIVvE(otmG!x$Uw*vL=Ft=vo%2lPQ4Nw$N}UOf}j$`G1~~QtVDN z-e423?-vDl*Ms{8Zi=t~_8vq4=PNh(#nBGv_4fjw_dJg6cC-QSs!~#sYog70_(%OE z<`+(ttQi6@+qGLR*Ks@@oT@2;#R~7A2dRZ+rnjrYo7B0*Xo(TmW>`%94p$y$T+WHphT_ao7AJf@PNi zrlyK#$MwhIA%gt`TK~*vpQ;j2uo_bWAWR@*@us#HnBgTz!u|buI$YS4pBDQZ+SLMx z=R8;l06<9<%OEXK743RZID7{F9I7n2Fi2~?RfB*)1`sUxsc|)xOwZe>6woM$E{zDPb)op0IR+m-jPZ%fn+L^REgA~achZQ1XC#N@ z*n4L%p`1Kj2vQ8f)2S%gm}Jmc0`YhWxuoU3c{~*W?QR+Nh(vC|Z%zZCn=2?Hs8DJ4 zdC>~s-g3-5km#<&%jBemAQ2*vX^ruRNQVKHq@fDQ3 z$hZP1uV2R?T!BJEE@CeQnj2tNNKr*&g8ogI*)t{8b!F8LgqDyDgG=fU!mopvW9j9U z6x2Enx^PrCM4)5Y5B#Yrw;sw{0O1zCBVKY5v4W!G*z$7+^MbI2kSg%cf5quGkm$zP z+QuMFJ^)gH!bC_=4Im)eZ}S@jO91et03O6G08vi7tv>`f=qo}C!g;FlXu;NW9#*D= zXYzpVy1Z9Z6uMt_+xNe;xmEuja;arrC|uId2gif{-At!{OQ}Eb;N+V5uQk3St_Pry z8`Db9l?sf?E>3;@`G$okt#N|Pba~{s!*k%1DV=xO2%84~?T%1f?WxqWFZi06l?{bl z`}qmJ?lG@U+Uf}s%@=t$1;8KWzxBU+BmCi+Kc^iW<=NFZENS@N(sxU0>`swy|I%k1 zeApSRU+}PtnsXv~FF7T$IT(34!0+j(R_XQ+K`SYYP2Cz{a`4ieVyn;No^OWbu$s(? z@h{5#+sS#0-X9wM)V*DrvpAz>^pjlbyU1d$BRTQRCYi$^wlEHhI#_0o&6PJWR+3|H zLv8M_uRm$tW)6%ylXrF~oau{uuYXd~=A~Pmb;-eM4o@>@KhN`F>i~F3?`FHFs#O94 zo{e+Sz1p!P+$`m;wixOEg$wIxglGoeR@px%bV3+hq~)P(k<|IznWpfcntMsPOr~eh zVx60l2|Bt9HoaVWk=kgTKuK8Ioecqji_t;vmNkca7}#?I$_-TP?a6MtLCbd)_o`fT zlya+`;WD6lzGI|SFWdd<#$MMS)w{P_8QG3pM<3cDpai=Yu=>D_A3MYJz*HeGq$(w= zIs#s+NmMw(w)dueOa$yh9C%7a@U*5wOqU zB&{{XT5=~EpM0ncaYQ$AQ#T?0!)|WCP%bDqW`A=4!}s|mHelOf5!J31Z01!;a7H*c z;C8++NNmpS2(#7mZ;jb%<7kJ*x6F9-q8E>Z%RzexLIy4y5;V&S(+{B6mewt*q3ElDZ54tJhI40FT&}ci<^9Tp8}wHNbzOAs9AThcSoH|*TaiEX5}NZ z&b=`K!HjS6i=_$j;4DTDS3ngmNr}+Q4gB5T7~_5k%<6&aLSH8QoAv6fxr(x) zBcBK{iXMt5Uu0@Oj9ty_HrzLSR>2w}Jk{)?+r8Bttvr^2@g0o*wxcBN-s?G8am#@D z44hZoKXK*Q1ncFvYPW1b&32^GDDtqx_1W!w&um?nJ93N9u;i6=frV4lohq^!YUdQW zMm9B!$w*+Cu8)&MbOIOJYcnb2@yq0eisQ1;qYg<-^JPEz2W)VRu(E)z|sswJrdyRZ@R>ke+2gxy~bT^v+&H9%eF!udNn3#Nq0 z3s`zJ4G75;tt3kwyn2~@FZ(1zESy^fj9%zBk&hv9ZJR7xa(msT2V(T62M?_E-3if- zn0kb-_!WMw2_!yB7X8|I1Ulcd2o$aH6r$L5Y6_Nt<5Bf@=DH8WEqJ$3KQf4D)hj?6 z-O-&-$Z(x1Q{i50I<;2G%YXI+$-&)`T-v&`Cetm-GO%8L(d>OqOmDsO{Ygqu_69uJ zM(Cn?8M$uOOdA(7`JP?Ez>z3lS9U8ltW7?&u;c6m+Njvs<~1KFn}XqzIhlb179!Yi zgm7Id#jxt)sLs|1+kQB?mwR^Jhwap<7yZt~ucM9XzO*=KnU%+1>tNEgf5XFI_+K0w zBYU`^*m;C@iE+h!-vF#TPUIPLKEe$2SvNy<9nE(m!VJ`C3WNxuDrH~%Le>rPM84wF zE4Y#0;i&!{5qJS|gMk)*SB1v;pA2`n+M8bWrO()+TM|kAGH)uJh5L|mN?*nUeomAc zmIa?T(fzoNo$LCi$Cw-u@uH7;{{cnLNZPFlH1q(4hFl&ZacF3hL$!>^2D|mP8qZ#c z=c|ICRf%)jL(8X16t2v<+)0&26mBAPq$h@W+UBZHLC9O%ht#l*0+dOHyZF2NjqJ=n zL#C!sdeFsoRT~StVU_KkDw~qL)11|V)cbKM!+~z#6(i^l55`c6>9vAW?_E|-b~Ij% zIlptI(>yU^N-J5@%Q7ePgpN{1#T*5XkWB@MEiBxncja5>4I`?Q%_nG}0<{Qu&P);B zCFH8m%oe!*Lg>s>3K&ALK(~^yhhZeOjGvMV)>ziNwFHgo>pMh5?_Ay-#s$dJRRYd#@Xsl*@Zp*EKZioE47zi(hlXs6|v zC#x6guE~Y{KW#1(u$tiJ7p%Hy7WF^dTn0S|Cga0qq4fd~!F@ity_98jddap`7hq^F zevc_Zjs0vb(iyGtcbZY=ZxsA%IGfJH8;ucPYS05`;QsQWsyAqvssIY7Zje_Fgv-VN zf9Sm)DltLiWLm*?I23wx*)D`IpUiF00d~Xs#2Z?h`EU88d)#rzl7Y1e+#+4Aq+Wj z*`NP?NgL$VJ>@mnLJE>as+|9|qzw}~aKn5NQ7;2%r%O`bfuEai*84h49q6Q$pD4>W zi+BjQA09XmGM(zj6pb`_QPQ)S;ip=Ii(nB$^kJHc2GMs-%_CZ4LU7&uenMxvuXns)sU&uhGd*bE$KSh zPjoiDHWm1Whbbx}rR(SOdrMC2OAcz5jHLCL>mBlosJ87nDZWTgkVpPf1lV5Eg(kJ* zazh;PXRPDm0^Z>@q(!kGfZ=}D!uZamv#uZiEZHk=bUCDWIYNCu-r+Eh?aiax*v=j9 zSzddPw(XqJ2GQ=qvG@Uv;kimAAse~vjBo?Wp_&@@&@;|l593nP8#Y7S~=0u^y-UV z+~tExoL7x~Ab{Lds|?by@Sk-nb~I!A-Pul>C+K0<`K9!&Z%Ju?&77VP6Lo48YYiDe zpgxRf7N@6Lxb6v6t$)EF`on2RcNSu{sn$RMlDtyuf>dmk;YWE>0>3HVuXD~()Egx4iAQq4q?@BE5;-q&WXgpE)jSL#$Ii&#=k1Z zUMOKg{i<&0bR5$Cg%*in=%tF^iVd5vZbcOt#nWAZ9_|X1QFdEgE9d1>lACNbTL4^N z)Vp%YWCC+zpx5@N?FpSZti*tT#9=Zkn?%{C=Myc)nB?ur&hnDW zmPoFMVHVw%iexs;zrfTpiTr>YAh zScusV7G8=Jx$T9cZGvOv0f#2r*D{$6K$z*|pjV^_P*$qe`3{N2sk3qV+lu4RiIpC*RH)o1KI}!U z`099Y4QvjoE0C6XeZIkm>p3%gv-TOG#B?H?Z0}F7vla;FvNqu2DdJ;(Ke3-ky%n>H zUh8v0@w!z<=WrCkmiKw39-Wmdclrx$zrNPhHA7;DT#n{Uy9vlx#qo>E9?Z9+XJ{=} zIZXykbOaUHfK5aW#lbB<+MhGD;O#`u0U(`<+}dAs67dl*=dHP#WG(=%81w_4RF>~P zA3&OFxr=fYivdxSR`%0zTHek1t4GhqO}a(lT5Z4yj?l2jz+o zoEP>+t?yqi1>}wgN#>@n2sS6ay7Ka>bYbq0QBq++(chIr?H|+#0wYFy&Moa>D zs~|)YdGjwJn6CUHz?-8OP>JKH&VXBxmo=TV>^p;X|>JH9_1(;%CrafCrKzFW8hah}z zHtfq%Th6$Wr-TysV08t3DsQeR4o&kI&@^`S^ zcmXiR+ly!IyKY01g@Dh`hc16>=fW5&1=`Cu*ny%dFrL)@stQ0;c2*V7r6j@!0F0Lw zbxnzZf@+E!J5Nwl`JFhdDu5URV|@J^&J)9ah4-ATER)A!ec;8zcGrQt2ClBeMwmNP}9yfVn|;YZ@K2>US*X z0(c{ZR0^GX0R_Hso86S~$9=#`txUR{^qL`RQUE$wSIEoZr;wf3qFSZ7TgCvhNyIk> zY%Kcs!Xi~J4W{Hlr(1@q0?2$f0}^$h*v};GQsK|m&>#l)p(Qz<0er4Gk zGyssC>IgId+Ebw2K!jMCC*i`f`$Fpy4p?8m3_24g9UD>by2jN1zkO zD3L0GqA|I`2dgX4InRW>Vs5K?Lm2xFp^)|c`*2|)G+ZeAPjOc*>K0`9{l{=&oHyT= zRB+6piQNkkw*JK&YYs4Rrq7K}wz^szG!qUn$2QUNZiYV>TvsG=ZtP)-(F=N6qPFUb zGpB}-5iNHQ(_*B#pEF+TJ2@!UJ>5FS6*x?%Pp!30!ag{;Vp@+`(`mckYLlO0ug>6e zSAFu~UI#w@3ue_}t9)<-)ws&7bNMqkCfXb_fN*^5H@gXu=&t%A>dJiR22R(Uc>dG z-F4S{n*t~4M8%UG3172PIAt2EsDO(TLN&@Qhl%sL#0kVP>X+8uWEG~%huNyh+(V2| zx$Scrg8K!F0j2U@;`Io1xy#S&umNZkkb1a_76AjWFcXX5m1<8U%s87rr|OhE`=hsX~N`8d}wjMi@H0Wk_!LF?i&_3gTxqcO!6c$N)V31Yx7 z4XYyHMQeHG>cQ}_@*oGMfE~Fgmv>o3*g(2Lr=%mM0@?!S2-u3U@YW+O-X|S{-rWGy zK)sIk^%diN6{#vdDgL>BTL?LW132kDd}7PzA|XJ^9G7|hptqhd%4HD|le>(zHAk)s za0T!Q!Lzv3Qm=+Y4!nOLsJTSAP~L30dNd^Xmm3oPgon#|9P2&HRjRS}BH-yzA5Os2 zp$|DFwsNb~I01&*E|Aeb-_<4CueG`as@*$=1>bS9Kd}w{ zuSr=#U%4vRU;KhtuNF?oj!|!qmH>yr@TEhyXjjjwNVN*m22Xd>HDrW%>&x;r6~lj$ za6DutSKt@;p^Evo59>aU!}D*m^c}nUn$F!($kA2?nyMf-rWCjVpnL_Yh3Ti-*D@O8 z_SEulFPMvu6T*Tvy-qP?xpI{$N1pOlD@y*A{-YS zxfe6P*Re$!f0*;|>muK&WCU$9)@2W0Oa_^Ima=IR-5$j;r0654LCUYGEO_!gXc5bi zam*Fyb&4vU@mMd*T_D!UrXIKVLqF zZ(;p%!{N*%DER`c&0MNTceeAE{-Ys^B^twcTp32t7BLu?|pE zJGiueUdxw=Tg2#guTOMOaP@&2EzYVxJV=lQo0#ad45q?$+~ueg zY@$hyyx21Dk*Q)j`Sj!$Am@S74F;;p_C7STIp? zhu|Eh`AsIgsD1qTGhZO0dps1=(ufwL)^nVhsHe!lN`xfjBw!I1V8nu7mn#L2cHesK z$0%_aIW{YZp~7J#b!=FL8olg(eT=m23~|!XyWScAKc>WHqzq#zKqF4l7_!^{CI0QT zA(ORkrMXvzEcGUtBcfM20g{dZ8chgxaFIAO0nS88TM#6wG|g=bs5fN-I~(u(T@z=U zW6$)+NEDkwX*O92DTv?bzTK9BL-Ew*`khy?4B9c~crhY7WE2O~g{C6&N z|9@o@#vya=bV)wXW^FS=GQJtfh46$i@w?d`)YZu#!oKHIe`Yrlp*h3sB(!JvJga~| z{_gwEMWEweYYC%4v9Crb_&kf4eiHh(hlRE<2g%Z{=0d=5^j`w(D?7ZCyy);QK>McX zJD*_0*X3(;^abdvyh6T0(ENtrK315ZCA`+4qylUgfVl-A0wAUV0GRl0MJoWcigXna z(zJzckef_PI1h^FYD7(G08Jr^{mttVL+O{OMce|=pWcWYF%m~9<`$LsB8@om0Eo`T zzY0Y!#%@K+v5qacTOe*}Zt+$vVI#M2L{q%~4I!3WxIv?nrxd^HBhjEqu>j{*hs_wx zvx_Svjsdr*sBhGw49HFv z0SEQu4Pl{DdSpztZx@C^A&kg{%O;3(RkCY}GKCcFU@vY{&hx`cqj=?2>ADzu%#2bJ z2Z{}OFx6Z)wQulX-WjcsC02*bs088Y_T^_B7pFEu!h=n8RE=WK`~0 zj`8CbhEmYg&`d$GtplS|0-(NqN6%1ETe*MTV&XsVf{Y!N&07dNM`iEq{!@MXJI_l0 zQ=VmsF*BQe|0B;<^A1ZN#c9rJPc-#aQG-gJc(y+$ue77PKx(ani^^2)|J2<-k<{qA z)*JTM)styUoWjinwO%iP(jZ8lc5w9ewQ3Km0vDObp_g}##^G|0LR?F#@*It~{?JkCyEqs!0d)+uFaTY$i z*Q`AVm!aFovGvtH$I%K&Q|F?)9berg*epnKze;0-Bg;k?*bB(-9;2rJ5o`rl?%AO` z{cztZ<@1X`*YD7h=LuLeLS$a%#KpHjg5m?XJ2ty_}D0+>TcODsSN|VZy*ac?US45VZwMoG? zMqHGaCKYwV_9r8;$H3ENUF#7auJwRE0Vls2dMRa=wueGDh))O@GN8eW!csQ|H67lw zb-nDJhWQYj@0`R9Sl|5Hk+H{a5sWR78QQFyP`^HsU=<`_KlSWnFV+8XvdWy`z`6+} z=kiOAA$O#g`WgOlS*`y#=gk0l*u?XywFBsh)F(cK?!A1xJD1Q1s~Uv?GiINqCf4jl zO|B>&pVRFsV?gw%uQ8$xm!xAXo#2!#K|69lZW%<+m|C^Y#aS)4Je?2u$%Eqb`lQ#t zCHMI~&3=6sWwWfeuVV=ZECo6%c%{y^w-Q10g_~2iU1xnM@wfypPolX`pcxDu=p308 zkWbwNzwY{~?o<$|w-Jx`t%FgG41^e}ac}AT;8>{G_Qlp#UdB8Ws<(oF zb_iWQ?dfa7BuhI}wlBLeuJ$BEChMS0Iq>m!wO33t0_Y!jU>~vltfytMai;|7?GC|p z%fJE5$nl>-f*x#<=OM+KrXLb8%(50nJi1)h&5^ZhvI4aARsI7D(I12nQIiwMy`+C4 zWY{G@ffMds+;|I15Z(<#no`Q_&tUS_PrsWTi^|#qL)xY@k)bV%1N;FW5s*xR=gKVi zDX=HZQ#RLh3BP+j(1j_ejN1NQS6@LHH%z6!K6ljwsRQZ9{2)s5#ex>?=k(>b*!^dz zNPKUNhrN(ul)-s5dxs~oQ7xiw2<&EHHI-x@Qzu?kf?w1GgS}p}2wkmmU3NzJ`D+lt zKAnT1N6Cu7DywNO$|l{e_qoFhAkg<^KzMJd9#x1up%WIs;8*Kh%M_T!?X~K%>U8&( zq#=E~v4J@#!Y`{lvM_ENU$cvaxqw z4bMEeOF!n<04(^4YR&a?;h0OC)n9AVF%U(TIGBj(gQQ}6Di+)NDqy+>YJC##en96i z((QtC`e3vqw8XyT##c5aMwN6yGT7UUspTI3MZ zdDi@kbE0`e!z&Q_PqMzG8C=o@BemF>ksEo1XQM*D&7Bu&mw~1Gz(eeIj_+TIYb5K{ z#k1+VS=mcR@P{8Wku#Wficu-H!_!V)vN&gM=L@+#1V9FpDNzcEC#q-m_;Qv?SYf=3?g|}J9mpsID&qP z42z#5K{=hWSSHBA>J7c1L60OWL&F6G3euEp(hsx=-~{I$BnRv^*;nma_N)w7o`YY*s>e0vNQeXdwI`0ezw&3mza_l)xH zXwiwQ>MijK;le$e_N?2qO38NTJ^7Y=`LJ*Z_!fn1KaIm?3tE_k!n3E2X>9TgoXDem zQ`R!IG$b>mP?uGKjZ36lpei{=Zg7|ZY}fY!cQ)QF=1FYktmVxXzD5Fll-oC=PIrl( zCu}TnN@>J}tC-{~ykb{rFD#y)0y^ls!8;ZCd;W?kThOsUzeS8Mxhu@ulzCnRKJq8>~Q@#!Bz5A%#_Vz77&3h^D0M2JpwU9fm6R!EI`Sr41R2`lV zw5C(n+-2(BqV@@S$@m@xYxVS0b(zlh7aL}qC02X}idHvhd~&?lE>oUT{$*s?zN)!> znkLc*Vb~?gV)8;kSt90%&EZ>l!81NU(yzy_!!P-^ANW56A^hLgx0`k9tPP7ef9qPw>NQWD(}~QSLT(FVUaKkl7uj*AYl{{ zO#%S|f(AuJK@Ed~igXZUP=-v*AOTTP9D>qFE4Beqv7N%8fMY;fk;XP4Dh}Np6%_}_ zUB0Jwy?gI-Z=HMVo;rU5MHM{j`90sy2b+==;MChPZO$M2mUj^V6!$@{UShgXA~$gs z5n$q{1*it_Kz>dlxtN^`f7CZBDJ2rHgpR^PsGW2|hb|A@p84a-Oouel5O!$50dpb@ z%-TRF!IdZnz?wH@?$G4HS7uKoMhqwD2Tehb{No~SUTvn!f6Q*X6LUC8gc5Pi616<* zGf)l@i^Y_uDj;Br(xJsPYA`%N@=~S9{1;OpN{50sy^iq2L5JKd#{CSR!fAjQO+kh^ ziXhH`R|tz$xb-UFkeG}IP<`~=%XEx5D)YG>_x3Z&U4+PnX9?>3o*Qg(vVgpcjgUuW z!rgMuXIW|icFdf38g`vUWzzJ36};+XOKcDnK!Sl=*xedJeN^TOHNj*8`IC?g$;q1p zplm27e+_v_s_pNVVH6h?_CDe6*@6D|`f%Yvy9s@zy5(aM6j zbAr;W%hCf_$6j&*J$D>H-V&18`mCoy1SrliNPuECIm06Rvjo(!bBl$9Dj|6<4wb9| zB86}uugG0PhFfPpZb_LL^zRe1AIY}lza-lZS;o5b|ID?G>j+;&KWZ$g?>>=Fbont% zV1)#Fe;350Kfg`3Dhh*}+LZ}Kl^EyuYpXXsh4Q`R1k>05tSR$neG5nJsPEFA6uR6z zJa9kZdgAgKQpv6Jr#r~sz79@$YzhlIn^f=naeP}`ba9R%3UTPd{P2A9vEI_+x5p&L z!!xUP4!NR8my7!eQx`iz(V`~Lw-znk_06-YsoQ?_LEo?}Dx3K^)dGR4zJ>i(@{FWI&BtI&y1 zH-Z&w=WN%x`&xgJ-CX+-^)f`{g;$$7i4AVY`KzqQgO50DVnuM47E3#V>vn2G_NFz} zEAT^Cerc);O>l@%;2tygqD@x4T57!|Eb$S>qRFn%wd~qLWu1eV{eWd}OsDR{Sc|2N z>vtLkkofu)mN1e*96ZL52LorZduAO&~6&xlsj?K9}`cxbCB)jNUCMQrm6cy85foPartU3^ZOMYB1M@Xpx9 zmT-z<#9baYsr*fha5`}x$6x(fX|r6U_21g6q~AWiK>6i9W7VLukYR7_Z_a0iJy6=r zV#D->I;CUz1KCGABNvONxr2;4PehdkmDSPlFv~0EjeC(XALzs4A0X}5%{K7wAc(Zn z%PvHp6k1U?&i;dfU!LGZv)}6ko36sL1X`+hc?*8z@Hd)jEXPcbq233*Z~TU-2iMtJ z0qeA^5TDpz1GY@MKf9tr!eEYMlbL|?Qq@RQz7$?q_81oIfAR@`HgK|~A7r3e9 zIIil%-c@%I90w{_T-8RO7y#^bjfDLlyUd<>^ltZypr!GE)s%NV5XeR2a)fygrnshu zxMg#Gox8@8@4uDI#`n%aq6DvS)S5IUIYwto3=PH7>C}APJ;KT;|9`j`&B4j|b*_>A zTm2&7Cg?b52MIXVszTz;mju(AV%ic3{LbrwhZRDS2b%f5MaB zM_F=N7|>Kxz=BW}0gA`0P-Ve~3N+r?2|?1`H2fTIsyc|7#I4}Ibbtc}>ho?ez$q4E zqUHh);2o+0ZVx?ASbkWzAJsi>m+1T6__jKcuZ}>&CvRoLO(?uBT@=@D5l@u3xaoNTsIarkb{9#@_CN_*e%Ui3#9K|h=CjXV@ed4Z> ztpIX^B&SwxOW?lJArfY9!!Nf8So-W$<-&vy^ztqsyko1<=q(DhO;ACi{GBIc0DePnZf@(m~kFSSbz6myqJaoHzCLZg0ZcAjlw;WmP z)tIV2=CO!dR2aUh4PD=XE!IhM4C`YL-ClZ^XjEMS~g`@br;MKcCEr>|5_NF zv7cw1R7Cgh)w;edaCIEXFg`!mnHnZh+|IbTf50Ppy=O1t%C(EORBa4@g;G)eDZs)~ z8--{by&d{@h*=J({+`Es`f+v~(USh!7gHi#vzUc^!#3Mjj=fhsIQPhjQaN+ox${PB zM$E1AT_ywE@{2C;g}id7ZCJx*{JFy;hx(E8*sqXG5uz=LN!;!SuYqf&;CwZ{b{XF+mn}W` zyM(>q!;tN2K!%#@^K6TL3=G!>)w+z88N&x_E2ZP(0&eCvaYD0kq3x3<$gMK5)ORCiyKn>Z#?nPm=u zdE(?1wb0S-K+0dnTPFfe1(%|u)v8^HtnTGU7Z~5Oi5o*@rgxlqO$p_4k!w^S{*=~Y z>-e`uOT(k7n`y6lLy|-`i7E%)S0XwPIFZIa>oft^#H`{7w&#yhUvu}|dqMaUKU=JZMd>Bc{fNo6HtEXQqKWe%I;#fj0@P&Yel$6DV9{xo6 z9Q>zcBRw|(LcU-lvf=MFG0selVMuag0o2UrtY$6vESMZ4B%g!`3<$X%Kt0!BqTm}e zZT^#&SsRq_I+ondM)X5SI5Wbdh80TOPC#A^N%v&pis`bSh2&`ck9mSngr%u*&rYIz zhO&H}WIHqjcW&-OQ7%Zw!7AWKpHU&bSsV07CI~D63m)PyFlRSQk~?2nP?m_8CxI1c zlzuhg5l&vBLCGcfIqig`rYzg6Tp>)*5&npT?HVjwL)cBv69U-m+N`G+^GQ7rTCO9) z>s2qPM6N65iE(AMSu_>yQ4#QrodHwAiYHKYy~T1RaWg25{!lbulFNh547FKHEMz(% zqFL=_ro!hm728kcXQ~U|N-*v^3XM);I1zS=5a*h*@_T`y9^fQ^(hdPc5&CX>)(SoF z8b@ZRfMXyiSK{vJvI`}$x3CvZRJa}hL`vLI93fJOP3ott?hr$ww+PQ|9Ny9#|zy@|5|cleB;T0|B-FS zdl^lBVKtjh9z2w9^RH~%z}Xto_T|*j{bk0ay10jM^^%0fvjn%SQWe}@7+<@>x|OH7 zled=M0OM;9ut&?kHDWMW!8HR4oLxJBJMyEchwc&Fb1h*-_Wg`y}ozQ zTheqs}SARejeA_E98qP6=70F`nPwUt)4MUcKlWIO}JCPE)cCwgk0)s(gj8p zh$gz5XOuBOu!7hke#lfTj1B8uRgKN{@mYbZ^NYJ-5tb!+#M}l7{R03G?!n*o;f){Qw?b0B z4b<}I68HK6QNXq0RQaA3o9a!#K7mBxDx%JTs^Fv=VYK3}cshR?eAb6wwZprJitMdE zsib@i@Lxc?VX^NZ4Sz}D!W{Qr1rpHjwIiwbg* zNK&Nt#yx|T)UJqu3M=ngRk(*Mng4|6PYkYRE+`#b>9Oy-?4g6RZq7>1@Q6y$@>oe{ z*;>R5Y00cFCwMz>yO_5Rp+9!@SY9~%`##QE%{K_YdV5rHyC_r-^1?NaLD?p+615&b z#ffmX5wHvZGS6C9!hAx7T|9T(Bn_%T*IDScR$Uv40f_e2ez8T@P$6?Q z_|s;lv_@RtdyMguDZ5E6p=Z&!)!HoCT^PCMhT?g~^h0TcXTKK&i0~+zaaJM?MCdm)jf0ck}o9gbZdVEBu zYg6`Ot!tMFH?5ATnYpALyraB9jW;T}yL|46xgqbmy?tK?Jm9M8@QiaEu7wWBcazTu zj&{9JB(iFY=O`9I*KkhhE1|{XmKMO;x6~d4vB@Fsnv()ITY4HXQc1QI`kUQTb4n&p zpzq&4^7EKIfQ)%%n`PDnhhgVt?e4peUPdBgbagq#%f2x5HcM8W@l7gVbh zo1GD1tXDka3s!?B3NSAgx%Jm970R;(Dci)sDxoq z3|-D|3wOwist!*#2k07#kNZMYj}y(E)UDoj%Ja}sg-A{oC#kpe(KivQkKSFY&{!O0n-TI40^q#j>&0K>Ieri$lG?!-#S3d#fZszn?JB&GHo z-Jx9ya{aX<_4I_H36}SDv2v3i@|coU%t5D1DI+S&VMyaic9IyH?8q-oG&rW@P6_xI zRGJjTZ&j5pt8b%M4*^(rz&iR?VIn$JW?HzpI$RWjPILMbn?7j0uKTPocnD|i!ff*t z+@(ME(O6)$5i-7r$oKI#Bd81i{GA9svIgzxdPKBn1^R`1$yDTA_bfdPWZ4S@8Fq~;S%xVGB$Zu3JFX3)dm}Y%s#wo#=H%TpRYg>&XGpdrn<;pTug9`0UN zg_V{5O?I777REMnVD@4i_9j-%{5_}R%(k1vp<&Cji^tG*;-tG@J8q{mWzap7{ACP# zYBI=$!)B%69=FWVDHazQI%ggA5owlSDmAekNn;5hQ49cjwV4_u*TU7vE z6QPJn5^_rNyzGn*pqJ1ij+He@Lu)##lp1`Xs005g789q6Oj_;Z&zsT~%@JrGAf|3C z{)t3CyE6d)YlTIH{d?kecmlmhBQ^Eqy}iFvhg_gXx#W=E2B+&D`u`E}=({n(WT=xI z(b^09g*Q3ChUY@#^LYgqNW)@AM25k>C67CG8tA^-umeY z@h-tda}#phQRqCf@c!qDL`u*v$7Zi1_=*asHFUg%j}#obmDu2zJM#D7 z#rW|7f`p{wIA zdMxHU-QuCTkSjALqUoKuzNfxpw|P>!C*8szf_3H8Dx$fP0Y_fo)4qSQ?3%~Eahd{P zr!LCkN(Z!^n-4i@@@}5<$KL;pnkPaxLn!vY?#uEa?C-&#n>N4nWnKpt+b%-)t8l0F zNP-r0V}p_K&=l4)0Me3R1QDjzDhbV80#Tm}uV(XMIRflg0Ps7wvf^L@F$!y<1d??! zWEBxNgqaA&_+(}If_X7Y)J`b(K@k|EK^1aylf{a{&sewshUF0bYUDDw$E7P$;7tRa zU?eIi$fUq#2%#F-pvP|F<{G%IrRY;NQV$c`()J$hWeE;~p>DN!56aLb3yv$1RtXHjZu`QJ+1|30^6 zk%hkL{|4fY@w_PC9=~HDaJVx1kGbvpr;>%?34xRLY;qyO9#;Hr=|6^L(T}|wUQp6_ z|Cr~>^m99d8eDOqNC0)KZO#po_-jq9FUf=>O#y3{H}~53RUaa8psK^QCwiZ{`XVC3TRuF(#&p)& zXADW&8Me|R#Ec2OpaN23|9U&C`qIaMkYQ_IC*yZeg<}n6_9fkKnH>xZYqMc?>MITo zXLDG8_q#0#LHbMAH1SUrx+w0@W$gaVr#fO8_;LexvHDy_RZ&y8mHQT&KyDf&pt#0eHTiuY_MH`Bm7%M9~%neIr_BtwY2ln-v>^9fd-*k_=;xx{2oef_kpYm)A z2xIsT-uK`Vm3EtpRK@ZH7WgVIV0w~K%byw9p|oYzcouG4<_iVmueUqM(3qqx_5A4? z?rNTSv3Q)jlFYho;pRe(;N*lo>qu8@hnZMARu3*WG6vg9Kz_4a;b>*TALDt{M0QeX zun!ERLgK`=bCT6J%a|YIkz@}iLw~u&w!^Wbq?0py$9Wx9Z4D<{=~Ahw^=7ZJb#Ct% zeA~{X>~0B4ng}huu@1dbU=^O~->~k>xqFGUg{hh)xV~3R>K4dE5>Q#5&fANv0_GpM z1{8Ll5C4*eil$VlmQkyx?AW;&{6ZwP=A+%6v&L==D!VIdftI;a1>p`oUpG{QPHXQO z1f2BSAnF1%UEhcN9I9;c_e_NYgQr~*CsaI7Ys{JU7xP+^fH1Tpm|9pd&$U0;=!rI6 z;8?0UE~S2;qPtm6$KY!K$a4@mw+_rf?U?Rv`I~#tx8^iIfE@$5G=X7w1TM+0h4(T} z9YU}p>5UN6riPYNy_g%R(%&&(M)hk*~2t~=e1ama3XFSu)cm{wI!m$*vx0)MJD=)?p|>TT0)ySRQ9_BUe* zElVe!hJaL1CTlWPP%u6SuUiWsD>O+wkLJIiI`JAq%q8X4Mt6K|0k^-^nZFI_Ut&nn z7i=c=F{j0y2j+uEWc~iYg+sI|b<1IyXU8ssPHr>!uF@?=R2(c>6A&aUK`-Wu0#s7! zR}JpLrQ%3L6D-4JT&tRlCuUvNHLhOWlQ$wMFi0ehb7eQAesYYNqPNf64U0GFROHm$ zpzd+nnC3=roow zqkl^ND;{N%ULnRHZn~m{y+W^gE`8xz^q{ID(PS?(&q-!wWv8ZS&p=J$Vvcw-#CUsR ztA^-+_S2WwPR0|M0PDrbP3c@ZugI)F$cV2+h+9)Oc_h(!->VD?`B42V-S>uoxo${a z)i^O%)EVs0RBP*xW1hG5dK}VAgC%Ll;{1+Km0OnVF;nCqPY7gr3Tm%P!}XD|+v-U!%u)PGC3l2A zR^}ycUM_l%^D5RVJ(E_^Z6un?Rw01vja&Mh>7OLtD&MR<4prVAiVkJ|zA+hT8qW

ztC=)af^QqLKJYcQ&`YE`NwVxjFn3eX9jw|dwup7(a&)oH!L zDlhfIv+AV|EUwHqvP!WK-E6oc*eSa$`UHw1?|RJuSbM$*1;jtYTlr9nnj&PU_B2p7 z3X!x=v8PVi@Om-Q)|yn+bIJSK+ZNp&v_mghMvptpR!w2hzex$1R)fq8NP89s~ImR2oQM|KH2i8aZY|%eyVCfLgV~;8+ zXu&tNy}unULyU3GFlUl`Ww=u+X^Inh({S>HgGp*i@|z@j(p#*NyDxREmWkpvDa=>u zk^|TI9{y+9XO_3RysIFAbTJtz~Eg<3%+deUV4Te#szcbyO4+LsV|#3 z^TkLO`wJt-!0jYAN&i-E3l^d1T$nt4>wLBdRmcAIcCH;;1Pf<9YLPBMbR$l4J(LH@ zsC>5K@!v7Qj*{$u7-(nY{( zk}m%)H18-M~)RF@SJAH=5DOIG?B2KI4+ z40B_&5|N|}!w}r$^hV6&v%0=%4_qP0gn2>D5|hux-HUTnfHQ0_gQM&_T(%iR{=Emx zhfvLMD%7CNbXWy|hY1G1h;gWitlwaHRxn0Rhvfo@J|XT0B3B6}KtuvvqBGB~fGJ-( zFfa= zau`Q=3YC?@+B2vqK?L?ip-SM?+KYLvDla_%91`Xl^gxiZ48FIch@|V2vQ328=RH8X z7W+%_kLxnkMSvm9B?08k7HEnZ*7O?HKf(~X6`2b+9sK$KA#z1f4Yb514}S1&2>{ zo5xT^0S<874XGaJ4Ky^uJ5VJYce#Nk?*dzo+3d6~1lHe*Y~Vy%-s_$`H$S|zG3wlG zxZsVxelVwP`@}EjogbKNNt%B961{K5Iq{aSWlHHpSK?hXJ)8OBSo2xZ7wcDM7sYqN zXEO;+gL6AMfoRZrDj4~a7h6Kwc0uq8)jfwKwHed%B+Z4>{GpLMUm5H`fwfsD!fm{f zxq`AwJ+KSD8Q0W~FDZVum7i}O)x6N>_{HU+#$Xgr%Iy53bdOErm+&fib>ZE^b%v42 zZN3m;2=`sa-}6(zV7>=;X0Pp06QG)0B$oZKPy600`Qru-`dK3SWp!q8A!L*hetbSq2X-?y&$vuYZY zG;(d&RZb-i#;2>RSF#wV*3Kl2Ch`3NhKzI96m5rJ3bM)%p`K`K63trH35;zOzwG1i zN46>fi>T52muGSk&q(aT>bvn*bc2%{cVwcaM1B8|T#RGYF9P4l!STfZa!=_;EY zsjy1p>nPZQ?+@;qFo}cjc)8Ats5sI>^&RR8Ur&+k?S@$Wa@qz+L%w7+-eE_%zG&+O zY>VjKW#;7X_pP=j{am;S{bdE(D=jCYc>UaCZWU^Ng4OYy5=b`sJ-E1@&8_w$PV72(~k;ZXgJv-e(BBBBsruaHUn zR#jo+)Pbjz_uUj=yNB+)nHRdWlcigwL^Rnkm8bpjCRK%~<`dzRwMb)!u}U(L4&bt| zFXuKfs@1onu?qtLBF39&-ED5E>40`LddQ*>o=Y!v(Cpv;8Xh$YKGt;^ZE8DT?8hS+ zz3ZXu?N%H(B3^+F=>(jzm5)qxj){5=h6`4`G)Cd5>MnYSKax@-+P^TM?tCe|l{VHw zr;4NOZK)F1DTUd-c_lwS42=Cc(oHWRjT-lPbmMQYBkOc{<4rE>H113ry2f3TO{3h2 z1Nm7C|S$1l*>0bc}FQIi|OXsV;o#A-Dlgj5mG7qnnvb=AH zm_U@w;VF$WOtt1(oY(SNn2^}UK!Ez{IU0+%i1!yq^2$}9Pty~=uM+)T_ct-l3Gl9Y zqx2d#W5Q7r#}*=y4Z5r02miKa(a|LqTP$a(qWMk{1+nht%r^*`Rn43#|5`3GOwffP zzkAqzWgB&il6!Mxkir-e5l^T0vRctyrM>>dH^Ljl32sGq;5Z>w)WPOU&Ph`mQFTKa z-=;Mi*Op5#2<0kX6XR^Pk_#BkmzpXc_x)q0ptPxPAgUpW*9xkkbN(kB$y2Yee6$8! z1#)ZYo>6ARG^RsPOX=FfgPB_Zyk9hux`!SN(m&qi>@rWU7Bj8B$;`b4vO7p6mJ$}g z60COLdxYpaZ#B=zg^nbH?2r`(Fts-V_hG2Wa%u$qocNt9J=7D&Kvg3z*$_~dPiZrIjL1Q~UU zb;V)Nj6Pch2zs`s+`Tf7#soS&<_zE*BFq2$m~!_r-%ch9y1;l474-O)jb3nnlWj26 zDa3cqpO0zcNZOoItz%RxkCe;gaI%ANmr>zZDt( zHtZR^@Lt;gZY|mWn_gFPQM0(ArRdgm298#{`AKCeVYh-#+zu{wn5&mq*93e>Eef9N zFOmF5Ztac0EjXO_axj9K?5@0f_Pb(%k#-F0}9Rs6W;VddS&6c13j37 zYl`Df=3o7cgm2yc8AHKEZn6^CT)X>=9(Cd-tc5Qz`MD=(-Bj5Z-HCxU4IX}?hQ*=Vn{zC<%rEpgDV4Y|6&i{1o!%r3! zFbRP${fMD4t}dJLx&-WiNeCvCwO_`9H(z&UF7tnKYoDlO3+#>Z89d*-GC$4F{>-H& zNJ`%P?BNym&l~yFwcTNTbXIhC-s^FK13r0$@nz%R)BoVVlCeMwrC`u^XiE`;7&3cB z*MrgF3@mTJ$IYJk;ue<@@r>?YQB7NoRZMi-+N{3c!46!_;p82% z$1mjHU3aj$#^>#ax&$$~>$=51Jx4B|orj*EVXzw2cGQ-Q+W7Xbz8VL&b!_2Ze@@#@ z)9Rd0tsN7RV#;g;{u_2PubMwKPt^7t;f~pp07#v=UXpzYX4*76h2|h9XVNlmx$>f)d(FIe;(u23(>qAAo$JzHgl2*-?z<-n6FTwNr@A)q z2m|lYQJ+@LQF3tBtg@f%D>{yaj`SPi0)WBVg4c(!UR}R%u6&jA3LZD7$+4@4G%GpF zuVnXkZZ2sg$bX1bg;?%6sB-wJzwoiR==(qk7NFYTtC zwQ9r8y)t|J4KG8BAPQ!j80EQr1ka#0?0PO0(Pr&gVS3x7v&c37OBLx-KsRfkP`^DU zK9@+AzvIpn!-j-K(1$-sQ=if>#|QC0BkrqO)p)n~Av(Vs+Ua;2JiiVd<`Bqnv(Kd< zKJ5*d8Aormo@G7pwgYc#xS{f1zq+CKBzQ#po>2$CA9^Tf&Ub^s}pqgbnpyvp7RmUGm za7Avv^w=$4LD)5)8yDA3U1d9&U`USLyfY8@@XkOMDm#Tt40y_*44wHe9YOg2HL3aBm_4^+@4z~+mM2^pR)EQLtd%U3g{0eE zPtnkgmLw#on9@F$KZ@3rP&&M>h7_7){5OdXxMT%QL49ax?wd#kdet8O{?PkgsZ0ox z3t8erkI@4Js_F()<713~I%>qM(46myYEP>KklEB}Qj^49uxuPk%R&mj)+;}hDAq)q zbRZrIjakrW1;Y+xBiVM_o9k1L&g$nXL#*8TS@0jIn3zR)Ov}(f^ zl?Ypf!TN}A$&)E3W_;}+8fRyJ1GvndvAQVQpVPz;srxqc-;Y+o*_4I3-n6k z2Te1ZiYR@Z7Ohssq6VF!q-$4p9UOOc%|68RHC-fyI%YptHfAwPiwMUHKBJbp&BI|;XurLPulQvw8*w4WS> zSZ`<9VeS_;FK>Ma)rH<`8dg5`@xo-F^eq;9uSt_LI~MiX9v%c}%CuiU8#zy@D-(k& za+7%Y1zb0`$eaeP_3>G!RG6K3`!YMI!$7cxEylIVf?@vzt0=Obb-~)|?}#{R(B_{G zuAiX9sm8GHufAE<$WUyKVO+_)_rdy;^Td*QSy~eWmfb8Y*wXws?byy<&qfW>E9`6U z)EUo4`yESHsnQ*`(a--f=gG*bo*Tz%BzH_V_!-A$`Qsb+0H?OEx7^?rWhzjo@ei@F zv5yW7&11^cUQOP{jB>F?bv>Sc28fp==&&C+1~BA>|JT}_c4q6 z?KcUG?8BiyzQ6Fff9W3l zv;Kcq=q~DT0Z?q!v$xUg8))qO$#~T$wM5LDHLS06ALL;hop68T<`pewp%5^Izza<+ z7b#B|rD(r(X6KbhD(Vp(^Z*N)q?j&3yw?eW$3Fj>wqAsM?>kg5yIoxBGH!>K;Ckj~ zX|fMTtBfR%I&85WggF*G%VrdUXFhVd0bB$5((tHE`lkn!8LJHZlHva`I zBXEji=XcQZ3|<fkPSd23oxxmh?BfTo)nV%CD@Zf zRI`{!pF%~8iHpEA6LwCA2$ZWMtMu9M@z}rt*}_D`Wo6ztmv9|N&E$fwKBHhiM7TxT zJzRF52z^g84@PPgI2LTNNbAw#W`X3NRYdrhivhqX7)VlO1;KY^K-P8%c?CoUi!tue zI?PU=v<3|T8)DY0Cs6Edd)SnIjz49_d!)T6Vwl`7qq2M07Jq6fP$8TAJr7hn4tKHjyoJM8?{ zqV%8nd&w>(ooH|l^<&>Uva_ z0=G?FWW_uG7{(=CPhSO*dVL~`LGx6dFwPKCI;z&qqLVS^QI>!yiL$@VqV;x9R9=ydpXl-xX zzQy<;)^eiE7I`KD&)Yf?qI9K>1PDmaN+u4*P(l!0D;6rDhi2$5;_4KV%2) zHG8WTY_i_1yqWF##}T?I+xGBarHw!YapOHn3>csw5Z|aPS?zu};JO1r z!2)q2l%`drZsom++SNaVdKY`!BWL3EZOb?(1Y+3qs@W`Pnfj%WbK#0%cbajD8M_M~ zm{qcl6CQc7az&O+P!aV?FEi=Xg)Ln$`gCnuOq#=ljWHhacC(T*>@c_d<+KTRlylH3 zJ*bCO(SL#G4L#@pofY9e7t!Q<#B z)GzCm>@d%CXM4}csvFdEpEuM&!76SSuLkWSV%);{6%>%|4<_w4G$Z(T|4JD|mYY82 z8#y>CJ{ou1*3dP$M&RnzFNj$egmSre0)_&EJK$-mMQ=fan@@squ!X!U*#TN&Ic{my zUVM5&qoUeS$zOjOAp_x#C?rh|euoQY+Ioz7j{S$2FL^x@Vas)L_OwWH9j-tZ>4}qEh z6=u)w0HnSBj^==bINMMQ#6L;z(Ila4J+g24@wio29x^73CU=8glcrVvVWYMopal1f zUS*u4scd+waR60{EmNaPlfF)T*zeb+Q4IfIsQy-%0qMdK4fA6n z3nZdeRJ5u!0*_F?vq06-sipgHNvdLsH3Dy^4`6y=HAV0P+L2kMz-HYqMR^p{ z*=iJjkD5{eKd1X82O*YSTtPMA0c)ZvUs7)}tM(3uod84Hfp_j6xJZV;Cc?AIMcGmq z$l7tN$iCO(D7~|6>KT%%D)4hehIjjQ(X52%)h@>^>DH`SAf{SbToW}bR6$v$2WT&V z8&$;(3l)paf1BZzEit6G*w)1%5#O^fd}{~=5JTNdF0jyD1#M3LQ9UG~M!KL{$qE?i zCT3{M^TB$^X?*~8rk{^&h(-G`d5B`YNy3ty*kHca^I@zEd8cG6wMCAv5#25>*Wq2X z64MQ@R_-N=Ky$T>$p@riF(Pk>p06F6{KfUDMsJ}XtBt>Gl<{tktkz&{D< zD0HmRO93ce5pfW2U8IrHe5ApKs7});Hg1tw0uX*>V2DyWP@c44A3Tv93XK^fKjm^2^IX zJ-<~&z05LRdzgC{S2^{$St4~7x-qx;Am@^8-t93A+t%s0_IIKJbcGKDDY5;e-J&Gf0?ng!}Fb(4+e{jY?TzYU)J zKTIn4IzT&Wx^M_-F@wO)AJ-r|f^rs?)8(r~Ok%rhfbWV3)ave|db1&a-#m!8Eh>QC z0p6snP9;3GTmR4VtN_RgBDzliG@erzrD-`9<7xOTIV&|Fn+zz7pN+ZY&tvp#<4% z$?lUsTwvu8rdb8M9dco(f=Gmb*#%Z0)~qS>NAC&Sz986+AVV7eP>;C^bC)P(*%xKB z32cgzc(W)69-%g>fIdf*Z*k@?8qfvAEmVR$xI$GEf*?G+YCW#Tg=A$$Xn+nCYO@Zr zLxt-5Oc~dLcs-C{f&EEcknvg3cM=cldY|c$JUwL({BSQZ8vLA>0y7HKz+aEBn>B=6 z5I!2h>xE={cq`DYB&a{?n6q`$=t-2 zlocjG!2Y~z_a?W!fAca>WH`)klk@*DrY#F{UN^2aKO0>5;hr_K?^clm>ubqum!!nN~z{PO30-QKww@dNO~-ih!}v1Nn7CW@C-w zQFY;i>Zm8A9Y94&SR>JJcAL<1?=sw$C|(RSR4|X?#q~Tm!t1g_w@3S#bd+LUww2@h z&8;C%&5}?M;7c((x!qey+m(+4Y=|A59=P?X@;n+zECo-|87lsC`8z7wBFn$bX1X{+ z#;cb6uC+E>PnSkw8C|h_o40$Vwq0vslUP`m=C)@JF_W8)vXLP-;oRO;1)_V~;{y*m z+ucrL9&x+t@vP(%AHaB}LVMO6#SjU((1LytR}j*<(-3w7%PaL^$pot#Li!yRIQ!4$ zFLi>2VTm=4!%TrdBK2PJF}}+Vh2bXhFg5lAq>`XW0KIa@%lkB;@5v6vOvBc$gLg+H za^}p4L5&SUHn=IVkl8q5H**s$g7cvH1VVoK3#wa%{TP91{-yCNrkIJ{*^-g^v%FWR51Kw8+ zZVBxK#a-568=n7xEwEN7Oy8T0-@pF6o?F7L5wW*%{O{0}RNRr4mjWjV+}L8AJ+St) zTjMraV+^<@wMyD0M5hjOHnL&N}+%CsWVkuIq|*$$eq? zRH2!5vO5kd82_qFTB>DALFbiCW@PWSR}O)(v~5a`OZP&dhix+TEce=M1y3-Or2fRY zmc=dMXyEApS>W@35%->9O(k%*?@r$dDLbKso`g_E4T=aBNCN^=f}(=r5Q>6|8l{Lz zNkV|oBp@pGfT-x;7!Vc9Xec76Xh2j{9D`yVoB;iAKJ`Qp9V&mKE)0nj7Jm9@(;J|q%Z1p9%Nyk zG|jY$YZw+*-)xi>&)PxmdvSM>*e@SC%gn5iTi9#^NrUSG|3P#?Fb<3@d9~~OA%k!c zr|`8MTVbZ_0_{dd z{JBx*K1n1rR4rQCEG=;AZuE(uJMx?(7pZ)7rbc*4>&paYG74+s3NQkep6K)(;)4F? zMO3l)hCEi1_7r}2dsY?vfGP3IqAS0xTVVv&(}a8ZF?JCF}!ezz<)Co)C7TdBZoMfc{1V*MO}xIY2@h#0m{70HbCE;H#*~n_CzU zTzQ~PzdR1q>}L*lEcnt_{6#*pZ>CQoPt8HcPrtH+Ms8YHc|GV}zL&A2hL2yMT~-7q zKRl_u<|ShYvZ|Rq&5*g=dDSPc=N87i%MW|&yRg`dYe%Q&e{!EgnFqpk((wY1IqM4$ z=zdl;XBAI7&XPkid>n-G-W)>1g(5&}EuV1My%NxJiT4hR7TB;3w%KcJfW_`Ov;@Mz zDPyN-EG27!w&b4BS_U+ z>>GgKeBk;_@tz23S7w^Em`B`RS+DVKzJ@gJs zLP9X_nvle_7Pg+E(2;=hQX5S0$? z?cEK|(Uj1nlHQW=y$5+mQoc^*)2Oa;bjjq5xJedyp{8Rtx%Mb+5#o;Wwt_amEfPFy zK5=4t-aMfO?dd_geZM=<_M~RF8_@GxkWPoqMT|-kF}n_E^5bNWDQ5yZ5plpdb8$h+ z#yHF_w2vHrl2@ndu8VZ35xAV$v^ny~Dw@&vVgL*vbiY>e$LH%y&#)Lsyehs$XZoxV zWj_{`p)t*Qe@tk>E44|g(-G&-_dTmqdfY9!98T|YymD}B;i(Nkg|SAC78wAGyuYo; z(R}CmF`o`n?mO(6EWp-CP&N_+;G)~#Ta=qNZ`n)8PUG9Re;TTq`}6;husw9t4J!g{ zFOF5rl-6RmyIwLJ=|d632}C_~U)v_Chx= zW{KnniZDyp>Hn0A{d2BvO80n|aW)W{6Im@Myw&LZlf(!+^l=0+OE5XU8AvmWGh=3< zW_*&A(4!4DCt$o5gFxVb|0Hi;%pw1M3y|mt90smdi`>Zp@mc_ubny%lE_!?57!pps zDs_Z;8sMQNoH)g87o&J%@)=rr`djQxn1wAt>=Y~DFS$dcsIlB)gCY%=Pj@BZC6rtH zv#qjl<(ljsL;kk6*tL?JIRGV3tb`rgS!37*leq+)a_fFn@tFLo8fLL(KPm!RB?OLE z0nc#7g4=)B$l&xW92}NQu61OEPfEkZaT;cSsPMxrkT>=AHq| zZ0E=bdX#K3(^CT8ev34NJVnttn;57)lbJAVAzqvPt3>7;NxmY(t5Zsf_5&xR@&#kS zYqk5{hHQ8s>=?Km3!o|n0Um^(R^xV!p&Ufu{ry>9qB5fxcT!4F!E+N3QU~TJEb$q7 zSdddRdd%%psQqwnOP8gTnZU;Ls0s=owvlwck-!}s{csyuO}?J0=^@_3-8vw7Zl+;Nf4wcW&_y3%a5{}M2`6pP8xs~wD9=1b=aN`yV6 z=1FWHxLhMu#~D?_JQGX`rjv~#4a@hV4sdDIl}YO((OW{Q5#;F!Hytk<)WcJ#lgE{I zd&9QYaReN;-g)sg0+7$qmbLq>63F4B@e_Km?xyNEa-E7FZo8j zQSF44k|!{P{a<_`r)K&<1l9800-t;pB}C&Y27S16%UZCaJ6Df zmBrT709u#_FFnJ0G8=N@(}c&-h<681^C^x8O*MLW1f z;fPufti>>Sw4|>TiLJuJyS1HGIRDV~P=U#M4euW{@Ou%1N2;zlbnfX}wb@XkL&VtX zfFByAnmD{3*B3bd+G~m=mE{-bgTf>`nxxvw{V(iP%{H>RMN1+hW(0{lr*&(gxH4wC z*|@-ZvtuQ>p*AzjL-FJqhB#SkFj*PhNxrbuznC$c_xxLt{~{?wYxs+?g3&I^zNt9w zH4;E->%v`}ROcN2ld+QC@gek01rtg{oq>>h73~+j$VsN0!@VT!TnkXE3E?yz+S1$Ip`(&mhV!=3Y`qE)LhPGw5^&t(4MJ!!taNcpDGva+KIIJbz3Yr%ewb8y_6!UIf@HeJ%ZPd-v7KonNV?H+9 z@tsvQQE)r5zbHc@K~?#j7Rcf;QG~VBB`N_8yC4DJJ8N4y(8Wxn{okOZ|0b zAH(X^E}8)DsoVAIY#BgMBYfxAuDoC;$5LrJ@QT-?>UlhK+GWK|j=C_eb2D3@=|BXk zFREI+w`6A(lEe_A#;8gHG)KyzW^U<;jD3tHDTTBuNr9P1;v%HD9Vh1DJF3uhH+X?1 zlu>qwq(om`e#`d3e8my-`RpQbI}6{A%LuQhg!yb-_1#Q1kIuFUfHkN6@X!Iy2r|(} zMhjG9;wN~(AUwEQ+fwYw;GNm=&ufy9Q+&jaZF=kTLm~Rtq4vTD4tpWNjU*DBeDAlUXgn18BEoUHLu2;lQ2hi%W1jPZfHEa(aKN3kGw)Q$)Yk+Ej&q zR)4Ejm;m2;IJ;prEX}w6JLYk4cpISDS6;ch9-xU)c1a7CB|SSG(b*kAty*81D`7-G zyy$)GD#)a0_pz4LAPG8;zcPc)6vBp(JBLu|)QG}Vq+Po1h#~eyB@p=PfQ>)(vm;V8 zFTRIQUUl;<_Pnb@eb9GV?%RrHLBK=8i}~k%j+cf*r%=Q9vf6pHb(Q}M@&Q->zYc@F zZ|s))hV!!M#5!B%i=Dn3v_;D$?HJ?^gv}ou5XGMUV4(qKL9p>kWYdi)D6n3#L%UyK z9S5~%T4LgvL z@;(FhkFS)?4Ed5|aQYHqkqm1!xg%9WTsJy)qsOp~jG~ZRm@6;}%VM*NlScv3DCyMppb~r=*7+k>E)dL{c zPr^}Jyr($xpbn@R1i-Q4O?u2ht;xDegs-@rMi~aC3S7_1grf#$ih!#Sey1jrA_Ivs z6JM!n!!1HAfb|s@^8Pa|>fsF+IQ|DM%B6)*uWwZ+)ZTpOzTZIW%?SxD$^m2>!tC_nDx0xf6}rO~%bBIX>Nj zD#qbS#j2O)Q5A(ZYn?`Cog2h1I}A;2Ec1>d;^XZ_Zqa?nnYZCZE!xUS`6_=Ll&EIQ z=2Z)YD_lL10xM#4pEF&pHUu>r9zI)lq*x3Wzz4e2CDbWLJofh;u1j&OGC(8DjEYuo zV~19@StDWfnu0`_^1^YxoWOuRKLiTit0y4UGt6V@D?tn!5xN6@&mvPpNc`4XZuOu}e}v&# z`!;C0{-M~L9y;e8H^T3cf~}Yq2rQ7FJ8bJQoa#c+lK^AOs}n}3O^gU8eu&^5uos%3 zQB$z4T~E+faBX~~51BJX>0PEyqIIvG5z?%--*8jsUnIIfd-yxOJ(y~b`9wVrpNkD( zC+AA$-Xx)kOxqPIw@1UgpQ#da0cs>zoNS{4l+f-IQ^E@ds}>P{P?1z{gZlZr(%W03 zHCu5UBh5E;oc^`bk%TYZVv*ePH3ET1mv-=yHJmDN*$4I#wa~Tw@sb0OtbNX4da53L ze)pO6bvqNa5I3E!*79mg&@Q5%5=X3wQ?+^jC1_Ni+(!BQV10L-VTl?i&n0x0ZYZC4 zXuXvv(Dj;bs#Ae8p}QHv7zk>e#e9j-r)Jv+Cm9($xV5be{VE_ZOwaZ=87h?b9(RHWzgEc})Y zR4kBeyPnQ-NcFSr#uf9<_@nf)HnWYb-B0c!U8%Cm$es)G!tH_qBF&?e^OhIsXJI8M z$+C~aEi_y$QwHz8C@0d8HDfB69_D9_YG_?jupQuR{s~Ig4mB+-qO6Fn1 zdjDp`4?3$s0141^PMcK;y=tyj1}w1!-O1w4d+)*+12sI;mcF@nPi!Do?t-r`P3MZz zB`DGX>@wUz7j^Y&+c@3KgCSkKF=9ye;qQ|aB}$waVF;|FGYf~ zC3jN1Ti2BR@KlCrDlH`SBGWD?NUoPGZh@$73)9f-(Bq!DwxGitu}Cf9Qc*w%gVaxq z@+xB~>N;n;M=ED<8<~S*3~5%d+P8&a^2ewhZ*q*dXI>|o)q0ZWz4c;|+F)|Ym4`p- zWh@~1j#z!P!OwK$;P5~4%aJ|p#GO+WVJQYMTts$rm>a3^XhYA0+5iS0H3Z(I%v7%x zVa*Z5q;ZBd<1H8DD#aJi*Ev|pXL7U%UC$mSdaQ3ru8ZQ+!iKkgZArH5 zeUO@on5R+D>heMKqDZIx9`R`JhWC@gmlR}HHRC!LxqX@{zp1LN=W3jlac6yRcCC7F~ZMPl7)pvMG|0}@@T#tUlF^l z*&!#ZozrOGrf!g|F)nBnwltN+>k((*x2SE#VVTR2#G#_0ky`{Hh@G`9x!HlMQY9$m z(kQ1y6?dznLh;=FGizB2ujS>t3X@Srs%T7yM{4oU2y1C9Nn50vfyO1(0!W`jcYg3l zHelOt#NiI}5)O(CBp!r^Lvh)E9(9J|iEdG+4IegQz}P!CCcXtZv!rrBE2LJ}bgn3F zLf}U&^5PCC+=Xgxp=|;&vsM(nX$%3fKb&l%ne_`(PXrd;bvV+{Q0IIjcT;+$FY z&u`CAG0kqGetO94lm<9};b_5Y?t z9iChL(txmjV_$5WC4aPJdm)C^r%K`&{;p}zp@t-gYd3NrKk)w=Ca443d;i_7Zv{KmO9JhAV-{AG_0aL_8u zJyqBl*hoSkT>NLMuz%%kmM=~{YCFfZ$ZY}u+=Wc*?erp7#W>2rZ!u_BP9(fwIux zDsBNlYnrDFM!mv|hln{+8Ek}(NU%Hf;PhA70!vaWjDr;;ECAH3u`DAOZsDU|j3L!4 z5saEN%p@Eb#aciZo&iZz6W{6x63q_0PrlDv;ymsyP>-?TAT~o72@LdyP%j??JPs&S zrTq>76{k>U+;Et_b+8DtTUy|=lFZR#U!BUn`jQAs$mwK4k}B;N0DOkSZxfRh?RgbJ z@~zRzlZHZ)0m*?mtvbvCPVRPnkq=Jk&sDT0K`5AXaQrQDwMON83snodpa5nKe6%mZ zG{M_ioQz5>@|$)?k~RlMRGGo^THK66H8^Rh+5&HDNis~-M1yvRKjU918*NEiV?fpb zK%=DC?=2AzVYWyL_PS6J|4B)zJ@v<*|2?!i?w~E9<8v9~`u!eBLH$1#4ls}R>~W=R zE`j1vXTsbZR-Jx#YqyKV3hS<+o(If%Nb7+kZI6mD@}ov;d#K&zl~vLP3)Yd6Pii(8 z8anap%JO|@O%@e#qxUt()wkV4qj?nWKn$9-rWXm!Q3s3cRbqg&&2B&b5*5k zy>V>R=CyMGtGdk9Z>zA%z4zOsXV}I@A`>`83RZvEJ(Q z`9S7L5)3r$F&~Mb4T?sN@hW~iAm(Gt$K-OCJ_cf!bAYHFOa@z4^JpO z)HQujFek8&MaBtCxHY*hn}e1uzE>tx1I z+l5wFS7Vp>Oz^f?@zjaOTr(I3fxSN7mA7=k#k*NZ5~si;^Yq+3+@!O{3j&A3b?Nzn zts_wlyy+UL+72xUwuJ7KV-Q5O4dgitFTJloMqt?Iv%fM6)jOr%w}t6FjmGs#|EzkMwVz z>??C`5RM&KE$uOX$36AtPN$km_QDWIAK}e1>rV7tjHO_Jg3rm~5clpHSJou7rlL zp;%7g&gF>%6w`r`)t%jmMBX1eaJcIUuM}-9R=gKcx!U{{X%10BtYCwFgg50HTc)glW0#;CxNbtC@u8D2AeCl zzkVO&ZN|Jlf67sj2q^IPwCzP%T1IUMizn16LadUkhfTX*sX67l%{vj@?W*tY{9?PB zUPiLGeZ%B771K4rVJltkp;S>94jC*rgf7SL){s(T8y%J#WY~k^U^8D?KO}6wWVX8Vl#V3C5$}t;6**5bVa`!;2TbvO0)R(li7XO5E;&`Bdfu3_Cb| zUn>-G%6KR1#nlV|YD|alvL42Oh>z{m^Uj#DQ1n6B<10JVCX3=(ZyH6d4PNGXp)b>L zz6u^Z*I)_`6R!)4p+(w!z@y|O`Mqv-OPj?n@NLlkd9gnz_09K@6&fJ~gytaAj*dHE zkASplwNmzp>7w#=oT8zG;PQL5`w64rm8p%0(slw_0w=%aD0Moofg{8<8LDxRB ztHyK=r`wC>g~rpP7r*v8%YCR=bR4`o`a0%Rya};PZe2iYx5q7Ivs5yAMHt>GT&8?z zWUZYcQgiXM^mohBQTW|V`KT-3WM)*I&B2W-e=jvgks?5@3*n`1PY~JoZ1@e;gbH$Q z2IE5Ic!Vafg+n{Io-@|i+>JCbd>#~JFC&JD3$T3r!_#O3I?h$O3IC}&uf>2aY3#O2 z8J0g^rDWOF@Gf%{MTOHa5`@E&mL*AQloHY<>jtV}dj@%z(+lE44F zWwx1t3{Iz>aJemV7-&=a%7Uvc+O_gRjx4BUH@3ki#QBrEnw<0!C7O&1*e5G@)@=lS z&)EYiWzXef?N|qG`ybM~zpt`WVdtuK<>^l=k~tIWU606Potx1SEjnZE=g)Ii69USB z&TTPCzo5%eTp2Sup1h$OnRzM_{h)5&oo!#r{jp;vX0B~nNzMrGW`lAz<5d~j4`FAq z_g%PUiS>%;V^uHqFN22xfe^iH^}^l{axMp1aU64WCm)IX8&##+d||)IL;Q>ep560u zyhAEOvFF3L!E2vx!99P)y2crf8(R^lD#JeJr%WOrr*juNZo?uZvQrPq+jq;EcDhTi%i#nYg%e46b@qT;u{4f3qi78s!PF87@c5EJM_v=gTPD>kp zC+QpnlJ55Zv%>T0&yTmfxwFd*g;yRkuoi=t`i~$gcE!HL5FwD2xs|+3%l|uYc9GkN z4nD^xGTJ6_7VgrL4#9IP-@yV`MIV6Xz^f3GJd}c02u0bC^Z&l-<2{>zO<|e$>+=^w za!mgX2CV^i1#wZI6{!S>jashP&Njk)C6d-AQ!uZocO7%l*&n`z9)saW?mvdje&GbT zcEjM%)Y_@V6)>o^iUO?AaS?}%IMiJUVpc1I?mvl|-0|16q?Jpt$l`v((2(;}j!j(U z_ z9z6I}hgzGJwp42}bPK4L0Hkq}2HG);LCQ!`n(4EWG{8v%#e#ua4`ODdsB!sOX}6_# zF^~r<%~%4pe!7|Jix;mX`!Yze(t_0g=z3-YB>*f?K_g(q+lsWB zwtUdkJ@#MMv(U~ygdLp%H}vUqr~hQU?<BOfxxCN@-8h<@&>?G$pak;^5It)O3f_(U zNHz(mx;ghjhTH)7l29a;00?<7ag`Yan&i$ygTx0LE)=NrfO?o7CGumbbt&Mxse zLBgR`4{9d1+_o;@9?sq0AmV>3J>64Om(D#-sM^HjWBPxl1Ht8m@v_-6eF7PgBzq z`3J=4WH#Fb@{$GXZI}B!;n`+<`3Ehw*<`rI%Lsp?_HPJ{*0Z*`kKCUFp8luwC}t|L zowr2Ac@%3uFjavHt@(VPiZ9RT!&ip41gGHU8JUTEZSD!QU77ESSbum~ltSV&qGlwl zte3yc9f%%pGX~Q!>e&ES7&cvDCcOgWAEsv`NUR$ww z%kj(GU*{oHWGAefZH1=;gInK=my&Cw`C!$e&r3rwExTZCYg;8ISkH>;q(^U_KBjwAO;gkVX)P1FUM-p}#ufk=O{s#b}e8CU&q z#hNfS+MRG@mmV}rybX~Zht=l-fn5q7z?<*2at*;)ipZIDBSq{#SDmfy#rE)10$pu) zLJp-Kr=QMs9NgAEyU3|N`nNSpj7sG>JYsq|^}MwZ%@0jM-yH@&>iKh%$Hr&t!nGQ? z2vfPvdV`zG2>yKHue{Jr0n*Eq79;|7fmgLr*mE6Qt8RyGREs-9&;I&|;=N2FBlPI- zmWPBN(1wUxn4IyId6c0Ya6&L8ePqP#l9!DWO^xsM^RvmYG~vhqwqSj9-?~#~q_*Pr^6OT?`Ff8--!RS)pQ}Kmed_+>^!oNgHLAWXC9@TWDrJU!4a^;zJ zau478*+K5eD&-ly#*WNjge`q)!gX5Ig!bzWbBxo&zvekuCq_K!$e%@|cbY;s*IRPb z*7iO2ER!Q=lknc$BX^oD5w@;O`OL$ry$SCQI_j`xOY~jlKY%W|S_W>g6}^NM<#wTw zOML_)hcXvx-eED-NhNSd8t*I^a*HVX5rl@xdb7Vt89y2KU2rdDtZW8yctLjyZ5!~F zJ%XgQ9^<6~7mFb^oi*5Iwoj*C4>3j9%K-IYAI@)g730>ATjslUN+5eZd&X0=ldN)& zYI1`TAG{|pvswY(HNewyDyRzT$kRsvj@)D6oeVi88bN>U)eUu?RDaZR85=*L1&=t! z{Lpo95l!6ro!Csy+s#And+!*9miT_TY09*9wG)&q>ruj2U;cQ|e69$JGusSU4>Gq} z^Glbzk60}eV?t7#sT-n1u9;d4A%!E0+K^-_^y&r=x)jG}ZT0Q>Q3T|!>&kDe1?hB@ zr~NlI3!TA2EY#UHe~BP_buf~nyGRGO7Swqr;g|UUgjugC8LAQne@sU{+%r%F9JdQ{ zRg0_m3dh4b!i7#1i(PV;Z^l1jvXzUidWv5hBR?LV^7ii24V61mM^9T&yFj+KB1qhx zpS(WM)>tc+PYi<_fA%wf@?@rqhC#ZkoE2?tmKV*#KlPa*&^9ri8^^=Vmt8oqoVf(r zw{o{5>CKKBkOhn5k=JxttFpRVoLrQGB& zlNf#dLm4h%SBn49+Fwq1XB>Gk2c3{EKzY|7X=;vwWs3k=stb)azaKXZG+5p^-gdaC zceEhsy~DcA7h6t+ecZ76`_sXD7cX9do07Y}KQoXowcZN*YulmkL+`>bU3uL5SLW64 z&&PIOy7o5g@14)S|1o**()F*sf9HPx{sN%1>Tuy>3Y#AWFru~H^8ar`-=q^5;{=e_ z9nI%y`Ge@~U3RR>iX_R)w@mn7lfXe7MqRUAnu10t;>+deR}TK~kk%!CNRvloP#uU} z2yu7kagZh?5Nk#A%sBqfRosd0E3UEn0^GYcT&gR|tn(;1zh=z~Y*t5q02Rs6wj=Sa zs2QwEvIiPPi0bZmK7IsnPx+m=MG`=skW>U}n3TY1jFm#JTIMnR#~W_vaAF&Q?#lSn zs6)F&j~8;#`L>kFYrnf06cP@DV4+5Rz*MQMM>KGgQ#Sf%*mp^_9Qk4}-~lEfn;=91 z5tLhF@7H99%7$$;(bN74DtZ>%pH7NyGfuqCDPdf*hjxs$QI1Yi&;xB|v91CR!*loe zoz;ZetSiV+YW~tz8P%u(Vx_oO>I`*q-uMc#A7^_RTtL*D#A?h8XipC6J%vX0enD zM!ZG7ljh?=?1doguMlclf;g?s1p#38J87SU0*>v>f^YbYok?n9C0F?m7S#h~&eCBC zW9ggV1zDdhuVwHZ9=2q13~KPQm~5I%FxT!P>9K$WZN9(Y&|_dkjH{GxJvD|bli|rV zg87g)5|Bc-QQi7{mwqTXPbWitU2=3As!23`@ ze{yiGpT~5-A~$hwdouE13Z1d%%^dZQC;G?!h%>@;Nyy$|XR_;} z?m4TpaR?Caw0J}kxx#^TnFXD3P4M9gMYIpXyRmoDtM-O0 zYn>%bSZg@Rj!0Q-dR#tSv(9-(@u09~T@eVW7?F3iFSMam;aRk8ZyKtC@bga}$gGOk zXLV%B$;pRd%Mtx#jO+T$wHt59MPjy@eB=~F6>M9HzPO%Tx?bn-<@~E9O%L*Zt{N~p zWr2HT1uq`1?berlX`fwwB4Q}2K=`G&q-inlqEK?)3mc#z3!Hz<1?KG;n*dE?d^BpB zSNB)FGktIzn(45pQtuVUf#;+WK=vKdVQMwn+hka(_BRT}d~7zOKFo>c4LfZ)wztF< zPLr?h)4?@cQSNq=gPn7cIm3^+E0UHiRXPr2Rr<4jT-2K;PP(e$ra6quuhvdR;4$C? z5nBxo$laUSX2%3V(T+&K!g&PYzKRxw2E*_ERWBZn#JPb}f z7~%y$>SW&ZqE(PL!nS$!{D_u+l_8KO!k5~%2x;aSrbV&pb;eFK|D0RW9^OwaB+D3l zKM0?5=gGx#3zF%t0=Ki(XLtpAPjkM`Y?~StF?i|~mnN!Hc|&X1se+%9d<0@qhPMu5 zBVydWu*QzDf={RqN5$+R5hB}%OK|FWXs#=ua6Gk5$fkIv$3zNMj}k`m14}i{ZFl{*mdCpYaFZ^ z;sczSR+$RCyG!StL%0(edh;(OJ!%gdWj!nK`XIAwj&*9)NuixcLBL)!J1h2gNv~4- z+rIk7E5_X1rQSy0q)iq540Y5YTw4z7p$ffms|+GXBq0$5YOdb0&@vt1rzuB|#Zc6^utb{yX9P{rMAew@dCS54NENUhV|EbZv;=q}Vti zhxxoxgcXX<=cV#d8SbEi(OY|g_LbqWlj7H|Prjy;pMgKCOufS8g?jolsGlm!@j@`q9 zlhU@l#x{!$Dz2%+Hbs#}7FqrQ8;~u;Te|UpWEEBLO{y?c&jCE3_!*e~Za>>$^mC50 z8;)-xyvX1`FasxOb?6PD?_pe>5_=swp=88k7yk&lq8^s5U7)nMGbuCAuI`oVMNCJX z4#4V-2!O^8_wfJ_>z(iLU--}JXfSxKLBNN-yaW=Qs`cZ2- zDS*-b3i?#$*1#fBTipb*Hs6C2DExAI$LxzMXnC=K71lSO)+j@~w5?*U^l2x*N>#C~E?4Jj)Lva1-HvJ0tC2hvC~V6 z8Ypx7DOKRAB$(gAZ=u$ifiu?JE-m?`rC?f%q#osJL!kA|7R3Oeb@|@EjEq{0s|NAG zeh%QIA7{=z`##Ln2fyJ*-EU3^th;Qi!l`w_p`Zp^W&6?u2LdP-qcHjJ$HmBHy)(C2LuXW6`RRr9S0q$SsC_hdo zf|h!&X%Zsj@*oeKIVfX~eN9-9a)JqKXuNo90xe=a({HB|By%u?ji($OYuZWPT-h)E z@kD#=eSRkcv4i!v`)F;aW4{K?^tqh<#fF=K~JWSnmxU z=Q>zIi(cJF$2XzLXC_l<&l!B`;qETjE z9VD~_M>`CcvyK)*YVD%L)z3;eW^yb?L$F{EqhhXHY+ZvTf)vJ{J@)^LmEnKJZrZc3 z1Nov`-XBIKt*HP0GU%KfPO}uAacqa`Rc+{_ep^v&E`kG(@p(7o^vHEnJAg#=D?UNxG7} ziI?O?4w9*bi0FDpN_kwC{ZhnN?{1B)XO_UtI)3+}P92m47MlD4?JRi9pdN|C%&3P- zE*Tw(yCfK5EJXAW*M7loN1+t8`8ch@?7AiB%<=>Q!x}_)Q0u3BDt4}GA|lZeG=A-s z76n!>wtC{xL+b5fg+UYXNmiS0KKJreTZ zNvLw2(jLU!c?>Wam}w5eOoM_eP_0s2v`D&LP1sU|nW0B*mhB?R@T;YTm}K~)?F#_l zsyI^(An(bxVKpY5x5x$tAUc8!N36E9nf|pH;$AFp1=pGFU z7Mw0FU_;{StqJmkIRowuaB1GW`640Tr;*fU(NOI|$`3U2LY z%RqD{9Hz|IvA7IH{juKM>-);A#;OdQf^iWe<_lbIKPsA^saBpTp&!D0KYdlLj_z;B z>>Qd5dVgkRfm?2$uO9b-7q|Y3g>9ms_heDjyjgDQr2fZOQEq*pE+Ndna8(N2U+T#B zUbw8w$2P70l@%p%f#LU%;66IOecC&gl>j=CE~Zp!FQZZS3s{RTj5sFU8#zk*y2I!A zRILSZE5XC_``^W?f)2vNzuw&uRy}rc+v?h<{2CDRAcbN~E>Z<35on)@*PPYBh3>gn zW7f+>$DhpY4fLQzvvqA`gxZts*(*5gjQs7#tD|H1Gh_6~r9CN>U`Y`Fe)iT5Z0H12 zjSAI9LG$d#_N!f->N&yATeeD(a|S&oKpAB*{};h^U|i)dWDEqEuu@;%XFE5#n4_^d z3}Voc6mh2&{s=cgU>6+;3hoba%l(lgZ71)+-C@ce)X5t zXWP(DQRMpDFasTGr4Ne{3&8I6n0nHAfW&`N*2LlQ?I)H6?a`I?#U(S&-zBbyDvJ!A`!LC# zaLR7v{u!icsvd!xSx0aB+1=la_R*{73W`Miy`+|uAw6{~bK)8AVpNzIw|d9CmLBJz-r{`aNkaqEr12#=lQcqbt5^MhNK^s?c! zU%c+tDy5Y5dxUs!=06{Ku8a{m3zv~&Zi+8vwBto;?H>WzliLEYF45yF*6ydigI@|l z-&fFaiyu7U9V+|2o!5+(ig?oo!$YXtioL|TW7(V@zxi3)unzR81RO0iRy=5+R@{ zOwMURQvwrkiv?%j-cKE}O2S)(b~BCMeWZC=2CJd8V%jXV0Qs+m6I<{JO+?p_N+vhj zmM1Pyr^F|PU8)n1i*dxfbR=?qx6Zn%rZS*~OY;>5n4mf3GLrI_Om;Wxpj>{(svZER zjtB~+NFG^e@j?HLf7cm5!cw#60K%fk|QJ^C+V@A8Hy~j&K%y?@t z@OIZW5xrwDem{9Dm&#!%5b95i4V)w%p|38C__u>uRJRvHe|O)};}83Ri+0v7$!EI3(h49=N5Rkp-0D-{<4PWhLb7 zJATg1^*MtcO8qB=tHitW05kj@?L525-< zkBZu{{X3D6t!wF;4FY7an7#*;o{*<>U?a_)gZ$o@$91!8JoGwDG^EezI&zVz;X1G6SJEEC9Uxt%uM9Y z7x$INrCf0FX*DdLZpLDYH7l)Zg(fLaApaTz;G@#b-}JWcak|6<2ECg<;+)Gh9&S5^ zP%DEiUs6J9fU~4vy<%Ve*?chzN$2pq_Ze=;?-pA|q_ok!#1D%aF0g-FXv24{MB^59 zk|PXnoJvcfeWLbx5v~fb50-0BDSsi!X_*vmdY=QRMzXWoCVFbyY13nK|8~w&+Ys1 zWOf@imi3XJ#H>ag{>$5q#H_djmL%_p3{V76q6*Hg5K94e$l^DKiYVA&w+kumJI3Sg=)2irxO1l zCIfbLs5|2_`kNhVPL-bg+@G*7?PxLOB}?J7~F=K?>iZagr(}du+apY?}Odp z7n}F@j;>qy{fU0}|2|vsn&T~1p;_Rp0$#Mv3Td1V8l@PEtjQD9Dd;oee>5q=w01hY&j?&pmIyLjee*5 z9Q#Jt8M%AmP(0Ftj`Je*g?1S^MP%@<)fvY7Z(N;t_hOaey@h7c2#+J5-+hEpU)1qlaP05f zMig+u|0j1$S~j!W&bIN^eC9TLs|>#~`!giA)K;MxuxK`(+KPFU1R)Bf{}%9;dn_0Ied;N1W<0KJ?@=f8nXvX7 zae^PO58sw{9|yQ65sPbX-sUB^c8Pz!U7}IvrD4m~EL77-)DZ2afWZh-ubf)AgH|_! zyt&%)Sn+AE%8yYYC0!zh=gL|aBr@+Krw@0MP9o3uVqPA7!R&Cw#fn}HhrTNK>BnXC zj}nfZ{aLLCenvd9e(E%T4Y&5*FnwBlVUKJ_070=@E6fdhJORR>f=tD~j5Rz#eEf0Sm>90<9E$`A`1Z6`7w z#VcZz6157C9pAUSTqxjjLmixdxYL~d?XaOch<59gUJE_951Hq>ROrc8IOA}JKv8yC zcoq{axEova$5}TazRaWFaf00^+`2~UVw172;mZS*lk-Pd(8S^u$5q5$?G;1?PoX^M zWv6X7H{0ig`FGnL{h80zD&9l1?u4h-Lpwz>PC=cPNO%~yK~G`2RcEU4?I_FQDe zMzmWj+BvQ=l#E&!Jn}b;ldOw#Bm~kVb@7D7;?g&sp0q7Y&F!a4l&p;012fYlh`iA{^KM2Sf@Tvmj&f^}50;blE^ zER%iZa|mBed<{niY!tZ)t4TNHrWLiZ70eweVK&jJ0<@&>li(MEO>jLUN*nAQ&iFg% z(`Vvwrg;nT#7F6F_?%sz%ck6SPI|{PsPYT}=YroLY6(|uTX0qzd5(m|F@Q#J)kak%P@ zj=V2I>D0i*Re>s?o$y;}ZW8%*6?rXwhtgd&j9qCK9mXH zq?&EjArOEgueas`o)F*B{;ra)P9en2JIOzDnnvJ_c<&q<4Vj5!*r4)>htVfq{%}Ow zPPU?=X2}8OBZ4UzgWljnP7{j2K>Jke(h7Med9=tjF2g!T870WPfe8|tIr8H>2ovh4 z#q%+k+p19d{#{1Yb$YwigsNjfu!=Iz^Sz0E018{PR2ESJqZhKF`LjMKLPxmi{xxlp zpN~`sORuoCH8LjW4iX$7%C?+JhFlWlIv~bZHWEEbcn2p2>WKSh!Un0uD3(RL)tL;? zi#v%bp4dcQ7J#NNg7S;MmWsKWJA_{!5|<{7(bflG!nIRNsC`x8)lA9$j>=23x;0!` zYy_iGkFp2~CH`{?{Ha=n3Jcg4)m&Gw+~EyEfWv3F5CjiLVPKZfc{gL~`CY1+@O;QCW1T1Y-q4v3^PYQY8DvXHvqOW*68h z#C}CUVfrE-F33HV`20CA_t3XK3!hZ8ssRA6)ZZ!@_(;4jM&lEPr3NOCitx?&rxzNZ z11(r)_6dj45~X)CgspSdBuP+YYBhv*LKIqG4G~16I}WLJBnB%fCo9`cJwd2BIQRlp zh(@p1%k0iX(vz5_cd*DVkElhyt#)nFkmycGKuO9;6lT}ChEl;hCHAWMbQh+koyp^I z+_z6y4`c!O+L(2oNKKGK|ZXt6l$o~n~W^}Z<;xCQI zlT1Vk4)YxZaNm^y+h_907M))j{}z?x<)5N78`?tbRYWU4Rj!AO-( z{0NSu88tUCHV0TPYAGq(kzkz(1i0vU(#?_)#sW2J)-#m^KjVbW$_hNYSgH_1E%peN z_WtqRG&FOB8LNkROh-)JW*c%6h{r@GNke$6*(RMZ#X~X`AHVu>ylFVCnOz|2Ud3Mj zx|O|Lv>B+K|5%&_^X@^Yr8y(-jUb*AGezMeYM;#Jd1r2j3eTP8n3hTSzZo4%f@)+W z7*S7ts53;p7F&E;6Gm{p94|KDX-rIkcby<86<3sCGh`D`9itNa<2J z@Io%azw@FL{b_W12c{TquT~X}tQtaZX*QVt&~K4e=cCJ91y;$!xl!fMUn_=Xd2_HI z%2xM1#l0Ti_wJJ(KkTY=XjHbC%A^4DQ~&+YD-`gfM-e_IC51)cyCitSjtmbP8ovU6 zT0;8N0d7$enzxe|KvZTCFr1Y|){uTZ1bmhNn1=vu9eA^2>w>$~5D|)TcY`?%8#0V8 z4BRi?|CF@d`}q=Vfo)9>|L zhfT%{ADo%KF%dOvG1sJDoFAPylE!`M&^bG9$2RnHO(BHi!Xkoemii&!v0OnjV|q6fVn~Bo zEk)RK`AVC1aw^UTvoH$<57jnQ@k{z@^!V$m10%So`Gc z-VOAmez+-9m&RY*Ks;)>Jh!HmzV|c!SVCro*=gv$s8|V77V1#t#!lm%DlgOHNoYDU z``DkRekNiHkeNO?{}0CoEJb4ydiRuZ@^Ykub*;Fd(QTvU+1;jtstMSZ-B$#5QL(jg z-U(y-?fB}gXv(o*bwy^5R`)uL+dbQp|HHQ`jYzf(mB-P+whBygq$>Q76=f8_1V~6A!8V7 z>&C|N^FcpwMoI8wx3?A$4@&fOOS4d??HfRL={~FDm&50H4)fYi8%6bZ2|Ltkh=r`F*D6i_ou zhTh*GW`a|9^1P91Mv)V+OcUm4RCg%pwPG3O#_GS~I3zQc*rBS%F}^#EmY`YWWEa`O z4N#SMj=MYZMQ!9aALKVxn@!FS0COAM>I*VSPWu7?#$1FMB(jMEKAje6>YC|usl=a~ zTbPQLj}K6ILqm#&Hjxsk35Ae%uiF6n+eNE~IKzeN5|-Y*p_&OY7m$xRhVRqnw>J3QqAkP zQQgpVyqsafcJvsa0myj^PS&NG9q{P%-I$P1$#}*2mU(9_)Yni z~Oh?Q$^?hn6JoQFtnOIOj+m=4agrLZ9CKp%GokxJ^UR zedg*cKMO4Ho5?H}h*mvq?Qr;^YGKAr$@9)Mm@;-&amq-Cs4PAsB^|{$no_w>Edw5( z_7=}vCfW?Ea5!2=n)Mc(OX;#(<(v+juTHjM4VK7+EOWa`5*Hz^(gYf`(2T#|SH9zR z%#aPrS4DLc3oJWxbYPQ8ig7Z;CdeToZxXvrh|Chw$_swVjmr}ygH<(HV`TTJx3_Co*Fs=dM_W?(fz{yo8c}*ZBiBq$2hjroslt3m4~~>T;@%8i4HVXpB29J zST%hwzPIVn_3oG6d#3M;saI<53Sapgo9<4JxpMSL_bb1f)5e~x16OKa3ttC4o$lTF zKW4Id?sx5e(DTD1+R*s;Il*G6fQB7;)Qn{E55uK%9GnP%p#@Hyl%(hU+MN#aF+VP^ zmx@s=G^}$FMyJ`|68D2yE#5X2CV^ZTE7d?ij{)Vg52v8&!vXL0A}VQ2YGFBv!pM3Q zORELlXF&7?3$Y1lOowQsF{bzEI4jKyhgnQ{je{ybZwB$@r9l_wCYfL)XcMEGfYMGz zP?r-uP!i#j;H3=F<)gi6*8&ai|Mt$sP|0qJwhbb@w3gqUIr+t-L3}`A7HT$Ifpz%- z<1G}^ruF?DSn_Ta5KG3QOeICE&MDJy9n_r|X$VPG5`1q#ea3N_d42ZVyx~^!$b7l08*50onA4CK!B4pfLqdW3kqF9zPYHun25~4!^+fGfR zR{tF4lyiXStv+J0ns@8|3a=8YMsZKzPFO>b6$fc=JVR$dOknaAPCnvLBf&g<+HJyX z;4l&hQ4sK7M!^3w>9qU763v_cOgaIycr4P{7m$@Kz}`iY&UxPfm~q|~2YNG7PPg6L zuiG@yH_&v?aIC0%MSKS z{^_o_ELag7C)1@)+@>EC9W@-*?#w#4IDXE@{#G?b-l>Q;PJJm4x9qlWG;jF$oO3zv z)-kUey|eEW4v`)_8~2?=^Ajd0@)i)ix~>p5tj)37%lhpMjmVUT>3zWWP!EKiL~J@( z+F1KS_sQ${d}djNk{9ZkE-E4rRVPw7Z0Sk|2hbN=9FQgz5l=dgq4+`-|L8W1S6i}h zKV9(x@^bEz=Miz~G%sszfYNiGx|y4~c-vOU0sNHT#-9lID70YwXnvWzIP7#PKLRRN zCXxoFaQOz4Y8*Z#vD17dO2gv_avSPS!(rSpz|7y$Tz540SqBy?xX2x1E&BLLNr-a( zI1ckQHS20x6O%}EEbUZHIB$qe4&PU5%ua_FvwidBr3m!x#XcQTFs{uoCjL71X0hFM3`#R(C&oW_Myd`pB|<320pctbrWqRD8v7Y99J3Xs?F!!u)4|RoEXfZxa&*%0pYF@UJ|KJ(TuXv%aFMtXd zcyzaqwR$#r7mlK8F~hMh>gQxE{c(rto9O%*cF&Y8VysV#(-9iXsVlf+i zVvX}AQHXgm(pR{gHv;>u_HXDR|7Kd<)jR)})ChdXgP?hWBHC6IeW@^$#;{@ecJWrN zI9Z7aqtPXXHPfD=jZG&%MiRB@$Duy|Yi51#H<6}m_`hqYF4*BML9e>`H&CS+W`@vY-G<;gIUBog84?Db{Oh$f)ADy$I(I*zs59!ch#AE1{TTOu9K zNTh+Gsyq`%U5*R3WyZuwfoCN>?&)3=!P0LR0G3Mml0#IY!{^|obY?MwNRO#1K& z`Y5|FFQ&)!O|x8HYY!Ywo$YX~+Gie|-IX zT}Qc;RTTAX)aFZbXY{2lhwndo74+qXzU)%Y*{J6e315C4=()80`u*pB?f!CenDWcc zz(*u|G8bjc>d4w7DYRfGvo9!NswXYciH0^IBC$K7|bspXtg`2^T+_oh`SZlDJKpMc@PBIj3`jfquhhQ0) zsc@{G4dRTaNaH;harby5R^x->$xV?Jd*+m7{UraV;g>vc;tRO$7-d>$9WGV0K*ds9y%XTCVVyw;FO(HmSJ zv-yAoDw5^4Ki*l>E*@;+sIvCHzB cM;-}@;D4Rz0P>)a7XYz<5r_SM{9)d|1Imem;Q#;t literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/robot/overlook.png b/resource/zh/gui/icon/robot/overlook.png new file mode 100644 index 0000000000000000000000000000000000000000..ae75f6c085b6e4cc44e15153046bf24e110dc1e9 GIT binary patch literal 44761 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

mytK?aAJsOE6^rbN&9$Oh-arNZ5p(!yJ8E< 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 Z^Isw0?}_AMMZo|7002ovPDHLkV1oCrfHnXC literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/robot/down_arrow.png b/resource/zh/gui/icon/robot/down_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..10fb526dadc0844671283c8c332e5f2f105d4462 GIT binary patch literal 1040 zcmaJ=J8#oa7`0SXpwJ37id5<1E=9tR>o|36VnSj&G>C*KjnoVb_2Z_oTKgLNmbhJz zI+X>9k%d11Vnu?X6=GpxLPEg6Kgf)PRIbycWeBxo--pln&i8!QY}}ijxjw@%%xrDN zY|-^%_FkB#-(N4Luh3oeBZ|Cu6RAiVb-*0zFr~W{5 zalqRdhEIctvKgjWN+a9dLic4M@<+i1JHo384y zr8}UQYSci0hz-(UD@?RhXNPt*y3ei!77QU|Q)iEz>eQRSz%c@OKF_(L1c9RRFfXeR z-U5;ca{?3vN#!8aWJQC^VDzw5E%v%v%dC#H=t*aLghZMk^!t6jpW|`7AwX4C1yK?t ziK7TE*$IiAa$&MKwqT;fjs1xDI0TtR+risJXQ`*hAp}vqequOGMv0;+6H+@8ATJ6* zki|7bC!~c=-I$0@+B*>vS}4KWu}kaGT^y5X?#>p^@hIaR4tEV-bRjWUFmT&`9u zbGd4&`NFbUQKT`q7AC|FT{PDAsrHDgoXORU7}*5JZH%|ZUC``df|DMOfMI~8H9z!l zKe?Gz=r~{##r_lIRbw20VTv_>g1jhMIkgHcDqqN4uc#HHtjMNJd%!A7Id;VLCZuh| zt^SuQP-ld!KmO^L@fB^tYc-)x zyXV0DtC#k_9Xu^HZZ9k>%)eZ}{Ai~6##r0`c>ed?{NTsCLFxUq#jkq|IAmVemWqS4 Q^)s8%n$|?AbFXM-27VH5{e^M!@e>0Mt1H>7C9; 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 X1N=czW=W(^Zx5}J3bQ}{H<$kdf$=`9 literal 0 HcmV?d00001 diff --git a/resource/zh/gui/icon/robot/free.png b/resource/zh/gui/icon/robot/free.png new file mode 100644 index 0000000000000000000000000000000000000000..3a8d148cc7dc7181cc5af00a6191b247c2016538 GIT binary patch literal 42966 zcmd42Wl-Er@GcrifZz$iWg)nG&;JbHxA z`V`6_j9hM$E?IQE2S+S#&dR6bB4Wd>Fd;6 zEPIpt%ssn(VNkQ~ySdD&p66#!dTIo=CPSngecwwa$QupDKFgZ(w&v1O+m*`4O>I+< z{oyA>dPVG7!juDVGGTvNb^iQm^XzcnXBm??Uv$aXmb#SUUlr0MNote~OUoZf5CNDt ztsSV|IkxF0GMz2csqRYTAfiQr^D9*t!m%fw7?QE5LTIpHgAN|SH-U)c&-Wkh)k)rA z)a&|B`g0=LuFyy-UiaaC?MbxPN_xugF+;GYtpkpH$wa$ybgu#2&?op(1xeqYxlgjY zEYp2y>sQGf_ELZj4)HJ^=a9kC!_@os0(OR#vS^2=1?xJ`AvbA##G=ZZC@S2e)K$|K zobRZM;ZW%3$HK&H-(Z?UFe*g+t%<>G&IHTnZY8x;V7g3m{4?j;3XoOxoj8bwh`o7UORt>#I`IdxUyPvJ?-g9n;>&5W7##9U6$&;=xIG8@xm@hr z^S3~+xEAxI=ae9Qh%M#1UKJuT>$Xx{08z*!ABSdHwwT<;3`&0S=R|enNVs($gOiwdM+6_}S1&cA(%}_;bqjk!Ln9=XnB*LL#d;(HLBncF*u0PC=X7->^V_ig5H$mjEj6q>LHQ& zs%ss9e7{lzL&U(3aG(Ufx5gG^EAF_$3B@|f%*UdK&|ZV8xLN~$7DB4^-WO4@IzW_e z@gK!UC66;F13+ywbr#wtv&7GkBB}~5KBQs*HMf$fQz*FP^F+XBEJ;`9NvzC)3g^FT zY@vrYYIA)PjwWK7Wt=v1@ahp5kzQ#mR^bj5*gxx@wveL81`QtlQQKD1xktk5I>?&W z#7h{#?5|wMc(R(;n-Ln$f@`>>7va5FmNa3}#eP^q{R~NciSSMM0M+fB_`cfDxL0s$ z@&w5L#rgM%<@dp3ajl&z{!l*Gl675<#y$4=>~ne7}}t$J1yAirloLe7s7j1F|Q zv5el*A;`pu+>A@{TIk#3&alBxk+yM>mqo)E`{?y^UP;>|oA@0PZxWUhp^hOZ>mNl0 z47tDXt#t=hr*j)H$GRfQ1BQkAb2ZDxdFA%j|FUMoDKf_NJxg%#!qE-zGix;+a}ASh0Ag&XZ}IDEuQch?PI8h2a{Dj+2>jV(oL${-d00 zV>oC@M)|Ss-1t^)g=V0&y~Hx%%KhDnA=}Gk_mzUJ%DJ(HR&K|=IAWkd>A7WxicRX; z)RlLOr?Knq@Je2POgzp2;oV%zT%zP=4sHzJo@})F`cdL zyK>UMV@eaN3M%=_6KLUFtCm^bX{ocnT@7>_G_Bv_yasJQQGKMb2J#UOJ0xPuA}Xgg zj}ILGK}`;4F71OKP2%!Y405T}zsiy^Fq59Q2~(cS8dPd=OuXx>4=R}a8v8k#x--Ko zLe+XHVF>zNoV#j4l&^0a?Av3*GZv%Iztk4w>OPxbl^?y4HC)hTR}*2wky!|z!%2|J zbbI;<$KMoE94RjO*81Kw@f*p@=by?`?0l<*vTQrUvWoxDG4#pnb$s~Rv@|o-@_E%^PAl&HUr;3Q8pC#Rd@HHxq~8`!GV5~RvzT12$x6nn z_u|l;ztAsIZM9{g;2Fz?8hjqU`O*F8Fr(5qjvCrIf@=CFo%A0LH}#^ zTBp?*t6lhE26OSk_x(5V!xq(jLHWmIDel)K=xEbox;95PE}~F8`xzE)=#wb#So5qa ze%!F(-N zRb2L4?y*ycpIIh{08CdVvKWiBAmyV+T`p4jt&XwuFKZlI{a%C+i$$vLnwV~+qJ!X@ zpGDT6k{;?C5=K%ZCUx88#0il6QPYds-1ockyxt^g1VyDS#A{l_HOjG^uSw@tbw$0z zuqYNWC2=wdQ(hOj18HdkcH?CXT^pV{gboR0Z?sEvPxIcEK1s`m7*l{4k zu8l!y1LM;86<=vt1Xp}g<~Du4f@A^&YvG4O7TauE0FT(!xU3#FE$ejms8}f7ix%>g zI@}4vwUZSo*rD+qe(Gp+ZTst4qwjxeMVxoZ|Cq&v@kkLKv?@Pazdm+o2HR}*X3WnA z7w86f0yYK;J4U`6_uC5&EMJHYJ9fwj`exY76*Aog`f(o~AJ2hZ+1~cl%!(OtL2_|k zAph1-dtW8#*)@DEH_E%am4b0J_ePFgpx8L=5|>lcA-g=4J8tM%B(E)86M#lH{r6v} zc%Ba&I>u5MKYhABQfPwidyh60C8fM{j*PvrYy6$#%^A%0wlJ6v5aASK=a9No-m|*C zLp|?FT&Qk!csrBqexQw0Ui->Wlw(L|RSSsVQqeB3HS-Fw5EF`l|zkcLk_(i6F zxe!pJnV=+f&6n=ER}bIH%wb$sA`N$0CAyv0k#DASD)q_iR$W+UCm>r-r83_qPgfF>#J1mqM^vaQmO$hz4 z(%-XIyO5fGOZo+jc=cV7@q=MOqG)(wu>O0itqfh!>vIY6MJ)&y}54bUXTGisefAyJCygIVfG3hJ#L-xQ&~-_C5D|dS41Jdpur-lHAA0 zLk`@NzYz*Z-QkK{i#g2ps%a2~eh}fFWEQzg;ei9hRD0qO1+oLcZ(l(AVfd*6GkPUF z0-rAc;ktQ@6TyuA94$c+?l^nV6TZjBCVz0GW3xiqmbF>2IP2!$m1}tKCON4|zHMp7 z(!_>uTTtF#t_Y+|WAC_tRh5;@HYMQCE7Z^%j%vVOgz~=Yw7*LB>a^M88bQs1!z1f1 zzseW~^d->D%==63I=;5M;`3s|vGV%-E;&Ej3?aX+6L#5gNnqIWC_+zsR0Y?4QXj}1 z=f1er3GyTwR&5pR7ii70Vb%O$LVX{@!o{hW1trzwHrIIXaq6Djgn2G8)SG!b*&U5L zCWW=BDsVYsWlhtZq!G<`T;_{ABSrUB#_;m&6}Nq{6<46u{YxY}9Xy6S+Tf8JJ)u_E zIbBucHg~eIpBaf4T0FJ9K}f0Y>ws>D<7qws>>a1>`@~t7y8b)kYwzuK3GfsjdRGH_`Z~XP;(d>F=b8q` z>aY)lQvF_~T``c5W8ZUO z;M_VxTnjpz?sX?5Zs%u&lsg^XIjkj4IG zV1{^NsFX9!Y^FQ_ZwNSTSwZA?^z7b`crscCf)CK zeAmdT=iql3x8e>RnCD{8y0ajVx)O8&jT6X(%x;|3-m>!%&3tu=jdq6Dv@T|6xD%I< zglDPSaY7oW)b0Fx52pQBB_48TwS+OojqB3UP#_ASM)B99iYP) z*vHWolOdO6PsH2Unatd^-Zzj1?$S+B*$jbt0nw}aH&uq_kS4V21B=yCV-~KYVot-2 zA>TVptuW+YmSpJe1ZM$vaUMmlN&z!^f$;@J>ltqA70{>DR3hg6(O0`>wKofpVt}t- zn;NihaZO~jlfjPbS=$MFx+u(_=Z^AJ;@SxbDL1mXI~6AP-4K8#@RzT2r*(9#ciadi zu;u}{=gzR43$$1&6h5gVS)r1W8g@r8wV!M)#lgtUCl!e&HB5q zt(^8fgNWGHsmPM=_8UyL=|Vb?rJN+CU>Du@H){7R3DW`ilVU!vhZ)}x4Mzt?L@tg^ zKF<1HeL$zj#-KFM7&dHpH>hUfv#c6*CV8y)t>wHLxRR~Kt>HMvf8V{*Gw1fwp5Zi} z(G^@MlM!&MYEu*xTwuT`3JrQ}eEB)ijiysgV4LSA`HZTfyJoEVx*ZEbo%Hv&9%=ja zy-bUL=m*cgX^=!Grkfa2Y+2B{3%0$T4fPqV)ylyg!}ebC;Z~U8)mfHw{?MKA?dRCy zTuwQP$VYS$$S{mlt7XQU@hk+7Aq<~!XP^civ+l4G3gLJadmCa6nh#+7_$`U4YhQ;! z?UNwdu2iyGA9(9#$xZs_qpW!9qJpvklLE)+pQ^Is4cG~pA2i6ISGEDew~u07HiIvl z*V#HU$fLXx{~Uckg+A%mFyW{HRk?RaeUbp2qExTJW=c8mS9AWmHRiGvh^s7dQj|ej zOKMd->9ws}VM?$p3v!nK+196Pu{iFaNI*}5SxZr2YG}X=?EaBiq+Y#