14.06.2023

This commit is contained in:
Plotnikov
2023-06-14 18:08:32 +03:00
parent b0a0566f19
commit bdf6eab9ec
221 changed files with 203557 additions and 585 deletions

View File

@@ -0,0 +1,59 @@
<!DOCTYPE HTML>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<html xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<title></title>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Cache-Control" content="no-cache, no-store, max-age=0, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="Fri, 01 Jan 1990 00:00:00 GMT" />
<link href="app/images/favicon.ico" type="image/x-icon" rel="shortcut icon" />
<link rel="stylesheet" href="app/bower_components/normalize.css/normalize.css" />
<link rel="stylesheet" href="app/bower_components/normalize.css/jquery-ui.min.css" />
<link rel="stylesheet" href="app/bower_components/Select2/css/select2.css" />
<link rel="stylesheet" href="app/js/jPlayer-2.9.2/dist/skin/blue.monday/css/jplayer.blue.monday.css" />
<link rel="stylesheet" href="app/bower_components/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css" />
<link rel="stylesheet" href="app/css/animate.css" />
<link rel="stylesheet" href="app/css/fonts.css" />
<link rel="stylesheet" href="app/js/jquery-palette-color-picker-master/src/palette-color-picker.css" />
<link rel="stylesheet" href="app/js/Number-Input-Spinner-jQuery-Nice-Number/dist/jquery.nice-number.css" />
<link rel="stylesheet" href="app/css/imagePlayer.css" />
<link rel="stylesheet" href="app/css/styles.css" />
<link rel="stylesheet" href="app/jquery-ui/jquery-ui.min.css" />
<script type="text/javascript" src="app/APIWrapper.js"></script>
<script type="text/javascript" src="app/Functions.js"></script>
<link rel="stylesheet" href="app/dinamika/viewimg.css">
<link rel="stylesheet" href="app/dinamika/dinamika.css" />
<script type="text/javascript" src="app/dinamika/dinamika.js"></script>
</head>
<body bgcolor="#FFFFFF" class="bodyText" onload="loadPage();setStartTime();onLoadFunction();">
<div class="main">
</div>
<script src="app/bower_components/jquery/dist/jquery.min.js"></script>
<script src="app/js/jquery-ui.min.js"></script>
<script src="app/js/jquery.scroolly.min.js"></script>
<script src="app/jquery-ui/jquery-ui.min.js" />
<script src="app/bower_components/jQuery.dotdotdot/src/jquery.dotdotdot.min.js"></script>
<script src="app/bower_components/jquery-touchswipe/jquery.touchSwipe.min.js"></script>
<script src="app/bower_components/Select2/js/select2.full.min.js"></script>
<script src="app/bower_components/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js"></script>
<script src="app/js/tinymce/tinymce.min.js"></script>
<script src="app/js/customUploader/common.js"></script>
<script src="app/js/cookies.js"></script>
<script src="app/js/b4w.whitespace.min.js"></script>
<script src="app/js/b4webplayer.js"></script>
<script type="text/javascript" src="app/js/jquery-palette-color-picker-master/src/palette-color-picker.js"></script>
<script type="text/javascript" src="app/js/Number-Input-Spinner-jQuery-Nice-Number/dist/jquery.nice-number.min.js"></script>
<script src="app/js/jPlayer-2.9.2/dist/jplayer/jquery.jplayer.min.js"></script>
<script src="app/js/jPlayer-2.9.2/dist/add-on/jplayer.playlist.min.js"></script>
<script src="app/js/imagePlayer.js"></script>
<script src="app/js/scripts.js"></script>
<script src="app/js/snap.svg-min.js"></script>
<script src="app/common.js"></script>
<script src="app/dinamika/viewimg.js"></script><script> var viewer = new ViewBigimg(); </script>
</body>
</html>

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE dmodule>
<dmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:noNamespaceSchemaLocation="http://www.s1000d.org/S1000D_4-1-A/xml_schema_flat/crew.xsd">
<identAndStatusSection>
<dmAddress>
<dmIdent>
<dmCode assyCode="" disassyCode="" disassyCodeVariant="" infoCode="" infoCodeVariant="" itemLocationCode="" learnCode="" learnEventCode="" modelIdentCode="" subSubSystemCode="" subSystemCode="" systemCode="" systemDiffCode=""/>
<language countryIsoCode="" languageIsoCode=""/>
<issueInfo inWork="" issueNumber=""/>
</dmIdent>
<dmAddressItems>
<issueDate day="" month="" year=""/>
<dmTitle>
<techName></techName>
<infoName></infoName>
</dmTitle>
</dmAddressItems>
</dmAddress>
<dmStatus>
<security securityClassification="01"/>
<logo>
<symbol infoEntityIdent=""/>
</logo>
<responsiblePartnerCompany enterpriseCode="">
<enterpriseName></enterpriseName>
</responsiblePartnerCompany>
<originator enterpriseCode="">
<enterpriseName></enterpriseName>
</originator>
<applic>
<displayText><simplePara>Ми-38</simplePara></displayText>
<assert applicPropertyType="prodattr" applicPropertyIdent="model" applicPropertyValues="MI-38"/>
</applic>
<qualityAssurance>
<firstVerification verificationType="tabtop"/>
</qualityAssurance>
</dmStatus>
</identAndStatusSection>
<content>
<crew>
<descrCrew>
</descrCrew>
</crew>
</content>
</dmodule>

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE dmodule>
<dmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:noNamespaceSchemaLocation="http://www.s1000d.org/S1000D_4-1-A/xml_schema_flat/descript.xsd">
<identAndStatusSection>
<dmAddress>
<dmIdent>
<dmCode assyCode="" disassyCode="" disassyCodeVariant="" infoCode="" infoCodeVariant="" itemLocationCode="" learnCode="" learnEventCode="" modelIdentCode="" subSubSystemCode="" subSystemCode="" systemCode="" systemDiffCode=""/>
<language countryIsoCode="" languageIsoCode=""/>
<issueInfo inWork="" issueNumber=""/>
</dmIdent>
<dmAddressItems>
<issueDate day="" month="" year=""/>
<dmTitle>
<techName></techName>
<infoName></infoName>
</dmTitle>
</dmAddressItems>
</dmAddress>
<dmStatus>
<security securityClassification="01"/>
<logo>
<symbol infoEntityIdent=""/>
</logo>
<responsiblePartnerCompany enterpriseCode="">
<enterpriseName></enterpriseName>
</responsiblePartnerCompany>
<originator enterpriseCode="">
<enterpriseName></enterpriseName>
</originator>
<applic>
<displayText><simplePara>Ми-38</simplePara></displayText>
<assert applicPropertyType="prodattr" applicPropertyIdent="model" applicPropertyValues="MI-38"/>
</applic>
<qualityAssurance>
<firstVerification verificationType="tabtop"/>
</qualityAssurance>
</dmStatus>
</identAndStatusSection>
<content>
<description>
</description>
</content>
</dmodule>

View File

@@ -0,0 +1,19 @@
<dml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:noNamespaceSchemaLocation="http://www.s1000d.org/S1000D_4-1/xml_schema_flat/dml.xsd">
<identAndStatusSection>
<dmlAddress>
<dmlIdent>
<dmlCode modelIdentCode="" senderIdent="" dmlType="c" yearOfDataIssue="" seqNumber="00001"/>
<issueInfo issueNumber="001" inWork="00"/>
</dmlIdent>
<dmlAddressItems>
<issueDate year="" month="" day=""/>
</dmlAddressItems>
</dmlAddress>
<dmlStatus issueType="new">
<security securityClassification="01" commercialClassification="" caveat=""/>
</dmlStatus>
</identAndStatusSection>
<dmlContent>
</dmlContent>
</dml>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<edi version="1.0" xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1 imscp_v1p1.xsd http://www.adlnet.org/xsd/adlcp_v1p3 adlcp_v1p3.xsd http://www.adlnet.org/xsd/adlseq_v1p3 adlseq_v1p3.xsd http://www.adlnet.org/xsd/adlnav_v1p3 adlnav_v1p3.xsd http://www.imsglobal.org/xsd/imsss imsss_v1p0.xsd" identifier="" xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2" xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_v1p3" xmlns:adlseq="http://www.adlnet.org/xsd/adlseq_v1p3" xmlns:adlnav="http://www.adlnet.org/xsd/adlnav_v1p3" xmlns:imsss="http://www.imsglobal.org/xsd/imsss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<info title="" type="" id="" pubdate="" />
<contents scorm="" s1000d="" db="" />
<users>
</users>
</edi>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest version="1.3" xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1 imscp_v1p1.xsd http://www.adlnet.org/xsd/adlcp_v1p3 adlcp_v1p3.xsd http://www.adlnet.org/xsd/adlseq_v1p3 adlseq_v1p3.xsd http://www.adlnet.org/xsd/adlnav_v1p3 adlnav_v1p3.xsd http://www.imsglobal.org/xsd/imsss imsss_v1p0.xsd" identifier="" xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2" xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_v1p3" xmlns:adlseq="http://www.adlnet.org/xsd/adlseq_v1p3" xmlns:adlnav="http://www.adlnet.org/xsd/adlnav_v1p3" xmlns:imsss="http://www.imsglobal.org/xsd/imsss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<metadata>
<schema>ADL SCORM</schema>
<schemaversion>2004 3rd Edition</schemaversion>
</metadata>
<organizations default="default">
<organization structure="hierarchical" identifier="default">
</organization>
</organizations>
<resources>
<resource identifier="SharedFiles" adlcp:scormType="asset" type="webcontent">
<file href="app/dinamika/dinamika.css" />
<file href="app/dinamika/dinamika.js" />
<file href="app/dinamika/viewimg.css" />
<file href="app/dinamika/viewimg.js" />
<file href="app/dinamika/viewimg.png" />
</resource>
</resources>
</manifest>

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href="app/s1000d_4html.xslt" type="text/xsl"?>
<!DOCTYPE dmodule>
<dmodule xsi:noNamespaceSchemaLocation="http://www.s1000d.org/S1000D_4-1/xml_schema_flat/learning.xsd" xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<identAndStatusSection>
<dmAddress>
<dmIdent>
<dmCode assyCode="" disassyCode="" disassyCodeVariant="" infoCode="" infoCodeVariant="" itemLocationCode="" learnCode="" learnEventCode="" modelIdentCode="" subSubSystemCode="" subSystemCode="" systemCode="" systemDiffCode=""/>
<language countryIsoCode="" languageIsoCode=""/>
<issueInfo inWork="" issueNumber=""/>
</dmIdent>
<dmAddressItems>
<issueDate day="" month="" year=""/>
<dmTitle>
<techName></techName>
<infoName></infoName>
</dmTitle>
</dmAddressItems>
</dmAddress>
<dmStatus>
<security securityClassification="01"/>
<logo>
<symbol infoEntityIdent=""/>
</logo>
<responsiblePartnerCompany enterpriseCode="">
<enterpriseName></enterpriseName>
</responsiblePartnerCompany>
<originator enterpriseCode="">
<enterpriseName></enterpriseName>
</originator>
<applic>
<displayText><simplePara>Ми-38</simplePara></displayText>
<assert applicPropertyType="prodattr" applicPropertyIdent="model" applicPropertyValues="MI-38"/>
</applic>
<qualityAssurance>
<firstVerification verificationType="tabtop"/>
</qualityAssurance>
</dmStatus>
</identAndStatusSection>
<content>
<learning>
<learningAssessment>
</learningAssessment>
</learning>
</content>
</dmodule>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages version="1.3" xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1 imscp_v1p1.xsd http://www.adlnet.org/xsd/adlcp_v1p3 adlcp_v1p3.xsd http://www.adlnet.org/xsd/adlseq_v1p3 adlseq_v1p3.xsd http://www.adlnet.org/xsd/adlnav_v1p3 adlnav_v1p3.xsd http://www.imsglobal.org/xsd/imsss imsss_v1p0.xsd" identifier="" xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2" xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_v1p3" xmlns:adlseq="http://www.adlnet.org/xsd/adlseq_v1p3" xmlns:adlnav="http://www.adlnet.org/xsd/adlnav_v1p3" xmlns:imsss="http://www.imsglobal.org/xsd/imsss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<packlist>
</packlist>
<contents>
</contents>
</packages>

View File

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="../xsl/pm_style.xsl" type="text/xsl" ?>
<pm xsi:noNamespaceSchemaLocation="http://www.s1000d.org/S1000D_4-1/xml_schema_flat/pm.xsd" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://www.purl.org/dc/elements/1.1/">
<identAndStatusSection>
<pmAddress>
<pmIdent>
<pmCode pmVolume="" pmIssuer="" modelIdentCode="" pmNumber=""/>
<language languageIsoCode="" countryIsoCode=""/>
<issueInfo inWork="" issueNumber=""/>
</pmIdent>
<pmAddressItems>
<issueDate year="" day="" month=""/>
<pmTitle></pmTitle>
</pmAddressItems>
</pmAddress>
<pmStatus issueType="new">
<security securityClassification="01"/>
<dataRestrictions>
<restrictionInstructions>
<dataDistribution></dataDistribution>
<exportControl>
<exportRegistrationStmt>
</exportRegistrationStmt>
</exportControl>
<dataHandling></dataHandling>
<dataDestruction></dataDestruction>
<dataDisclosure></dataDisclosure>
</restrictionInstructions>
<restrictionInfo>
<copyright>
<copyrightPara>
</copyrightPara>
</copyright>
<policyStatement></policyStatement>
<dataConds></dataConds>
</restrictionInfo>
</dataRestrictions>
<responsiblePartnerCompany enterpriseCode="">
<enterpriseName></enterpriseName>
</responsiblePartnerCompany>
<originator enterpriseCode="">
<enterpriseName></enterpriseName>
</originator>
<applic>
<displayText>
</displayText>
</applic>
<brexDmRef>
</brexDmRef>
<qualityAssurance>
<firstVerification verificationType="tabtop"/>
</qualityAssurance>
</pmStatus>
</identAndStatusSection>
<content>
<pmEntry>
<pmEntryTitle></pmEntryTitle>
</pmEntry>
</content>
</pm>

View File

@@ -0,0 +1,31 @@
<!DOCTYPE HTML>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<html xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<meta charset="utf-8" />
<script>
function objectHTMLLoaded() {
var iframe = document.getElementById('contentIFrame');
iframe.style.height = (parseInt(window.sessionStorage.getItem('contentsHeight'),10)+50)+'px';
}
function updateDocHeight() { objectHTMLLoaded(); }
function setContent(fileName) {
c = document.getElementById("content");
c.innerHTML = "<object id='contentIFrame' data='"+fileName+"' type='text/html' width='100%' height='100%' style='margin: 0 auto;' frameBorder='0' style='text-indent: 0px;'></object>";
window.scrollTo({ top: 0, behavior: 'smooth' });
}
</script>
<style> html, body { height:100%; margin:0px; padding:0px; scroll-behavior: smooth !important;}</style>
</head>
<body bgcolor="#FFFFFF">
<table width="100%" height="100%" cellspacing="5px" >
<tr height="100%">
<td width="300" style="vertical-align: text-top; border-right: 1px solid gray; font-family: Helvetica, Arial, sans-serif; color: rgba(124, 37, 41, 1);">
<table id="tocTable">
</table>
</td>
<td><div id="content" style="vertical-align: text-top; width:100%; height:100%;"></div></td>
</tr>
</table>
</body>
</html>

View File

@@ -0,0 +1,102 @@
<!DOCTYPE HTML>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<html xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="app/dinamika/singlescorm.css">
<script>
var curChapter=-1;
function objectHTMLLoaded() {
var iframe = document.getElementById('view-obj');
iframe.style.height = (parseInt(window.sessionStorage.getItem('contentsHeight'),10)+50)+'px';
var viewdoc = document.getElementById('view-doc');
viewdoc.style.height = iframe.style.height;
if(sessionStorage.getItem('scrollY') != "undefined")
window.scrollTo({ top: sessionStorage.getItem('scrollY'), behavior: 'auto' });
}
function updateDocHeight() { objectHTMLLoaded(); }
function setContent(fileName, idNum) {
document.getElementById('view-obj').setAttribute('data', fileName);
window.scrollTo({ top: 0, behavior: 'smooth' });
setArrowInCurChapter(curChapter, idNum);
curChapter = idNum;
}
function onLoad() {
let category_code = "";
if (opener) {
var navbar = opener.window.document.getElementById('page-navbar');
if(navbar) {
var liList = navbar.getElementsByTagName('li');
if(liList) {
var li = liList[liList.length-1];
if(li) category_code = li.innerText.split('_').slice(-1)[0];
}
}
}
setCategory(category_code, "");
if(category_code == "") document.getElementsByClassName('dropdown')[0].style.display = 'inline-block';
}
function onDropBtnClick() {
var cat = document.getElementsByClassName('dropdown-content')[0];
if(cat.style.display != 'block') {
cat.style.display = 'block'; document.getElementById("arrowChar").innerHTML = "&#9650;";
} else {
cat.style.display = 'none'; document.getElementById("arrowChar").innerHTML = "&#9660;";
}
}
function setCategory(code, name) {
if(code == '') name = "Все категории";
document.getElementById('dropText').innerHTML = name;
var tab = document.getElementById('tocTree');
var liList = tab.getElementsByTagName('*');
for (var i = 0; i < liList.length; i++) {
if(!liList[i].hasAttribute("roles")) continue;
roles = liList[i].getAttribute("roles").split(',');
if(code == "") { liList[i].style.display = 'block'; continue; };
if(roles.includes(code))
liList[i].style.display = 'block';
else
liList[i].style.display = 'none';
}
}
function setArrowInCurChapter(_curCh, _newCh) {
var bStr = '<b style="margin-left: -1.3em;">';
var arrStr = "&#10148;&#32;<u>";
if(_curCh != -1) {
if(typeof document.getElementById('tocItemTitle'+_curCh) !== "undefined") {
var t = document.getElementById('tocItemTitle'+_curCh).innerHTML;
if(t.substring(0, bStr.length) == bStr)
document.getElementById('tocItemTitle'+_curCh).innerHTML = t.substring(bStr.length+5, t.length-8);
}
}
var newTitle = bStr+arrStr+document.getElementById('tocItemTitle'+_newCh).innerHTML+"</b></u>";
document.getElementById('tocItemTitle'+_newCh).innerHTML = newTitle;
}
</script>
</head>
<body bgcolor="#FFFFFF" onload="onLoad();">
<div id="view-toc" class="view-toc" >
<div id="view-toc-container" class="view-toc-container">
<div class="dropdown">
<button class="dropbtn" onclick="onDropBtnClick();"><span id="arrowChar">&#9660;</span> <span id="dropText">Все категории</span></button>
<div class="dropdown-content">
</div>
</div>
<ul class="tree" id="tocTree" style="padding-inline-start: 0px;margin-block-start: 0; margin-block-end: 0;">
</ul>
</div>
</div>
<div id="view-doc" class="view-doc">
<object id="view-obj" data=""
type="text/html" style="width:100%;">
Ошибка загрузки содержимого.
</object>
</div>
<div id="btnToTop" class="btnToTop" onclick="window.scrollTo({ top: 0, behavior: 'smooth' });" style="display: box;">
<i></i>
</div>
</body>
</html>

Binary file not shown.

View File

@@ -0,0 +1,563 @@
Выписка из модуля данных BREX (содержит требования холдинга ВЕРТОЛЕТЫ РОССИИ к разработке АУК специального применения).
Перечень информационных кодов (information code):
000 - Function, data for plans and description
001 - Title page
003 - Change record or highlights See also code 00T and code 00U
004 - Access illustration
005 - List of abbreviations
006 - List of terms
007 - List of symbols
008 - Technical standard record
009 - table of contents
010 - General data
011 - Function
012 - General warnings and cautions and related safety data
013 - Numeric index
014 - Alphabetic and alphanumeric index
015 - List of special materials
016 - List of dangerous materials
017 - List of related data - refer to code 00V
018 - Introduction
019 - Supplier list
020 - Configuration
021 - Copyright
022 - Business rules
023 - Administrative forms and data
028 - General Refer to codes 010 and 018
029 - Data structure
030 - Technical data
031 - Electrical standard parts data
033 - Technical data (functional breakdown)
034 - Technical data (physical breakdown)
040 - Description
041 - Description of how it is made
042 - Description of function
043 - Description of function attributed to crew (functional breakdown)
044 - Description of function (physical breakdown)
045 - Designated use
046 - Dependence on peripheral systems/equipment
050 - Diagram/List
051 - Wiring diagram
052 - Routing diagram
053 - Connection list
054 - Schematic diagram
055 - Location diagram
056 - Equipment list
057 - Wire list
058 - Harness list
059 - Maintenance envelope diagram
060 - Product support equipment, tools and software
061 - Special support equipment and tools
062 - Standard support equipment and tools
063 - Government supplied support equipment and tools
064 - Locally made support equipment and tools
065 - Software
066 - Support equipment and tools data
067 - Decals and instruction plates
070 - Consumables, materials and expendables Supplies =consumables, materials and expendables
071 - Consumables
072 - Materials
073 - Expendables
074 - Data sheet for dangerous consumables and materials
075 - Parts list
076 - Fluid
077 - Data sheet for consumables and materials
078 - Fasteners
080 - Mixture and solution
081 - Chemical solution
082 - Chemical mixture
090 - Software documentation
096 - Safety items and parts
00A - List of illustrations - normally used in front matter data modules
00B - List of support equipment - ormally used in front matter data modules
00C - List of supplies - normally used in front matter data modules
00D - List of spares - normally used in front matter data modules
00E - Functional item numbers common information repository
00F - Circuit breakers common information repository
00G - Parts common information repository
00H - Zones common information repository
00J - Access panels and doors common information repository
00K - Organizations common information repository
00L - Supplies - List of products common information repository
00M - Supplies - List of requirements common information repository
00N - Support equipment common information repository
00P - Product Cross-reference table (PCT)
00Q - Conditions Cross-reference table (CCT)
00T - Change record - refer to code 003
00U - Highlights - refer to code 003
00V - List of applicable specifications and documentation - refer to code 017
00W - Applicability Cross-reference table (ACT)
00X - Controls and indicators common information repository
00Y - List of charts and forms
00Z - List of tables
0A1 - Functional and/or physical areas common information repository
0A2 - Applicability repository
0A3 - Applicability Cross-reference table catalog
0B0 - Maintenance planning information
0B1 - Time limits
0B2 - System maintenance/Inspection tasks list
0B3 - Structure maintenance/inspection tasks lists
0B4 - Zonal maintenance/inspection tasks list
0B5 - Unscheduled check
100 - Operation
101 - List of consumables associated with operation
102 - List of materials associated with operation
103 - List of expendables associated with operation
104 - List of special support equipment and tools associated with operation
105 - List of support equipment and tools associated with operation
106 - List of software associated with operation
107 - Parts list associated with operation
110 - Controls and indicators
111 - Controls and indicators This code is used for crew
112 - Modes of operation This code is used for crew
115 - Displays and alerts
120 - Pre-operation
121 - Pre-operation procedure This code is used for crew
122 - Siting
123 - Shelter
125 - Pre-operation procedures checklist - this code is used for crew
126 - Conditions of readiness
127 - Establish operating position
130 - Normal operation
131 - Normal operation procedure This code is used for crew
132 - Start-up procedure for maintenance
133 - Shutdown procedure for maintenance
134 - Aviation checklist
135 - Normal operation procedures checklist This code is used for crew
136 - Ground running check
138 - Ground running and performance adjustment
139 - Nuclear, biological and chemical procedures
140 - Emergency procedure
141 - Emergency operation procedure This code is used for crew
142 - Operation under unusual conditions
143 - Radio interference suppression
144 - Jamming and electronic countermeasures (ECM)
145 - Emergency operation procedures checklist This code is used for crew
146 - Emergency shutdown operation procedure (Checklist)
150 - Post-operation
151 - Post-operation procedure This code is used for crew
155 - Post-operation procedures checklist This code is used for crew
157 - Establish maintenance position
160 - Loading/Unloading procedure
161 - Special operation
162 - Non-tactical operation
169 - Mass and Balance
170 - Handling
171 - Lifting
172 - Jacking
173 - Shoring
174 - Towing
175 - Taxiing
176 - Lowering
177 - Stabilizing
178 - Tethering
179 - Debogging
180 - Dispatch deviation
181 - Deactivate for dispatch deviation
200 - Servicing
201 - List of consumables associated with servicing
202 - List of materials associated with servicing
203 - List of expendables associated with servicing
204 - List of special support equipment and tools associated with servicing
205 - List of support equipment and tools associated with servicing
206 - List of software associated with servicing
207 - Parts list associated with servicing
210 - Fill
211 - Refuel
212 - Fill with oil
213 - Fill with oxygen
214 - Fill with nitrogen
215 - Fill with air
216 - Fill with water
217 - Fill with hydrogen
218 - Fill with other liquid
219 - Fill with other gas
220 - Drain liquid and release pressure
221 - Defuel and drain fuel
222 - Drain oil
223 - Release oxygen pressure
224 - Release nitrogen pressure
225 - Release air pressure
226 - Drain water
227 - Release hydrogen pressure
228 - Drain other liquid
229 - Release other gas pressure
230 - Bleed and prime
231 - Bleed
232 - Prime
233 - Dry
234 - Facility requirements associated with servicing
236 - Fill with inert gas/inert liquid
237 - Evacuate
240 - Lubrication
241 - Oil
242 - Grease
243 - Dry film
250 - Clean and apply surface protection
251 - Clean with chemical agent
252 - Clean by abrasive blast
253 - Clean by ultrasonics
254 - Clean mechanically
255 - Purge
256 - Polish and apply wax
257 - Paint and apply marking
258 - Other procedure to clean
259 - Other procedure to protect surfaces
260 - Remove and prevent ice and remove contamination
261 - Remove ice
262 - Prevent ice
263 - Use disinfectant/Sanitize
264 - Remove contamination
270 - Adjust, align and calibrate
271 - Adjust
272 - Align
273 - Calibrate
274 - Harmonize
275 - Grooming
276 - Rig
277 - Compensate
278 - Easily and quickly adjust after a battle damage repair
279 - Easily and quickly align after a battle damage repair
280 - Inspection
281 - Scheduled inspection
282 - Unscheduled inspection
283 - Special regular inspection
284 - Special irregular inspection
285 - Structure inspections for allowable damage limits
286 - Structure inspections for repair
288 - Overhaul and retirement schedule
289 - Check for filling quantity
290 - Change of liquid/gas
292 - Change of oil Code 222 + code 212
293 - Change of oxygen Code 223 + code 213
294 - Change of nitrogen Code 224 + code 214
295 - Change of air Code 225 + code 215
296 - Change of water Code 226 + code 216
297 - Change of hydrogen
298 - Change of other liquid Code 228 + code 218
299 - Change of other gas Code 229 + code 219
300 - Examinations, tests and checks
301 - List of consumables associated with examinations, tests and checks
302 - List of materials associated with examinations, tests and checks
303 - List of expendables associated with examinations, tests and checks
304 - List of special support equipment and tools associated with examinations, tests and checks
305 - List of support equipment and tools associated with examinations, tests and checks
306 - List of software associated with examinations, tests and checks
307 - Parts list associated with examinations, tests and checks
310 - Visual examination
311 - Visual examination without special equipment
312 - Examination with a borescope
315 - QA requirements
320 - Operation test
321 - Unit Break-in
322 - Test and inspection
330 - Test preparation
331 - Connection of test equipment
332 - Removal of test equipment
333 - Installation of the unit before the test
334 - Removal of the unit after the test
335 - Concluding Final measures
340 - Function test
341 - Manual test
342 - Automatic test
343 - BIT
344 - Compatibility test
345 - System test
346 - Other check
347 - Start-up procedure for test
348 - Finial acceptance test (FAT)
349 - Test results
350 - Structure test
351 - Test for surface cracks with dye penetrant
352 - Test for surface cracks with magnetic particles
353 - Test for cracks and other defects with eddy current
354 - Test for cracks and other defects with X-rays
355 - Test for cracks and other defects with ultrasonic
356 - Hardness test
357 - Gamma ray
358 - Resonance frequency
359 - Thermographic test
360 - Design data/tolerances check
361 - Dimensions check
362 - Pressure check
363 - Flow check
364 - Leak check
365 - Continuity check
366 - Resistance check
367 - Electrical power check
368 - Signal strength check
369 - Other check
370 - Monitor the condition
371 - Oil analysis
372 - Vibration analysis
373 - Tracking check
374 - Fuel analysis
375 - Shooting accidental discharge analysis
376 - Check post application of adhesive
377 - Contamination analysis
390 - Sample test
396 - Flight control surface movement
397 - Landing gear movement
398 - Product configuration
400 - Fault reports and isolation procedures
401 - List of consumables associated with fault diagnosis
402 - List of materials associated with fault diagnosis
403 - List of expendables associated with fault diagnosis
404 - List of special support equipment and tools associated with fault diagnosis
405 - List of support equipment and tools associated with fault diagnosis
406 - List of software associated with fault diagnosis
407 - Parts list associated with fault diagnosis
410 - General fault description
411 - Isolated fault
412 - Detected fault
413 - Observed fault
414 - Correlated fault
415 - Impact of fault
420 - General fault isolation procedure
421 - Fault isolation procedure
429 - Diagnostics
430 - Fault isolation task supporting data
440 - Index
441 - Fault code index
442 - Maintenance message index
443 - Post-troubleshooting shutdown procedures
500 - Disconnect, remove and disassemble procedures
501 - List of consumables associated with removal
502 - List of materials associated with removal
503 - List of expendables associated with removal
504 - List of special support equipment and tools associated with removal
505 - List of support equipment and tools associated with removal
506 - List of software associated with removal
507 - Parts list associated with removal
510 - Disconnect procedure
520 - Remove procedure
521 - Return to basic configuration Undressing
522 - Remove support equipment/Remove from support equipment
523 - Preparation before removal
524 - Follow-on maintenance
525 - Ammunition unloading
526 - Deactivate launching device
530 - Disassemble procedure
531 - Disassemble procedure on operation site
540 - Open for access procedure
550 - Unload software procedure
551 - Fault monitoring storage readout (downloading)
552 - Data erasing
553 - Display, copy and print of data
560 - Deactivation procedure
561 - De-Energize electrical network
562 - Depressurize hydraulics
563 - Deactivation maintenance practice
600 - Repairs and locally make procedures and data
601 - List of consumables associated with repairs
602 - List of materials associated with repairs
603 - List of expendables associated with repairs
604 - List of special support equipment and tools associated with repairs
605 - List of support equipment and tools associated with repairs
606 - List of software associated with repairs
607 - Parts list associated with repairs
610 - Add material
611 - Insulation
612 - Metalize
613 - Pot
614 - Remetal
615 - Retread
620 - Attach material
621 - Bond
622 - Crimp
623 - Braze
624 - Rivet
625 - Solder
626 - Splice
627 - Weld
630 - Change the mechanical strength/structure of material
631 - Anneal
632 - Case harden
633 - Cure
634 - Normalize
635 - Shot-peen
636 - Temper
638 - Other treatment
639 - Other process to change the mechanical strength/structure of material
640 - Change the surface finish of material
641 - Anodize
642 - Buff
643 - Burnish
644 - Chromate
645 - Hone
646 - Lap
647 - Plate
648 - Polish
649 - Clean-up of dents, cracks and scratches
650 - Remove material
651 - Abrasive blast
652 - Bore/drill/ream
653 - Electrical/electrochemical/chemical etch
654 - Broach
655 - Grind
656 - Mill
657 - Thread/tap
658 - Turn
659 - Other process to remove material
660 - Structure repair procedure and data
661 - Allowable damage
662 - Temporary repair procedure
663 - Standard repair procedure
664 - Special repair procedure
665 - Fly-in repair procedure
666 - Material classification
667 - Structure classification
668 - Allowable damage of composite structures
669 - Allowable damage of mixed structures
670 - Locally make procedure and data
671 - Making of parts
680 - Battle damage repair procedure and data
681 - Damage repair symbol marking
682 - Identification of damaged hardware
683 - Damage assessment
684 - Utilization degradation
685 - Repair procedure
686 - Isolation procedure
687 - Function test after battle damage repair
688 - Battle damage repair kit
689 - Damage repair
690 - Miscellaneous
691 - Marking
692 - Connector repair
693 - Varnish
700 - Assemble, install and connect procedures
701 - List of consumables associated with installation
702 - List of materials associated with installation
703 - List of expendables associated with installation
704 - List of special support equipment and tools associated with installation
705 - List of support equipment and tools associated with installation
706 - List of software associated with installation
707 - Parts list associated with installation
710 - Assemble procedure
711 - Tighten procedure
712 - Lock procedure
713 - Pack procedure
714 - Assemble procedure on operation site
720 - Install procedure
721 - Build up to usable configuration Dressing
722 - Install support equipment/Install on support equipment
723 - Preparation before installation
724 - Follow-on maintenance
725 - Ammunition loading
726 - Activate launching device
727 - Site location plan
728 - Foundation preparation
730 - Connect procedure
740 - Close after access procedure
750 - Load software procedure
752 - Data loading
760 - Reactivation procedure
761 - Energize electrical network
762 - Pressurize hydraulics
800 - Package, handling, storage, and transportation
801 - List of consumables associated with storage
802 - List of materials associated with storage
803 - List of expendables associated with storage
804 - List of special support equipment and tools associated with storage
805 - List of support equipment and tools associated with storage
806 - List of software associated with storage
807 - Parts list associated with storage
810 - Preservation procedure
811 - Preparation for vehicle transportation
812 - Shipping and storage - General
820 - Procedure to remove preservation material
830 - Procedure to put item in containers
831 - Vehicle loading
832 - Procedure to pack items
840 - Procedure to remove item from containers
841 - Vehicle unloading
842 - Procedure to unpack items
850 - Procedure to keep item serviceable when in storage
860 - Procedure to move item when in storage
870 - Procedure to prepare item for use after storage
871 - Set on condition
880 - Procedure when item got out of storage
890 - Life data of item when in storage
900 - Miscellaneous
901 - Miscellaneous list of consumables
902 - Miscellaneous list of materials
903 - Miscellaneous list of expendables
904 - Miscellaneous list of special support equipment and tools
905 - Miscellaneous list of support equipment and tools
906 - Miscellaneous list of software
907 - Miscellaneous parts list
910 - Miscellaneous
911 - Illustration
912 - Handling procedure
913 - General maintenance procedure
914 - Container data module
915 - Facilities
916 - Maintenance allocation
917 - Non-S1000D publication
920 - Change = Remove and install
921 - Change = Remove and install a new item
922 - Change = Remove and install the removed item
923 - Change = Disconnect and connect an item
930 - Service bulletin
933 - Accomplishment procedure - Task set
934 - Material information
940 - Provisioning data
941 - Illustrated parts data
942 - Numerical index
950 - Composite information
951 - Generic process
952 - Generic learning content
961 - Calculation worksheets
970 - Approved vendor processes
980 - Environmental protection, fire-fighting and rescue
981 - Air cleaning
982 - Sewage treatment
989 - Fire-fighting and rescue
990 - Neutralization and disposal
991 - Neutralization of ordnance
992 - Neutralization of substance
996 - Disposal of ordnance
997 - Disposal of product
998 - Disposal of substance
C00 - Computer systems, software and data
C01 - Miscellaneous list of consumables associated with computer systems, software and data
C02 - Miscellaneous list of materials associated with computer systems, software and data
C03 - Miscellaneous list of expendables associated with computer systems, software and data
C04 - Miscellaneous list of special support equipment and tools associated with computer systems, software and data
C05 - Miscellaneous list of support equipment and tools associated with computer systems, software and data
C06 - Miscellaneous list of software associated with computer systems, software and data
C07 - Miscellaneous parts list associated with computer systems, software and data
C13 - Notes
C14 - Problem handling
C15 - Summary of content
C20 - System administration
C21 - System monitoring
C22 - Description of command
C23 - Connect hardware
C25 - System recovery
C26 - Backup and restore
C27 - Reboot
C30 - Coordinate
C31 - Defragmentation
C32 - Input/Output media
C33 - Disk mirroring
C34 - Clear interference
C35 - Time check
C36 - Compatibility check
C50 - Manage data
C51 - Move data
C52 - Manipulate/Use data
C53 - Description of data storage
C60 - Programming information
C61 - Program flow chart
C62 - Processing reference guide
C70 - Security and privacy
C72 - Security information
C73 - Security procedures
C74 - List of security/classification codes
C75 - Access control
C90 - Miscellaneous
C91 - Quality assurance
C92 - Vendor information
C95 - Naming conventions
C96 - Technical requirements

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.9 MiB

View File

@@ -0,0 +1,11 @@
1 - стойка
2 - стрела
3 - крюк с вертлюгом
4 - гидроцилиндр силовой
5 - гидроцилиндр поворота
6 - image1.svg
7 - кронштейн
9 - болт крепления нижней опоры
10 - болт крепления верхней опоры (5 шт.)
11 - image2.svg
15 - колокол

View File

@@ -0,0 +1,635 @@
var totalCorrect = 0;
var count = 0;
var verboseCorrectAnswers = [];
var startTimeStamp = new Date();
var lable1;
var lable2;
var lable3;
var lable4;
var lable5;
var lable6;
var lable7;
var langcode;
try {
langcode = document.getElementsByClassName('language')[0].getAttribute('id');
}
catch (e){
}
switch (langcode) {
case 'en' :
lable1 = ' Testing completed. Your result ';
lable2 = ' correct answers from ';
lable3 = 'Question Number';
lable4 = 'Question text';
lable5 = 'Correct answer';
lable6 = 'The answer is incorrect.';
lable7 = 'The answer is correct.';
break;
case 'ru' :
lable1 = ' Тестирование завершено. Ваш результат ';
lable2 = ' правильных ответов из ';
lable3 = 'Номер вопроса';
lable4 = 'Текст вопроса';
lable5 = 'Правильность ответа';
lable6 = 'Ответ неверный.';
lable7 = 'Ответ верный.';
break;
case 'es' :
lable1 = ' Test completado. Su resultado ';
lable2 = ' respuestas correctas de ';
lable3 = 'Número de la pregunta';
lable4 = 'Texto de la pregunta';
lable5 = 'Corrección de la respuesta';
lable6 = 'Respuesta incorrecta';
lable7 = 'Respuesta correcta';
break;
}
// For Hotspots
var selectedHotspot = null;
function toggle_visibility(id)
{
var e = document.getElementById(id);
if(e.style.display == 'block' | e.style == null)
{
e.style.display = 'none';
return false;
}
else
{
e.style.display = 'block';
return true;
}
}
function navToContent(url)
{
}
function activate_flash_hotspots(hs_id, hs_title, icn)
{
alert(icn + " \r\n" + hs_id + " \r\n" + hs_title);
}
function openWindow(theFileName) {
alert(theFileName);
}
function showNextQuestion()
{
var nextCount = count + 1;
document.getElementById('questionNumber' + count).style.display = 'none';
if (document.getElementById('questionNumber' + nextCount))
{
document.getElementById('questionNumber' + nextCount).style.display = 'block';
}
else
{
document.getElementById('grade').style.display = 'block';
console.log(verboseCorrectAnswers);
if (totalCorrect == 1)
{
document.getElementById('grade').innerHTML = lable1 + totalCorrect + lable2 + count + '.';
//verboseCorrectAnswers.join('/');
assessmentResult();
showResultTable(verboseCorrectAnswers);
}
else
{
document.getElementById('grade').innerHTML = lable1 + totalCorrect + lable2 + count + '.';
assessmentResult();
showResultTable(verboseCorrectAnswers);
}
}
}
function showResultTable (resultArray) {
var stringInnerTable = "";
var verboseIsCorrect = "";
stringInnerTable += '<table class="S1000DrandomList"><tr><th>'+lable3+'</th><th>'+lable4+'</th><th>'+lable5+'</th></tr>';
for (index = 0; index < resultArray.length; ++index) {
switch (resultArray[index][3]) {
case 0: verboseIsCorrect = '<span style="color: red">'+lable6+'</span>'; break;
case 1: verboseIsCorrect = '<span style="color: green">'+lable7+'</span>'; break;
}
stringInnerTable += '<tr>';
stringInnerTable += '<td>'+resultArray[index][0]+'</td>';
stringInnerTable += '<td>'+resultArray[index][1]+'</td>';
stringInnerTable += '<td>'+verboseIsCorrect+'</td>';
stringInnerTable += '</tr>';
}
stringInnerTable += '</table>';
document.getElementById('tableResult').innerHTML = stringInnerTable;
}
function assessmentResult () {
var ratio = totalCorrect/count;
if (ratio > 0.7) {
doSetValue("cmi.score.scaled", ratio);
doSetValue("cmi.success_status", "passed");}
else {
doSetValue("cmi.score.scaled", totalCorrect);
doSetValue("cmi.success_status", "failed" );
}
doSetValue("cmi.completion_status", "completed");
}
function learnResult () {
doSetValue("cmi.completion_status", "completed");
doSetValue("cmi.success_status", "passed");
}
window.onunload = function() {
var endTimeStamp = new Date();
var totalMilliseconds = (endTimeStamp.getTime() - startTimeStamp.getTime());
var scormTime = ConvertMilliSecondsIntoSCORM2004Time(totalMilliseconds);
doSetValue("cmi.session_time",scormTime);
doSetValue( "cmi.exit", "suspend" );
doTerminate();
}
function checkIfSingleTrue(radioObj, quizType)
{
var radioLength = radioObj.answerChoiceRadio.length;
var feedbackCorrect = document.getElementById('feedbackCorrect');
var feedbackIncorrect = document.getElementById('feedbackIncorrect');
var answer = null;
var isCorrect =0;
for(var i=0; i < radioLength; i++)
{
if(radioObj.answerChoiceRadio[i].checked)
{
answer = radioObj.answerChoiceRadio[i].value.split(", ");
}
}
// Show feedback if Knowledge Check or go to next question for Assessment
if (quizType == 'Knowledge Check')
{
// is answer correct?
if (answer)
{
if (answer[1])
{
feedbackCorrect.style.display = 'block';
feedbackIncorrect.style.display = 'none';
}
else
{
feedbackIncorrect.style.display = 'block';
feedbackCorrect.style.display = 'none';
}
}
else
{
feedbackCorrect.style.display = 'none';
feedbackIncorrect.style.display = 'none';
}
}
else
{
// Check if answer is correct
if (answer)
{
if (answer[1])
{
isCorrect = 1;
totalCorrect++;
}
}
count++;
var questionText = radioObj.getElementsByClassName("questionText")[0].innerHTML;
verboseCorrectAnswers.push([count,questionText,answer[1], isCorrect]);
showNextQuestion();
}
}
function checkIfMultipleTrue(checkObj, quizType)
{
var feedbackCorrect = document.getElementById('feedbackCorrect');
var feedbackIncorrect = document.getElementById('feedbackIncorrect');
var checkLength = checkObj.answerChoiceCheckbox.length;
var answer = null;
var correctAnswers = [];
var chosenAnswers = [];
var correctChosenAnswers = [];
var numberIncorrect = 0;
var isCorrect = 0;
for(var i=0; i < checkLength; i++)
{
answer = checkObj.answerChoiceCheckbox[i].value.split(", ");
if (answer[1] != "")
{
correctAnswers.push(answer[1]);
}
if (checkObj.answerChoiceCheckbox[i].checked)
{
chosenAnswers.push(answer[0]);
if (answer[1] != "")
{
correctChosenAnswers.push(answer[1]);
}
}
}
// Show feedback if Knowledge Check or go to next question for Assessment
if (quizType == 'Knowledge Check')
{
// Check if answer is correct
if (chosenAnswers.length == correctChosenAnswers.length)
{
if(correctChosenAnswers.length == correctAnswers.length)
{
feedbackIncorrect.style.display = 'none';
feedbackCorrect.style.display = 'block';
}
else
{
feedbackIncorrect.style.display = 'block';
feedbackCorrect.style.display = 'none';
}
}
else
{
feedbackIncorrect.style.display = 'block';
feedbackCorrect.style.display = 'none';
}
}
else
{
// Check if answer is correct
if (chosenAnswers.length == correctChosenAnswers.length)
{
if(correctChosenAnswers.length == correctAnswers.length)
{
isCorrect = 1;
totalCorrect++;
}
}
count++;
var questionText = checkObj.getElementsByClassName("questionText")[0].innerHTML;
verboseCorrectAnswers.push([count,questionText,correctChosenAnswers.length, isCorrect]);
showNextQuestion();
}
}
function checkIfMatchingTrue(selectObj, selectBoxCount)
{
var isCorrect = 0;
var correctAnswers = [];
var chosenAnswers = [];
var correctChosenAnswers = [];
var selected = null;
var selectedAnswer = null;
var correctAnswer = null;
var numberIncorrect = 0;
for (var i=0; i < selectBoxCount; i++)
{
selectedAnswer = selectObj[i].value;
correctAnswer = selectObj[i].name;
if (selectedAnswer != correctAnswer)
{
numberIncorrect++;
}
}
// WOULD HAVE SOMETHING LIKE THE FOLLOWING IF ABLE TO TEST AND WOULD NEED TO PASS IN quizType
// Show feedback if Knowledge Check or go to next question for Assessment
//if (quizType == 'Knowledge Check')
if (numberIncorrect == 0)
{
isCorrect = 1;
totalCorrect++;
}
count++;
var questionText = selectObj.getElementsByClassName("questionText")[0].innerHTML;
verboseCorrectAnswers.push([count,questionText,correctChosenAnswers.length, isCorrect]);
showNextQuestion();
}
// NOTE: This function does not deal with Knowledge Check because there were no Sortable Questions in Knowledge Check to test
function checkSortableCorrect (checkObj, position)
{
var feedbackCorrect = document.getElementById('feedbackCorrect');
var feedbackIncorrect = document.getElementById('feedbackIncorrect');
var questionNumber = "#questionNumber" + position;
var newOrdering = $(questionNumber).find( ".sortable" ).sortable('toArray');
var isCorrect = true;
for (var v = 0; v < newOrdering.length; v++)
{
if (newOrdering[v] != (v + 1))
{
isCorrect= false;
}
}
// WOULD HAVE SOMETHING LIKE THE FOLLOWING IF ABLE TO TEST AND WOULD NEED TO PASS IN quizType
// Show feedback if Knowledge Check or go to next question for Assessment
/*if (quizType == 'Knowledge Check')
{
if (isCorrect)
{
feedbackCorrect.style.display = 'block';
feedbackIncorrect.style.display = 'none';
//noAnswerChosen.style.display = 'none'; //line not working completely
}
else
{
feedbackIncorrect.style.display = 'block';
feedbackCorrect.style.display = 'none';
//noAnswerChosen.style.display = 'none'; //line not working completely
}
}
else
{*/
if (isCorrect)
{
totalCorrect++;
}
count++;
var isCorrect2 = 0;
if (isCorrect) {
isCorrect2= 1;
}
var questionText = checkObj.getElementsByClassName("questionText")[0].innerHTML;
verboseCorrectAnswers.push([count,questionText,newOrdering.length, isCorrect2]);
showNextQuestion();
//}
}
function shuffle(elems)
{
allElems = (function(){
var ret = [], l = elems.length;
while (l--) { ret[ret.length] = elems[l]; }
return ret;
})();
var shuffled = (function(){
var l = allElems.length, ret = [];
while (l--) {
var random = Math.floor(Math.random() * allElems.length),
randEl = allElems[random].cloneNode(true);
allElems.splice(random, 1);
ret[ret.length] = randEl;
}
return ret;
})(), l = elems.length;
while (l--) {
elems[l].parentNode.insertBefore(shuffled[l], elems[l].nextSibling);
elems[l].parentNode.removeChild(elems[l]);
}
}
function showSlide(currentSlide, direction)
{
var nextSlide = parseFloat(currentSlide) + 1;
var previousSlide = parseFloat(currentSlide) - 1;
if (direction == 'next')
{
document.getElementById('slide' + currentSlide).style.display = 'none';
if (document.getElementById('slide' + nextSlide))
{
document.getElementById('slide' + nextSlide).style.display = 'block';
}
}
if (direction == 'previous')
{
document.getElementById('slide' + currentSlide).style.display = 'none';
if (document.getElementById('slide' + previousSlide))
{
document.getElementById('slide' + previousSlide).style.display = 'block';
}
}
}
function highlightArea(id, coords, countTotal)
{
var coordsArray = new Array();
coordsArray = coords.split(",");
// left and right coordinates
var xCoords = new Array();
var minXCoord = null;
var maxXCoord = null;
// up and down coordinates
var yCoords = new Array();
var minYCoord = null;
var maxYCoord = null;
for (var i=0; i < coordsArray.length; i=i+2)
{
xCoords.push(coordsArray[i]);
yCoords.push(coordsArray[i + 1]);
}
minXCoord = Math.min.apply(Math, xCoords);
maxXCoord = Math.max.apply(Math, xCoords);
minYCoord = Math.min.apply(Math, yCoords);
maxYCoord = Math.max.apply(Math, yCoords);
document.getElementById('div' + id).style.top = minYCoord;
document.getElementById('div' + id).style.left = minXCoord;
document.getElementById('div' + id).style.height = maxYCoord - minYCoord;//left = minXCoord;
document.getElementById('div' + id).style.width = maxXCoord - minXCoord;//right = maxXCoord;
// unhighlight all hotspots
unhighlightArea(countTotal);
// highlight only hotspot curser is over
document.getElementById('div' + id).style.display = 'block';
}
function unhighlightArea(countTotal)
{
for (var j=1; j <= countTotal; j++)
{
if (j != selectedHotspot)
{
document.getElementById('div' + j).style.display = 'none';
}
}
}
function selectArea(id, countTotal)
{
selectedHotspot = id;
unhighlightArea(countTotal);
}
function checkHotspotCorrect(correctAnswer, countTotal)
{
var correctId = correctAnswer.replace(/^(hotspot)0*/, '');
var feedbackCorrect = document.getElementById('feedbackCorrect');
var feedbackIncorrect = document.getElementById('feedbackIncorrect');
var correctCoords = document.getElementById('area' + correctId).getAttribute('coords');
if (correctId == selectedHotspot)
{
feedbackIncorrect.style.display = 'none';
feedbackCorrect.style.display = 'block';
}
else
{
if (selectedHotspot)
{
feedbackIncorrect.style.display = 'block';
feedbackCorrect.style.display = 'none';
document.getElementById('div' + selectedHotspot).style.display = 'none';
// Changed the selected hotspot to be the correct hotspot for feedback
selectedHotspot = correctId;
highlightArea(correctId, correctCoords, countTotal);
document.getElementById('div' + correctId).style.backgroundColor = '#30BF30';
}
}
}
function changeCallout(id, coords, countTotal)
{
for (var j=1; j <= countTotal; j++)
{
document.getElementById('callout' + j).style.display = 'none';
}
var coordsArray = new Array();
coordsArray = coords.split(",");
// left and right coordinates
var xCoords = new Array();
var minXCoord = null;
var maxXCoord = null;
// up and down coordinates
var yCoords = new Array();
var minYCoord = null;
var maxYCoord = null;
for (var i=0; i < coordsArray.length; i=i+2)
{
xCoords.push(coordsArray[i]);
yCoords.push(coordsArray[i + 1]);
}
minXCoord = Math.min.apply(Math, xCoords);
maxXCoord = Math.max.apply(Math, xCoords);
minYCoord = Math.min.apply(Math, yCoords);
maxYCoord = Math.max.apply(Math, yCoords);
document.getElementById('callout' + id).style.top = minYCoord;
document.getElementById('callout' + id).style.left = minXCoord;
document.getElementById('callout' + id).style.maxWidth = maxXCoord - minXCoord;
document.getElementById('callout' + id).style.display = "block";
}
function ConvertMilliSecondsIntoSCORM2004Time(intTotalMilliseconds){
var ScormTime = "";
var HundredthsOfASecond; //decrementing counter - work at the hundreths of a second level because that is all the precision that is required
var Seconds; // 100 hundreths of a seconds
var Minutes; // 60 seconds
var Hours; // 60 minutes
var Days; // 24 hours
var Months; // assumed to be an "average" month (figures a leap year every 4 years) = ((365*4) + 1) / 48 days - 30.4375 days per month
var Years; // assumed to be 12 "average" months
var HUNDREDTHS_PER_SECOND = 100;
var HUNDREDTHS_PER_MINUTE = HUNDREDTHS_PER_SECOND * 60;
var HUNDREDTHS_PER_HOUR = HUNDREDTHS_PER_MINUTE * 60;
var HUNDREDTHS_PER_DAY = HUNDREDTHS_PER_HOUR * 24;
var HUNDREDTHS_PER_MONTH = HUNDREDTHS_PER_DAY * (((365 * 4) + 1) / 48);
var HUNDREDTHS_PER_YEAR = HUNDREDTHS_PER_MONTH * 12;
HundredthsOfASecond = Math.floor(intTotalMilliseconds / 10);
Years = Math.floor(HundredthsOfASecond / HUNDREDTHS_PER_YEAR);
HundredthsOfASecond -= (Years * HUNDREDTHS_PER_YEAR);
Months = Math.floor(HundredthsOfASecond / HUNDREDTHS_PER_MONTH);
HundredthsOfASecond -= (Months * HUNDREDTHS_PER_MONTH);
Days = Math.floor(HundredthsOfASecond / HUNDREDTHS_PER_DAY);
HundredthsOfASecond -= (Days * HUNDREDTHS_PER_DAY);
Hours = Math.floor(HundredthsOfASecond / HUNDREDTHS_PER_HOUR);
HundredthsOfASecond -= (Hours * HUNDREDTHS_PER_HOUR);
Minutes = Math.floor(HundredthsOfASecond / HUNDREDTHS_PER_MINUTE);
HundredthsOfASecond -= (Minutes * HUNDREDTHS_PER_MINUTE);
Seconds = Math.floor(HundredthsOfASecond / HUNDREDTHS_PER_SECOND);
HundredthsOfASecond -= (Seconds * HUNDREDTHS_PER_SECOND);
if (Years > 0) {
ScormTime += Years + "Y";
}
if (Months > 0){
ScormTime += Months + "M";
}
if (Days > 0){
ScormTime += Days + "D";
}
//check to see if we have any time before adding the "T"
if ((HundredthsOfASecond + Seconds + Minutes + Hours) > 0 ){
ScormTime += "T";
if (Hours > 0){
ScormTime += Hours + "H";
}
if (Minutes > 0){
ScormTime += Minutes + "M";
}
if ((HundredthsOfASecond + Seconds) > 0){
ScormTime += Seconds;
if (HundredthsOfASecond > 0){
ScormTime += "." + HundredthsOfASecond;
}
ScormTime += "S";
}
}
if (ScormTime == ""){
ScormTime = "0S";
}
ScormTime = "P" + ScormTime;
return ScormTime;
}
function setStartTime() {
startTimeStamp = new Date();
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View File

@@ -0,0 +1,128 @@
html::-webkit-scrollbar {
display: none;
}
html {
-ms-overflow-style: none;
scrollbar-width: none;
overflow-y: hidden;
}
body {
font-family: RobotoRegular, Arial, sans-serif;
font-size: 18px;
line-height: 20px;
background: #fff;
color: #212121;
}
div.S1000Dpara {
text-indent: 35px;
text-align: justify;
padding: 3px;
}
td {
border: 1px solid black;
padding: 0.5ex;
}
.grayNote {
color: gray;
text-indent: 35px;
text-align: justify;
padding: 3px;
}
span.foot_label {
display: inline;
vertical-align: super;
font-size: smaller;
/*font-weight: bold;*/
text-decoration: underline;
font-weight: medium;
font-family: serif;
font-variant: normal;
font-style: normal;
padding: 2px;
color: rgb(124, 37, 41);
}
/*
div.foot {
display: inline;
font-size: small;
font-weight: medium;
font-family: serif;
font-variant: normal;
font-style: normal;
}
div.foot_inner { display: none; }
div.foot:hover div.foot_inner {
display: block;
border: 1px double rgb(124, 37, 41);
margin: 0em 1em;
padding: 1em;
} */
.divTable {
justify-content: center;
margin: 0 auto;
max-width: 90%;
overflow-x: auto;
}
#tooltip {
background: rgb(124, 37, 41);
color: white;
border: 1px solid white;
padding: 5px;
border-radius: 5px;
}
#tooltipImg {
position: absolute;
background: white;
border: 2px solid rgb(124, 37, 41);
border-radius: 5px;
padding: 5px;
max-width: 500px;
}
#zoom {
width:34px;
height:34px;
border: 1px solid white;
background: rgba(124, 37, 41, 0.3);
border-radius: 5px;
}
#zoom:hover {
background: rgb(124, 37, 41);
}
.container_text table {
margin-bottom: 10px;
}
.container_text table.S1000DrandomList {
margin: 0;
}
.container_text table.S1000DrandomList td {
height: 10px;
padding: 0px;
padding-left: 0px;
}
.inlineImg {
margin: 0 0 !important;
display: inline-block !important;
vertical-align: bottom !important;
}
.ui-widget-header {
border: 1px solid rgb(124, 37, 41);
background: rgb(124, 37, 41);
color: #ffffff;
font-weight: bold;
}
.ui-widget {
font-family: Arial,sans-serif;
font-size: 1.0em;
}
.ui-widget .ui-widget {
font-size: 0.9em;
}
.jp-playlist {
display: none;
}

View File

@@ -0,0 +1,208 @@
var timerId;
var mouseOverImg;
var unityDivID = "";
Start();
function showTooltip(evt, text) {
let tooltip = document.getElementById("tooltip");
tooltip.innerHTML = text;
tooltip.style.display = "block";
if(evt.pageX > 3*window.innerWidth/4) {
tooltip.style.left = evt.pageX - tooltip.offsetWidth - 10 + 'px';
tooltip.style.top = evt.pageY + 10 + 'px';
tooltip.style.maxWidth = window.innerWidth/2 + 'px';
} else {
tooltip.style.left = evt.pageX + 10 + 'px';
tooltip.style.top = evt.pageY + 10 + 'px';
tooltip.style.maxWidth = window.innerWidth/2 + 'px';
if(evt.pageX + window.innerWidth/2 > window.innerWidth-10)
tooltip.style.maxWidth = window.innerWidth - evt.pageX - 10 + 'px';
}
}
function hideTooltip() {
var tooltip = document.getElementById("tooltip");
tooltip.style.display = "none";
}
function showTooltipImg(evt, filename, title="") {
let tooltip = document.getElementById("tooltipImg");
var imgHTML = "";
if(title != "")
imgHTML += "<div style='text-align: center;'><h3>" + title + "</h3></div>";
imgHTML += "<img src='"+filename+"' align='center' style='max-width: 500px;'>"
tooltip.innerHTML = imgHTML;
tooltip.style.display = "block";
tooltip.style.left = evt.pageX + 'px';
tooltip.style.top = evt.pageY + 'px';
if (evt.clientX < document.documentElement.clientWidth/2) {
if(evt.clientY < document.documentElement.clientHeight/2)
tooltip.style.transform = "translate(10px, 10px)";
else
tooltip.style.transform = "translate(10px, -10px) translate(0, -100%)";
}
else {
if(evt.clientY < document.documentElement.clientHeight/2)
tooltip.style.transform = "translate(-10px, 10px) translate(-100%, 0)";
else
tooltip.style.transform = "translate(-10px, -10px) translate(-100%, -100%)";
}
clearTimeout(timerId); timerID = null;
}
function hideTooltipImg() {
timerId = setTimeout(
() => {
var tooltip = document.getElementById("tooltipImg");
tooltip.style.display = "none";
}, 100
);
}
function showZoomImg(evt, text) {
if(evt.currentTarget.offsetWidth < 300 && evt.currentTarget.offsetHeight < 300)
return;
mouseOverImg = text;
let tooltip = document.getElementById("zoom");
evt = evt || window.event;
x = evt.clientX; y = evt.clientY;
img = document.elementFromPoint(x,y);
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
var rect = img.getBoundingClientRect();
tooltip.style.display = "block";
tooltip.style.left = (rect.right+scrollLeft-32-7)+'px';
tooltip.style.top = (rect.top+scrollTop+3)+'px';
}
function doZoomImg() {
viewer.show(mouseOverImg);
}
// ----------------------------------------------------------------------------------------
const scList = new Map();
const divList = new Map();
var quitCurUnity = null;
var isClicked = false;
function Start() {
const url = new URL(document.URL);
//var divID = url.searchParams.get('scenario');
var savedPage = window.sessionStorage.getItem('curScenarioPage');
var divID = window.sessionStorage.getItem('scenarioID');
if(savedPage == location.href && divID != null && divID != "")
unityDivID = divID;
//console.log("Start ", unityDivID);
window.addEventListener('resize', onResize);
}
function scRegister(scName, scTitle, divID, iframeSrc) {
var curSc = window.sessionStorage.getItem(scName);
if(curSc != '~done~') {
scList.set(scName, scTitle);
window.sessionStorage.setItem(scName, scTitle);
}
divList.set(divID, iframeSrc);
if(divID == unityDivID)
{
setDivToIFrame(divID);
var elem = document.getElementById(divID);
elem.scrollIntoView();
}
else
setDivToBanner(divID);
}
function scFinished(scName, scTitle) {
window.sessionStorage.setItem(scName, '~done~');
scList.delete(scName);
}
function setDivToBanner(divID) {
var elem = document.getElementById(divID);
if(elem != null) {
if(elem.firstChild != null)
elem.removeChild(elem.firstChild);
elem.innerHTML = "<img src='app/dinamika/banner.png' align='center' height='80px' style='border:1px solid #7C2529; box-shadow: 5px 5px 10px rgba(124,37,41,0.5); padding: 10px; cursor:pointer' onclick='onBannerClick(\""+divID+"\")'>";
}
}
function onBannerClick(divID) {
if(isClicked) return;
if(unityDivID == null)
isClicked = true;
unityDivID = divID;
if(quitCurUnity != null)
quitCurUnity();
else
setDivToIFrame(divID);
}
function afterUnityQuit() {
quitCurUnity = null;
//const url = new URL(document.URL);
//url.searchParams.delete('scenario');
//url.searchParams.append('scenario', unityDivID);
window.sessionStorage.setItem('scenarioID', unityDivID);
window.sessionStorage.setItem('curScenarioPage', location.href);
document.location.replace(location.href); //url.href
}
function setDivToIFrame(divID) {
var elem = document.getElementById(divID);
if(elem != null)
elem.innerHTML = "<iframe src='"+divList.get(divID)+"' width='938px' height='532px' align='center' frameBorder='0' style='text-indent: 0px;'>Узел <b>iframe</b> не поддерживается браузером</iframe>";
}
// ----------------------------------------------------------------------------------------
function onLearnedButton() {
if(scList.size == 0){
learnResult();
let btn = document.getElementById('learnedButton');
btn.style.display = 'none';
} else {
var msgStr;
msgStr = '<p>Не изучены сценарии интерактивной модели ВС:</p><br/>';
for (let sc of scList.values())
msgStr += " - "+sc+"<br/>";
$("#dialog").html(msgStr);
$( function() {
$( "#dialog" ).dialog();
$('#dialog').dialog("option", "width", "auto"); $('#dialog').dialog("option", "height", "auto");
} );
}
}
function onLoadFunction() {
var H = document.getElementById('container_text').offsetHeight;
window.sessionStorage.setItem('contentsHeight', H);
window.sessionStorage.setItem('scrollY', window.scrollY);
//console.log('din.js scrollY = ',window.scrollY);
window.scrollTo({ top: 0, behavior: 'auto' });
if(typeof window.parent.objectHTMLLoaded !== "undefined")
window.parent.objectHTMLLoaded();
let timerId = setInterval(() => {
var h = document.getElementById('container_text').offsetHeight;
if(h != H) {
H = h;
window.sessionStorage.setItem('contentsHeight', H);
window.sessionStorage.setItem('scrollY', window.scrollY);
//console.log('din.js scrollY = ',window.scrollY);
if(typeof window.parent.updateDocHeight !== "undefined")
window.parent.updateDocHeight();
}
}, 50);
setTimeout(() => { clearInterval(timerId); }, 1000);
}
function onResize() {
var H = document.getElementById('container_text').offsetHeight;
window.sessionStorage.setItem('contentsHeight', H);
if(typeof window.parent.updateDocHeight !== "undefined")
window.parent.updateDocHeight();
}

View File

@@ -0,0 +1,275 @@
html,
body {
margin: 0;
padding: 0;
height:100%;
width: 100%;
scrollbar-width: auto;
text-rendering: optimizeLegibility;
scroll-behavior: smooth;
}
body {
font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif;
line-height: 1.4em;
background: #f5f5f5;
color: #7c2529;
min-width: 230px;
margin: 0 auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
overflow-y: auto;
display: flex;
}
.div, .aside {
display: block;
}
button {
margin: 0;
padding: 0;
border: 0;
background: none;
font-size: 100%;
vertical-align: baseline;
font-family: inherit;
font-family: 'Trebuchet MS', sans-serif;
font-weight: inherit;
color: inherit;
-webkit-appearance: none;
appearance: none;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.dropbtn {
background-color: f5f5f5;
color: #7c2529;
height: 30px;
font-size: 14px;
border: none;
border-bottom: 1px solid #7c2529cc;
cursor: pointer;
width: 290px;
text-align: left;
}
.dropdown {
display: none;
position: relative;
}
.dropdown-content {
display: none;
position: absolute;
min-width: 250px;
z-index: 1;
background-color: f5f5f5;
transition-duration: 0.3s;
transition-timing-function: ease-out;
}
.dropdown-content button {
color: #7c2529;
background-color: #f5f5f5;
border: none;
border-bottom: 1px solid #f0d1d3;
padding: 8px 16px;
text-decoration: none;
display: block;
width: 100%;
cursor: pointer;
border-bottom-right-radius: 15px;
border-top-left-radius: 15px;
}
.dropdown-content button:hover {background-color: #dfb2b6}
.btnToTop {
position: fixed;
bottom: 0px;
right: 0px;
width: 67px;
height: 64px;
background: url(../images/BG_rightIcon.png) no-repeat;
cursor: pointer;
transform: scale(0.8);
}
.btnToTop:hover {
animation: bounce 2s infinite linear;
}
@keyframes bounce {
0% {transform: scale(0.8) translateY(0%)}
25% {transform: scale(0.8) translateY(-10%)}
50% {transform: scale(0.8) translateY(-0%)}
75% {transform: scale(0.8) translateY(-10%)}
100% {transform: scale(0.8) translateY(0%)}
}
.btnToTop i {
display: block;
width: 33px;
height: 30px;
border: none;
background: url(../images/toTop.svg) no-repeat;
position: absolute;
left: -2px;
right: 0;
top: -7px;
bottom: 0;
margin: auto;
}
.view-toc {
position: sticky;
overflow-y: auto;
overflow-x: hidden;
top: 5px;
left: 0;
width: 20vw;
height: 100%;
padding: 0px 0 0 0;
min-width: 20vw;
}
.view-toc-container {
position:fixed;
scrollbar-width: thin;
width: 20vw;
min-width: 20vw;
height: calc(100vh - 10px);
padding: 0;
overflow-x: hidden;
overflow-y: auto;
vertical-align: top;
}
.view-toc h1 {
padding: 50px 0;
font-weight: 400;
text-align: center;
}
.view-toc p {
margin: 0 0 20px;
line-height: 1.5;
}
.view-body::-webkit-scrollbar {
width: 5px;
height: 8px;
background-color: rgb(207, 73, 73);
}
body::-webkit-scrollbar-track, .view-toc-container::-webkit-scrollbar-track {
background-color: #f0f0f0;
border-radius: 50px;
}
body::-webkit-scrollbar-thumb, .view-toc-container::-webkit-scrollbar-thumb {
border-radius: 50px;
background-color: #ce9494;
box-shadow: inset 2px 2px 5px 0 rgba(#fff, 0.5);
min-height: 50px;
}
.view-toc-container::-webkit-scrollbar-thumb {
background-color: #ce94947a;
}
body::-webkit-scrollbar {
width: 15px;
}
.view-toc-container::-webkit-scrollbar {
width: 5px;
}
.tree {
}
.tree ul {
display: block;
margin: 0px;
padding: 0px;
list-style:none;
color:#7c2529;
position:relative;
font-size: 1rem;
-webkit-touch-callout: none; /* iOS Safari */
-webkit-user-select: none; /* Chrome/Safari/Opera */
-khtml-user-select: none; /* Konqueror */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* Internet Explorer/Edge */
user-select: none; /* Non-prefixed version, currently not supported by any browser */
}
.tree ul {margin-left: 0.5em} /* (indentation/2) */
.tree ul:before {
content:"";
display:block;
width:0;
position:absolute;
top:0;
bottom:0;
border-left:none;
}
.tree li {
display: block;
margin:0px;
padding:0 5px; /* indentation + .5em = 1.5em*/
/*line-height:1.8em; default list item's `line-height` */
position:relative;
}
.tree container, .tree folder {
display: block;
padding: 3px;
}
.tree folder {
padding-top: 7px;
font-weight: bold;
}
.tree container icon {
background-repeat: no-repeat;
background-position: center center;
padding: 32px;
background-image: url('../icons/book2.png');
background-size: 16px 16px;
/* url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAQCAYAAADwMZRfAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAnJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpDb21wcmVzc2lvbj41PC90aWZmOkNvbXByZXNzaW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5GbHlpbmcgTWVhdCBBY29ybiA1LjIuMTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNi0wMi0wMlQxMjo0ODo1ODwveG1wOk1vZGlmeURhdGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgqitOMRAAABuklEQVQ4EZVSvy9sQRT+Znfseh4rfuUVSCQahSBeIZaORqURT6L1FyjlFSJER0In0RMajeqphEVHqxIhmydYrL137sydce5ds9lYWesk9557vvOdb+acexjebXrtMqHjv2I2VtEnvTPT/mDjcp7bpKypX4Vxxm3MTOyKvn/buJwPRQYXTzYn+yLj3W2JJkvO5OTP68XUEWAmU3+TNxb/zLM/G+n1gc7I1FBnork5EYeQgCOAuxcf++f/ce+wXWmiz8XFDOxqe6Zl4Xhl8EdyNuVww9h0f0dDQ2Mdh+cDngakAeKxKMZ6W3D7LCaUT0CReQo3eiP9dHa3vAWQSJCrpndNYaRFbHD00PPRrh9V6+Flbj4T6doLchx0iKcNXLpFpSYLXDcs4dAKgkCnkPhayg3a8yVcVOdFpBJwlEZOfV1sGQFfSUESmbyIki6JmIpE2LuKS3xFh1vjSnkQBH5nJkE7gYgr8kJcKxm280r7UZHRdcJ2aCbWuO/L0/SjM5z1dK0Fy/mgpWxOZLWvTl2vKrxK2Obo0vE/gPWWKy7OGWYuDuaSIxYLN4kmPUFA6VZZVqn/xr8sLf4UeQNldMTNDtyI9wAAAABJRU5ErkJggg=='); */
}
.tree folder icon {
background-repeat: no-repeat;
background-position: 0 center;
padding-left: 0px;
/* background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAQCAYAAADwMZRfAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAnJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpDb21wcmVzc2lvbj41PC90aWZmOkNvbXByZXNzaW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5GbHlpbmcgTWVhdCBBY29ybiA1LjIuMTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNi0wMi0wMlQxMjo0OTowOTwveG1wOk1vZGlmeURhdGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrkd8ulAAACb0lEQVQ4EZVSTWgTQRT+ZjP5L21KIeAfFpTWikJVqJdeiuJF0qulePHqRcGriAdPXqrFQy8i6EHwIGigFEQQvbRQxP5pSkzbxCbpT9o0SZvs7uzu+HabTeslxQcz7++bb957Mwx1mRy92sp1w+f6lV3TGHj8Y8f1m2neSOoYE5LfcP1AmE+RfdP1j9Tx+12v/0y+3S5nZ6S78t8/lOL3ut4feZgAbOLR5RedvVeGT1y63s5DHTB0AcswsbuZw+r0xF4xt/KO+xSpKIBpWHREgcLx5drD6TfuBXY7t6PdvW3BFg5DFKFYBmAJhMIMnX0D4Ug+c0fxMDACWpZEMZtCKZ/WyT0gkcIE97bBwyPw+OojsonqEj1z3jUdvfhtHIXM8j8xbmgqLL0CqYcaCbslrbq370tJTdt17EutXIIQViT+4OI5QAOCIZPDH4SubUGtErgu+eRvzH76TC1IeIQK0xsg64CIKWxIcgwxoUCaKHNoNUDaAwOEJpBbmEO1WET/8C0nxqgSeagSJ0ibTWnjZuIfwUHD8pp0m6oiO78AWavgVPdZ+AMBBLmFXV1Bi8863JHDU9ooIDs3m4Yp7zqTrFZqKGfmiXoHHcePIdzeBiYq0C0//EYNOoIIQIWAlx6YiDfXsbq4kiisLD2NjSbHHZJcKk1pDSdPR9EajcCkyrx0VKNHCqKKqkG9E4kkgp3CFtZTqUQmsTwWG0m+sssiEjm19nOuv6fvQoh5FFQ21pxy3U11jG2i2Jf1pdX08q+ll4PPks9djDNy+vZfKdDjBptqxp7ERhYbBDbWaceAPsgbP60pBTqsvfoHao777+xfmRQTxswccNgAAAAASUVORK5CYII=');
*/
}
.tree container:hover {
cursor: pointer;
background: linear-gradient(to top, #ebc4c4, #ebc4c405);
border-radius:5px;
transform: scale(1.03);
}
.tree button {
width: 100%;
font: 0.9em 'Helvetica Neue', Helvetica, Arial, sans-serif;
text-align: left;
}
.view-body {
display: flex;
padding: 45px 0px 0px 0px;
}
.view-doc {
display: flex;
width: 100%;
height: 100%;
margin: 0px 0px 0px 5px;
padding: 10px 20px;
min-width: 500px;
background: #fff;
border: 1px solid #e6e6e6;
border-radius: 8px;
box-shadow: 0px 2px 4px 0 rgba(0, 0, 0, 0.2),
0px 2px 15px 0 rgba(0, 0, 0, 0.1);
flex-grow: 1;
overflow-y: visible;
}
.view-obj {
display: flex;
height: 100%;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
#iv-container{position:fixed;width:100vw;background:rgba(10,10,10,0.6);height:100vh;top:0;left:0;display:none;z-index:1000;
border:2px solid rgb(124, 37, 41);border-radius: 5px;box-shadow: 0px 2px 4px 0 rgba(0, 0, 0, 0.2), 0px 2px 50px 0 rgba(0, 0, 0, 0.1);
padding: 0px;}
.iv-container{overflow:hidden}
.iv-close{width:32px;height:32px;position:absolute;border: 1px solid white; right:20px;top:20px;background: rgba(124, 37, 41, 0.5); cursor:pointer;text-align:center;overflow:hidden;text-shadow:0 0 3px #6d6d6d;-webkit-transition:all ease 200ms;-moz-transition:all ease 200ms;-o-transition:all ease 200ms;transition:all ease 200ms}
.iv-close:after,.iv-close:before{content:"";height:2px;width:26px;background:white;position:absolute;left:3px;top:17px;margin-top:-3px;border-radius:2px}
.iv-close:before{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}
.iv-close:after{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}
.iv-close:hover{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg); background: rgb(124, 37, 41)}
.iv-image-view{position:absolute;height:100%;width:100%}
.iv-image-wrap{display:inline-block}
.iv-image-wrap:active{cursor:move}
.iv-large-image{cursor:move;max-width:100%;max-height:100%;position:absolute;background-color:#FFFFFF;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}
.iv-loader{top:50%;left:50%;border-radius:50%;width:32px;height:32px;z-index:100;margin-top:-16px;margin-left:-16px;font-size:5px;position:absolute;text-indent:-9999em;border-top:1em solid rgba(255, 255, 255, .2);border-right:1em solid rgba(255, 255, 255, .2);border-bottom:1em solid rgba(255, 255, 255, .2);border-left:1em solid #fff;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load8 1.1s infinite linear;animation:load8 1.1s infinite linear}
.iv-loader:after{width:10em;height:10em;border-radius:50%}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}

View File

@@ -0,0 +1,285 @@
var container=null;
var parentScrollListener=null;
!function(e,t)
{"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.ViewBigimg=t()}
(this,
function()
{
"use strict";
function l(){
var e=!1;try{addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){e=!0}}))}catch(e){}return e
}
function o(e,t)
{
this.container=e;
var i=function(){};
this.onStart=t.onStart||i,
this.onMove=t.onMove||i,
this.onEnd=t.onEnd||i,
//this.onKeyDown=t.onKeyDown||i,
this.onMouseWheel=t.onMouseWheel||i,
this.onClick=t.onClick||i,
this.onPinch=t.onPinch||i
}
o.prototype.init=function()
{
var r=this;
return this.startHandle=function(e)
{
e.preventDefault();
var t=e.type,
i="touchstart"===t?"touchmove":"mousemove",
n="touchstart"===t?"touchend":"mouseup",
o=e.clientX||e.touches[0].clientX,
a=e.clientY||e.touches[0].clientY;
function s(e)
{
e.preventDefault();
var t=e.clientX||e.touches[0].clientX,i=e.clientY||e.touches[0].clientY;
r.onMove(e,{dx:t-o,dy:i-a,mx:t,my:i})
}
!1!==r.onStart(e,{x:o,y:a})&&("touchstart"===t&&e.touches[1]&&r.onPinch(e),
document.addEventListener(i,s,!("touchmove"!==i||!l())&&{capture:!1,passive:!1}),
document.addEventListener(n,function e()
{
document.removeEventListener(i,s),
document.removeEventListener(n,e),
r.onEnd()
}))
},
this.container.addEventListener("touchstart",this.startHandle,!1),
this.container.addEventListener("mousedown",this.startHandle,!1),
//this.container.addEventListener("onkeydown",this.onKeyDown,!1),
//this.container.onkeydown = function(e){alert('!!close')},
//document.getElementById('iv-container').contentEditable=true,
//document.getElementById('iv-container').focus(),
this.container.addEventListener("wheel",this.onMouseWheel,!1),
this.container.addEventListener("click",this.onClick,!1),
this
},
o.prototype.destroy=function()
{
this.container.removeEventListener("touchstart",this.startHandle),
this.container.removeEventListener("mousedown",this.startHandle),
//this.container.removeEventListener("onkeydown",this.onKeyDown),
this.container.removeEventListener("wheel",this.onMouseWheel),
this.container.removeEventListener("click",this.onClick)
};
var r=function(e)
{return e.preventDefault()};
function n(e,t)
{
this.container=e,
this.options=Object.assign({},n.defaults,t),
this.zoomValue=100,
e.classList.add("iv-container"),
this.imageWrap=e.querySelector(".iv-image-wrap"),
this.closeBtn=e.querySelector(".iv-close")
}
return function()
{
var o=0;
if(!window.requestAnimationFrame){
for(var e=["ms","moz","webkit","o"],t=0;t<e.length&&!window.requestAnimationFrame;++t)
window.requestAnimationFrame=window[e[t]+"RequestAnimationFrame"],
window.cancelAnimationFrame=window[e[t]+"CancelAnimationFrame"]||window[e[t]+"CancelRequestAnimationFrame"];
window.requestAnimationFrame||(window.requestAnimationFrame=function(e)
{
var t=(new Date).getTime(),
i=Math.max(0,16-(t-o)),
n=window.setTimeout(function(){e(t+i)},i);
return o=t+i,n
}),
window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e)
{
clearTimeout(e)
})
}
}(),
n.prototype={constructor:n,_init:function()
{
var t,
h=this,
a=h.options,
c=!1,
e=h.container,
i=h.imageWrap,
s=0,
n=0;
h._imageSlider=new o(i,{
onStart:function()
{
if(!h.loaded)return!1;
if(!c){
this.imgWidth=h.imageDim.w*h.zoomValue/100,
this.imgHeight=h.imageDim.h*h.zoomValue/100,
this.curImgLeft=parseFloat(h.currentImg.style.left),
this.curImgTop=parseFloat(h.currentImg.style.top)}
},
onMove:function(e,t)
{
if(!c)
{
this.currentPos=t;
var i=this.curImgLeft+t.dx,
n=this.curImgTop+t.dy,
o=Math.max((h.containerDim.w-this.imgWidth)/2,0),
a=Math.max((h.containerDim.h-this.imgHeight)/2,0),
s=h.containerDim.w-o,
r=h.containerDim.h-a;
i=Math.min(i,o),
n=Math.min(n,a),
i+this.imgWidth<s&&(i=s-this.imgWidth),
n+this.imgHeight<r&&(n=r-this.imgHeight),
h.currentImg.style.left=i+"px",
h.currentImg.style.top=n+"px"
}
},
onEnd:function(){},
onMouseWheel:function(e){
if(a.zoomOnMouseWheel&&h.loaded){
var t=Math.max(-1,Math.min(1,e.wheelDelta)),
i=h.zoomValue*(100+30*t)/100; // 15*t
if(100<=i&&i<=a.maxZoom?s=0:s+=Math.abs(t),!(5<s)){var n=e.pageX,o=e.pageY;h.zoom(i,{x:n,y:o})}
}
},
//onKeyDown:function(e){
// alert('!!close');
// var keycode = e.keyCode || e.which;
// if(keycode === 27){ this._close(); }
//},
onClick:function(e){
0==n?(n=Date.now(),t={x:e.pageX,y:e.pageY}):(Date.now()-n<500&&Math.abs(e.pageX-t.x)<50&&Math.abs(e.pageY-t.y)<50&&(h.zoomValue==a.zoomValue?h.zoom(200):h.resetZoom()),n=0)
},
onPinch:function(e){
if(h.loaded){
var t=e.touches[0],
i=e.touches[1];
if(t&&i){c=!0;var a=Math.sqrt(Math.pow(i.pageX-t.pageX,2)+Math.pow(i.pageY-t.pageY,2)),s=h.zoomValue,r={x:(i.pageX+t.pageX)/2,y:(i.pageY+t.pageY)/2},
n=function(e){
e.preventDefault();
var t=e.touches[0],
i=e.touches[1],
n=Math.sqrt(Math.pow(i.pageX-t.pageX,2)+Math.pow(i.pageY-t.pageY,2)),o=s+(n-a)/2;h.zoom(o,r)
};
document.addEventListener("touchmove",n,!!l()&&{capture:!1,passive:!1}),
document.addEventListener("touchend",function e(){document.removeEventListener("touchmove",n),document.removeEventListener("touchend",e),c=!1})
}
}
}
}).init(),
a.refreshOnResize&&(this._resizeHandler=this.refresh.bind(this),
window.addEventListener("resize",this._resizeHandler)),
e.addEventListener("touchmove",r,!!l()&&{capture:!1,passive:!1}),
e.addEventListener("wheel",r),
this._close=this.hide.bind(this),
this.closeBtn.addEventListener("click",this._close)},
zoom:function(d,v){
var p=this,e=this.options.maxZoom,
g=this.zoomValue,
f=this.currentImg,
w=this.containerDim,
y=this.imageDim,
x=parseFloat(f.style.left),
M=parseFloat(f.style.top);
d=Math.round(Math.max(100,d)),
d=Math.min(e,d),v=v||{x:w.w/2,y:w.h/2},
p._clearFrames();
var z=0;
!function e(){
++z<20&&(p._zoomFrame=requestAnimationFrame(e));var t,i,n=(t=z,t/=20,-(d-(i=g))*(--t*t*t*t-1)+i),o=n/g,a=y.w*n/100,s=y.h*n/100,r=-((v.x-x)*o-v.x),h=-((v.y-M)*o-v.y),c=Math.max((w.w-a)/2,0),l=Math.max((w.h-s)/2,0),m=w.w-c,u=w.h-l;(r=Math.min(r,c))+a<m&&(r=m-a),(h=Math.min(h,l))+s<u&&(h=u-s),f.style.width=a+"px",f.style.height=s+"px",f.style.left=r+"px",f.style.top=h+"px",p.zoomValue=n
}()
},
_clearFrames:function(){cancelAnimationFrame(this._zoomFrame)},
resetZoom:function(){this.zoom(this.options.zoomValue)},
_calculateDimensions:function(){
var e,t,i=this.currentImg,
n=this.container,
o=i.getBoundingClientRect().width,
a=i.getBoundingClientRect().height,
s=n.getBoundingClientRect().width,
r=n.getBoundingClientRect().height;
this.containerDim={w:s,h:r};
var h=o/a;t=(e=a<o&&s<=r||s<h*r?s:h*r)/h,
this.imageDim={w:e,h:t},i.style.width=e+"px",i.style.height=t+"px",i.style.left=(s-e)/2+"px",i.style.top=(r-t)/2+"px",i.style.maxWidth="none",i.style.maxHeight="none"
},
refresh:function(){
this.loaded&&(this._calculateDimensions(),this.resetZoom())
},
show:function(e){
this.container.style.top = (window.parent.scrollY)+'px';
this.container.style.width = window.innerWidth+'px';
this.container.style.height = (window.parent.innerHeight-70)+'px';
container = this.container;
parentScrollListener = function(e) { container.style.top = (window.parent.scrollY)+'px';};
window.parent.document.body.style.overflowY = "hidden";
window.parent.addEventListener('scroll', parentScrollListener);
this.container.style.display="block",e&&this.load(e)
},
hide:function(){
this.container.style.display="none";
window.parent.document.body.style.overflowY = "auto";
window.parent.removeEventListener('scroll', parentScrollListener);
},
destroy:function(){
window.removeEventListener("resize",this._resizeHandler),
this._imageSlider.destroy(),
this.closeBtn.removeEventListener("click",this._close),
this.container.parentNode.removeChild(this.container),
this.closeBtn=null,
this.container=null,
this.imageWrap=null,
this.options=null,
this._close=null,
this._imageSlider=null,
this._resizeHandler=null
},
load:function(e){
var t=this,i=this.container,
n=this.imageWrap,
o=n.querySelector(".iv-large-image");
o&&n.removeChild(o);
var a,s=document.createElement("img");
function r(){
t.loaded=!0,
t.zoomValue=100,
s.style.display="block",
t.refresh(),
i.querySelector(".iv-loader").style.display="none"
}
s.classList.add("iv-large-image"),
s.src=e,
this.currentImg=s,
this.imageWrap.appendChild(s),
this.loaded=!1,
i.querySelector(".iv-loader").style.display="block",s.style.display="none",
!(a=s).compvare||void 0!==a.naturalWidth&&0===a.naturalWidth?s.onload=function(){r()}:r()
}
},
n.defaults={zoomValue:100,maxZoom:800,refreshOnResize:!0,zoomOnMouseWheel:!0},
function(e){
var t=document.createElement("div");
t.id="iv-container",
t.innerHTML='<div class="iv-loader"></div><div class="iv-image-view"><div class="iv-image-wrap"></div><div class="iv-close"></div></div>',
document.body.appendChild(t);
t.onkeypress = function(){alert('');};
//t.addEventListener("click",this._close)};
//t.onkeydown = function(e){
// alert('!!close');
// var keycode = e.keyCode || e.which;
// if(keycode === 27){ this._close(); }
//}
//document.getElementById('iv-container').contentEditable=true;
//document.getElementById('iv-container').focus();
var i=new n(t,e);
return i._init(),i
}
});

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 809 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,54 @@
QT += core gui xml
#gui-private
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
CONFIG += console
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
console.cpp \
exportdialog.cpp \
html.cpp \
lyx.cpp \
main.cpp \
editormainwindow.cpp \
ru_const.cpp \
s1000d_manager.cpp \
splashform.cpp
HEADERS += \
console.h \
editormainwindow.h \
exportdialog.h \
html.h \
lyx.h \
ru_const.h \
s1000d_manager.h \
splashform.h
FORMS += \
editormainwindow.ui \
exportdialog.ui \
splashform.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RESOURCES += \
S1000DResources.qrc
win32: RC_ICONS = $$PWD/Icons/doc_config.ico
#QTPLUGIN +=qico \
# qsvg \
# qjpeg \
# qwbmp
#LIBS +=-L$(QTDIR)/plugins/imageformats
#INCLUDEPATH += $(QTDIR)/plugins/imageformats

View File

@@ -0,0 +1,322 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.14.2, 2023-01-09T12:57:28. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{097cf8a8-2317-4a35-a529-1cb5c5e47f5c}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">false</value>
<value type="QString" key="ClangCodeModel.WarningConfigId">Builtin.Questionable</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">8</value>
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5152.win64_mingw81_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\C++\build-S1000DEditor-Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/C++/build-S1000DEditor-Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Отладка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
<value type="int" key="RunSystemFunction">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\C++\build-S1000DEditor-Desktop_Qt_5_15_2_MinGW_64_bit-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/C++/build-S1000DEditor-Desktop_Qt_5_15_2_MinGW_64_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="RunSystemFunction">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\C++\build-S1000DEditor-Desktop_Qt_5_15_2_MinGW_64_bit-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/C++/build-S1000DEditor-Desktop_Qt_5_15_2_MinGW_64_bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Профилирование</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="RunSystemFunction">0</value>
<value type="int" key="SeparateDebugInfo">0</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">S1000DEditor2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:E:/C++/S1000DEditor/S1000DEditor.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">E:/C++/S1000DEditor/S1000DEditor.pro</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">E:/C++/build-S1000DEditor-Desktop_Qt_5_15_2_MinGW_64_bit-Release</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@@ -0,0 +1,319 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.14.1, 2021-06-16T10:52:01. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{3554a5b0-26c0-4e9c-896e-0ad6b09e59c9}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey"/>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
<value type="QString" key="ClangCodeModel.WarningConfigId">Builtin.Questionable</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">8</value>
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{ad7d87aa-8f5c-4e86-8651-11a06c0ae456}</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/shurick/Projects/643_mi38/s1000d/build-S1000DEditor-Desktop-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/shurick/Projects/643_mi38/s1000d/build-S1000DEditor-Desktop-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Отладка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
<value type="int" key="RunSystemFunction">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/shurick/Projects/643_mi38/s1000d/build-S1000DEditor-Desktop-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/shurick/Projects/643_mi38/s1000d/build-S1000DEditor-Desktop-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="RunSystemFunction">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/shurick/Projects/643_mi38/s1000d/build-S1000DEditor-Desktop-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/shurick/Projects/643_mi38/s1000d/build-S1000DEditor-Desktop-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Профилирование</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="RunSystemFunction">0</value>
<value type="int" key="SeparateDebugInfo">0</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/shurick/Projects/643_mi38/s1000d/S1000DEditor/S1000DEditor.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/home/shurick/Projects/643_mi38/s1000d/S1000DEditor/S1000DEditor.pro</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/shurick/Projects/643_mi38/s1000d/build-S1000DEditor-Desktop-Release</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@@ -0,0 +1,542 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.14.2, 2021-04-21T12:22:15. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{8d779a8c-2d05-46ce-a346-322281e5dc8d}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
<value type="QString" key="ClangCodeModel.WarningConfigId">Builtin.Questionable</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">false</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">2</value>
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5152.win64_mingw81_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">F:\C++\build-S1000DEditor-Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">F:/C++/build-S1000DEditor-Desktop_Qt_5_15_2_MinGW_64_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Отладка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
<value type="int" key="RunSystemFunction">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">F:\C++\build-S1000DEditor-Desktop_Qt_5_15_2_MinGW_64_bit-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">F:/C++/build-S1000DEditor-Desktop_Qt_5_15_2_MinGW_64_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="RunSystemFunction">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">F:\C++\build-S1000DEditor-Desktop_Qt_5_15_2_MinGW_64_bit-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">F:/C++/build-S1000DEditor-Desktop_Qt_5_15_2_MinGW_64_bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Профилирование</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="RunSystemFunction">0</value>
<value type="int" key="SeparateDebugInfo">0</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:F:/C++/S1000DEditor/S1000DEditor.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">F:/C++/S1000DEditor/S1000DEditor.pro</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">F:/C++/build-S1000DEditor-Desktop_Qt_5_15_2_MinGW_64_bit-Release</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.1</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.14 Static</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.14 Static</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{94cbbe2d-0d31-465f-80f1-3cd0950454ef}</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">F:\C++\build-S1000DEditor-Qt_5_14-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">F:/C++/build-S1000DEditor-Qt_5_14-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Отладка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
<value type="int" key="RunSystemFunction">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">F:\C++\build-S1000DEditor-Qt_5_14-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">F:/C++/build-S1000DEditor-Qt_5_14-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="RunSystemFunction">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">F:\C++\build-S1000DEditor-Qt_5_14-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">F:/C++/build-S1000DEditor-Qt_5_14-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Профилирование</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="RunSystemFunction">0</value>
<value type="int" key="SeparateDebugInfo">0</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:F:/C++/S1000DEditor/S1000DEditor.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">F:/C++/S1000DEditor/S1000DEditor.pro</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">2</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@@ -0,0 +1,48 @@
<RCC>
<qresource prefix="/new">
<file>Icons/doc_config.png</file>
<file>Icons/doc_head_blue.png</file>
<file>Icons/folder.png</file>
<file>Icons/folder_search.png</file>
<file>Icons/folder_with_doc.png</file>
<file>Icons/folder+.png</file>
<file>Icons/folders.png</file>
<file>Icons/suspend.png</file>
<file>Icons/doc_head_blue+.png</file>
<file>Icons/save.png</file>
<file>Icons/logo.png</file>
<file>Icons/docs_head_orange.png</file>
<file>BlankXML/pm.xml</file>
<file>Icons/item_del.png</file>
<file>BlankXML/crew.xml</file>
<file>BlankXML/descript.xml</file>
<file>BlankXML/learning.xml</file>
<file>Icons/add.png</file>
<file>Icons/delete.png</file>
<file>Icons/down_arrow.png</file>
<file>Icons/up_arrow.png</file>
<file>Icons/question.png</file>
<file>Icons/lyx_import.png</file>
<file>Icons/refresh.png</file>
<file>BlankXML/blank.html</file>
<file>Icons/chrome.png</file>
<file>Icons/doc_config.ico</file>
<file>Icons/S1000D_logo.png</file>
<file>Icons/scorm_logo.png</file>
<file>Icons/chrome_refresh.png</file>
<file>Icons/export_logo.png</file>
<file>BlankXML/dml.xml</file>
<file>BlankXML/imsmanifest.xml</file>
<file>Icons/accept.png</file>
<file>Icons/exclamation.png</file>
<file>Icons/doc_head_blue_exclamation.png</file>
<file>Icons/folder_exclamation.png</file>
<file>BlankXML/packages.xml</file>
<file>BlankXML/scormIndex.html</file>
<file>Icons/edl_logo.png</file>
<file>BlankXML/edocinfo.xml</file>
<file>Icons/moodle_logo.png</file>
<file>BlankXML/singleScormIndex.html</file>
<file>Icons/maple-leaf.png</file>
</qresource>
</RCC>

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View File

@@ -0,0 +1,126 @@
/*
Закомментировано для для предпросмотра в проекте Клён.
Если в дальнейшем в сборках в браузере появится лишний скроллинг - раскомментировать.
html::-webkit-scrollbar {
display: none;
}
html {
-ms-overflow-style: none;
scrollbar-width: none;
overflow-y: hidden;
}*/
body {
font-family: RobotoRegular, Arial, sans-serif;
font-size: 18px;
line-height: 20px;
background: #fff;
color: #212121;
}
div.S1000Dpara {
text-indent: 35px;
text-align: justify;
padding: 3px;
}
td {
border: 1px solid black;
padding: 0.5ex;
}
.grayNote {
color: gray;
text-indent: 35px;
text-align: justify;
padding: 3px;
}
span.foot_label {
display: inline;
vertical-align: super;
font-size: smaller;
/*font-weight: bold;*/
text-decoration: underline;
font-weight: medium;
font-family: serif;
font-variant: normal;
font-style: normal;
padding: 2px;
color: rgb(124, 37, 41);
}
/*
div.foot {
display: inline;
font-size: small;
font-weight: medium;
font-family: serif;
font-variant: normal;
font-style: normal;
}
div.foot_inner { display: none; }
div.foot:hover div.foot_inner {
display: block;
border: 1px double rgb(124, 37, 41);
margin: 0em 1em;
padding: 1em;
} */
.divTable {
justify-content: center;
margin: 0 auto;
max-width: 90%;
overflow-x: auto;
}
#tooltip {
background: rgb(124, 37, 41);
color: white;
border: 1px solid white;
padding: 5px;
border-radius: 5px;
}
#tooltipImg {
position: absolute;
background: white;
border: 2px solid rgb(124, 37, 41);
border-radius: 5px;
padding: 5px;
max-width: 500px;
}
#zoom {
width:34px;
height:34px;
border: 1px solid white;
background: rgba(124, 37, 41, 0.3);
border-radius: 5px;
}
#zoom:hover {
background: rgb(124, 37, 41);
}
.container_text table {
margin-bottom: 10px;
}
.container_text table.S1000DrandomList td {
height: 10px;
padding: 3px;
padding-left: 0px;
}
.inlineImg {
margin: 0 0 !important;
display: inline-block !important;
vertical-align: bottom !important;
}
.ui-widget-header {
border: 1px solid rgb(124, 37, 41);
background: rgb(124, 37, 41);
color: #ffffff;
font-weight: bold;
}
.ui-widget {
font-family: Arial,sans-serif;
font-size: 1.0em;
}
.ui-widget .ui-widget {
font-size: 0.9em;
}

View File

@@ -0,0 +1,188 @@
var timerId;
var mouseOverImg;
var unityDivID = "";
Start();
function showTooltip(evt, text) {
let tooltip = document.getElementById("tooltip");
tooltip.innerHTML = text;
tooltip.style.display = "block";
if(evt.pageX > 3*window.innerWidth/4) {
tooltip.style.left = evt.pageX - tooltip.offsetWidth - 10 + 'px';
tooltip.style.top = evt.pageY + 10 + 'px';
tooltip.style.maxWidth = window.innerWidth/2 + 'px';
} else {
tooltip.style.left = evt.pageX + 10 + 'px';
tooltip.style.top = evt.pageY + 10 + 'px';
tooltip.style.maxWidth = window.innerWidth/2 + 'px';
if(evt.pageX + window.innerWidth/2 > window.innerWidth-10)
tooltip.style.maxWidth = window.innerWidth - evt.pageX - 10 + 'px';
}
}
function hideTooltip() {
var tooltip = document.getElementById("tooltip");
tooltip.style.display = "none";
}
function showTooltipImg(evt, text) {
let tooltip = document.getElementById("tooltipImg");
tooltip.innerHTML = "<img src='"+text+"' align='center' style='max-width: 500px;'>";
tooltip.style.display = "block";
tooltip.style.left = evt.pageX + 'px';
tooltip.style.top = evt.pageY + 'px';
if (evt.clientX < document.documentElement.clientWidth/2) {
if(evt.clientY < document.documentElement.clientHeight/2)
tooltip.style.transform = "translate(10px, 10px)";
else
tooltip.style.transform = "translate(10px, -10px) translate(0, -100%)";
}
else {
if(evt.clientY < document.documentElement.clientHeight/2)
tooltip.style.transform = "translate(-10px, 10px) translate(-100%, 0)";
else
tooltip.style.transform = "translate(-10px, -10px) translate(-100%, -100%)";
}
clearTimeout(timerId); timerID = null;
}
function hideTooltipImg() {
timerId = setTimeout(
() => {
var tooltip = document.getElementById("tooltipImg");
tooltip.style.display = "none";
}, 100
);
}
function showZoomImg(evt, text) {
if(evt.currentTarget.offsetWidth < 300 && evt.currentTarget.offsetHeight < 300)
return;
mouseOverImg = text;
let tooltip = document.getElementById("zoom");
evt = evt || window.event;
x = evt.clientX; y = evt.clientY;
img = document.elementFromPoint(x,y);
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
var rect = img.getBoundingClientRect();
tooltip.style.display = "block";
tooltip.style.left = (rect.right+scrollLeft-32-7)+'px';
tooltip.style.top = (rect.top+scrollTop+3)+'px';
}
function doZoomImg() {
viewer.show(mouseOverImg);
}
// ----------------------------------------------------------------------------------------
const scList = new Map();
const divList = new Map();
var quitCurUnity = null;
var isClicked = false;
function Start() {
const url = new URL(document.URL);
//var divID = url.searchParams.get('scenario');
var savedPage = window.sessionStorage.getItem('curScenarioPage');
var divID = window.sessionStorage.getItem('scenarioID');
if(savedPage == location.href && divID != null && divID != "")
unityDivID = divID;
//console.log("Start ", unityDivID);
}
function scRegister(scName, scTitle, divID, iframeSrc) {
var curSc = window.sessionStorage.getItem(scName);
if(curSc != '~done~') {
scList.set(scName, scTitle);
window.sessionStorage.setItem(scName, scTitle);
}
divList.set(divID, iframeSrc);
if(divID == unityDivID)
{
setDivToIFrame(divID);
var elem = document.getElementById(divID);
elem.scrollIntoView();
}
else
setDivToBanner(divID);
}
function scFinished(scName, scTitle) {
window.sessionStorage.setItem(scName, '~done~');
scList.delete(scName);
}
function setDivToBanner(divID) {
var elem = document.getElementById(divID);
if(elem != null) {
if(elem.firstChild != null)
elem.removeChild(elem.firstChild);
elem.innerHTML = "<img src='app/dinamika/banner.png' align='center' height='80px' style='border:1px solid #7C2529; box-shadow: 5px 5px 10px rgba(124,37,41,0.5); padding: 10px; cursor:pointer' onclick='onBannerClick(\""+divID+"\")'>";
}
}
function onBannerClick(divID) {
if(isClicked) return;
if(unityDivID == null)
isClicked = true;
unityDivID = divID;
if(quitCurUnity != null)
quitCurUnity();
else
setDivToIFrame(divID);
}
function afterUnityQuit() {
quitCurUnity = null;
//const url = new URL(document.URL);
//url.searchParams.delete('scenario');
//url.searchParams.append('scenario', unityDivID);
window.sessionStorage.setItem('scenarioID', unityDivID);
window.sessionStorage.setItem('curScenarioPage', location.href);
document.location.replace(location.href); //url.href
}
function setDivToIFrame(divID) {
var elem = document.getElementById(divID);
if(elem != null)
elem.innerHTML = "<iframe src='"+divList.get(divID)+"' width='938px' height='532px' align='center' frameBorder='0' style='text-indent: 0px;'>Узел <b>iframe</b> не поддерживается браузером</iframe>";
}
// ----------------------------------------------------------------------------------------
function onLearnedButton() {
if(scList.size == 0){
learnResult();
let btn = document.getElementById('learnedButton');
btn.style.display = 'none';
} else {
var msgStr;
msgStr = '<p>Не изучены сценарии интерактивной модели ВС:</p><br/>';
for (let sc of scList.values())
msgStr += " - "+sc+"<br/>";
$("#dialog").html(msgStr);
$( function() {
$( "#dialog" ).dialog();
$('#dialog').dialog("option", "width", "auto"); $('#dialog').dialog("option", "height", "auto");
} );
}
}
function onLoadFunction() {
var H = document.getElementById('container_text').offsetHeight;
window.sessionStorage.setItem('contentsHeight', H);
if(typeof window.parent.objectHTMLLoaded !== "undefined")
window.parent.objectHTMLLoaded();
let timerId = setInterval(() => {
var h = document.getElementById('container_text').offsetHeight;
if(h != H) {
H = h;
window.sessionStorage.setItem('contentsHeight', H);
window.parent.updateDocHeight();
}
}, 50);
setTimeout(() => { clearInterval(timerId); }, 1000);
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,13 @@
#iv-container{position:fixed;width:100%;background:rgba(10,10,10,0.5);height:100%;top:0;left:0;display:none;z-index:1000}
.iv-container{overflow:hidden}
.iv-close{width:32px;height:32px;position:absolute;border: 1px solid white; right:20px;top:20px;background: rgba(124, 37, 41, 0.5); cursor:pointer;text-align:center;overflow:hidden;text-shadow:0 0 3px #6d6d6d;-webkit-transition:all ease 200ms;-moz-transition:all ease 200ms;-o-transition:all ease 200ms;transition:all ease 200ms}
.iv-close:after,.iv-close:before{content:"";height:2px;width:26px;background:white;position:absolute;left:3px;top:17px;margin-top:-2px;border-radius:2px}
.iv-close:before{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}
.iv-close:after{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}
.iv-close:hover{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg); background: rgb(124, 37, 41)}
.iv-image-view{position:absolute;height:100%;width:100%}
.iv-image-wrap{display:inline-block}
.iv-image-wrap:active{cursor:move}
.iv-large-image{cursor:move;max-width:100%;max-height:100%;position:absolute;background-color:#FFFFFF;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}
.iv-loader{top:50%;left:50%;border-radius:50%;width:32px;height:32px;z-index:100;margin-top:-16px;margin-left:-16px;font-size:5px;position:absolute;text-indent:-9999em;border-top:1em solid rgba(255, 255, 255, .2);border-right:1em solid rgba(255, 255, 255, .2);border-bottom:1em solid rgba(255, 255, 255, .2);border-left:1em solid #fff;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load8 1.1s infinite linear;animation:load8 1.1s infinite linear}
.iv-loader:after{width:10em;height:10em;border-radius:50%}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}

View File

@@ -0,0 +1,269 @@
!function(e,t)
{"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.ViewBigimg=t()}
(this,
function()
{
"use strict";
function l(){
var e=!1;try{addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){e=!0}}))}catch(e){}return e
}
function o(e,t)
{
this.container=e;
var i=function(){};
this.onStart=t.onStart||i,
this.onMove=t.onMove||i,
this.onEnd=t.onEnd||i,
//this.onKeyDown=t.onKeyDown||i,
this.onMouseWheel=t.onMouseWheel||i,
this.onClick=t.onClick||i,
this.onPinch=t.onPinch||i
}
o.prototype.init=function()
{
var r=this;
return this.startHandle=function(e)
{
e.preventDefault();
var t=e.type,
i="touchstart"===t?"touchmove":"mousemove",
n="touchstart"===t?"touchend":"mouseup",
o=e.clientX||e.touches[0].clientX,
a=e.clientY||e.touches[0].clientY;
function s(e)
{
e.preventDefault();
var t=e.clientX||e.touches[0].clientX,i=e.clientY||e.touches[0].clientY;
r.onMove(e,{dx:t-o,dy:i-a,mx:t,my:i})
}
!1!==r.onStart(e,{x:o,y:a})&&("touchstart"===t&&e.touches[1]&&r.onPinch(e),
document.addEventListener(i,s,!("touchmove"!==i||!l())&&{capture:!1,passive:!1}),
document.addEventListener(n,function e()
{
document.removeEventListener(i,s),
document.removeEventListener(n,e),
r.onEnd()
}))
},
this.container.addEventListener("touchstart",this.startHandle,!1),
this.container.addEventListener("mousedown",this.startHandle,!1),
//this.container.addEventListener("onkeydown",this.onKeyDown,!1),
//this.container.onkeydown = function(e){alert('!!close')},
//document.getElementById('iv-container').contentEditable=true,
//document.getElementById('iv-container').focus(),
this.container.addEventListener("mousewheel",this.onMouseWheel,!1),
this.container.addEventListener("click",this.onClick,!1),
this
},
o.prototype.destroy=function()
{
this.container.removeEventListener("touchstart",this.startHandle),
this.container.removeEventListener("mousedown",this.startHandle),
//this.container.removeEventListener("onkeydown",this.onKeyDown),
this.container.removeEventListener("mousewheel",this.onMouseWheel),
this.container.removeEventListener("click",this.onClick)
};
var r=function(e)
{return e.preventDefault()};
function n(e,t)
{
this.container=e,
this.options=Object.assign({},n.defaults,t),
this.zoomValue=100,
e.classList.add("iv-container"),
this.imageWrap=e.querySelector(".iv-image-wrap"),
this.closeBtn=e.querySelector(".iv-close")
}
return function()
{
var o=0;
if(!window.requestAnimationFrame){
for(var e=["ms","moz","webkit","o"],t=0;t<e.length&&!window.requestAnimationFrame;++t)
window.requestAnimationFrame=window[e[t]+"RequestAnimationFrame"],
window.cancelAnimationFrame=window[e[t]+"CancelAnimationFrame"]||window[e[t]+"CancelRequestAnimationFrame"];
window.requestAnimationFrame||(window.requestAnimationFrame=function(e)
{
var t=(new Date).getTime(),
i=Math.max(0,16-(t-o)),
n=window.setTimeout(function(){e(t+i)},i);
return o=t+i,n
}),
window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e)
{
clearTimeout(e)
})
}
}(),
n.prototype={constructor:n,_init:function()
{
var t,
h=this,
a=h.options,
c=!1,
e=h.container,
i=h.imageWrap,
s=0,
n=0;
h._imageSlider=new o(i,{
onStart:function()
{
if(!h.loaded)return!1;
if(!c){
this.imgWidth=h.imageDim.w*h.zoomValue/100,
this.imgHeight=h.imageDim.h*h.zoomValue/100,
this.curImgLeft=parseFloat(h.currentImg.style.left),
this.curImgTop=parseFloat(h.currentImg.style.top)}
},
onMove:function(e,t)
{
if(!c)
{
this.currentPos=t;
var i=this.curImgLeft+t.dx,
n=this.curImgTop+t.dy,
o=Math.max((h.containerDim.w-this.imgWidth)/2,0),
a=Math.max((h.containerDim.h-this.imgHeight)/2,0),
s=h.containerDim.w-o,
r=h.containerDim.h-a;
i=Math.min(i,o),
n=Math.min(n,a),
i+this.imgWidth<s&&(i=s-this.imgWidth),
n+this.imgHeight<r&&(n=r-this.imgHeight),
h.currentImg.style.left=i+"px",
h.currentImg.style.top=n+"px"
}
},
onEnd:function(){},
onMouseWheel:function(e){
if(a.zoomOnMouseWheel&&h.loaded){
var t=Math.max(-1,Math.min(1,e.wheelDelta)),
i=h.zoomValue*(100+30*t)/100; // 15*t
if(100<=i&&i<=a.maxZoom?s=0:s+=Math.abs(t),!(5<s)){e.preventDefault();var n=e.pageX,o=e.pageY;h.zoom(i,{x:n,y:o})}
}
},
//onKeyDown:function(e){
// alert('!!close');
// var keycode = e.keyCode || e.which;
// if(keycode === 27){ this._close(); }
//},
onClick:function(e){
0==n?(n=Date.now(),t={x:e.pageX,y:e.pageY}):(Date.now()-n<500&&Math.abs(e.pageX-t.x)<50&&Math.abs(e.pageY-t.y)<50&&(h.zoomValue==a.zoomValue?h.zoom(200):h.resetZoom()),n=0)
},
onPinch:function(e){
if(h.loaded){
var t=e.touches[0],
i=e.touches[1];
if(t&&i){c=!0;var a=Math.sqrt(Math.pow(i.pageX-t.pageX,2)+Math.pow(i.pageY-t.pageY,2)),s=h.zoomValue,r={x:(i.pageX+t.pageX)/2,y:(i.pageY+t.pageY)/2},
n=function(e){
e.preventDefault();
var t=e.touches[0],
i=e.touches[1],
n=Math.sqrt(Math.pow(i.pageX-t.pageX,2)+Math.pow(i.pageY-t.pageY,2)),o=s+(n-a)/2;h.zoom(o,r)
};
document.addEventListener("touchmove",n,!!l()&&{capture:!1,passive:!1}),
document.addEventListener("touchend",function e(){document.removeEventListener("touchmove",n),document.removeEventListener("touchend",e),c=!1})
}
}
}
}).init(),
a.refreshOnResize&&(this._resizeHandler=this.refresh.bind(this),
window.addEventListener("resize",this._resizeHandler)),
e.addEventListener("touchmove",r,!!l()&&{capture:!1,passive:!1}),
e.addEventListener("mousewheel",r),
this._close=this.hide.bind(this),
this.closeBtn.addEventListener("click",this._close)},
zoom:function(d,v){
var p=this,e=this.options.maxZoom,
g=this.zoomValue,
f=this.currentImg,
w=this.containerDim,
y=this.imageDim,
x=parseFloat(f.style.left),
M=parseFloat(f.style.top);
d=Math.round(Math.max(100,d)),
d=Math.min(e,d),v=v||{x:w.w/2,y:w.h/2},
p._clearFrames();
var z=0;
!function e(){
++z<20&&(p._zoomFrame=requestAnimationFrame(e));var t,i,n=(t=z,t/=20,-(d-(i=g))*(--t*t*t*t-1)+i),o=n/g,a=y.w*n/100,s=y.h*n/100,r=-((v.x-x)*o-v.x),h=-((v.y-M)*o-v.y),c=Math.max((w.w-a)/2,0),l=Math.max((w.h-s)/2,0),m=w.w-c,u=w.h-l;(r=Math.min(r,c))+a<m&&(r=m-a),(h=Math.min(h,l))+s<u&&(h=u-s),f.style.width=a+"px",f.style.height=s+"px",f.style.left=r+"px",f.style.top=h+"px",p.zoomValue=n
}()
},
_clearFrames:function(){cancelAnimationFrame(this._zoomFrame)},
resetZoom:function(){this.zoom(this.options.zoomValue)},
_calculateDimensions:function(){
var e,t,i=this.currentImg,
n=this.container,
o=i.getBoundingClientRect().width,
a=i.getBoundingClientRect().height,
s=n.getBoundingClientRect().width,
r=n.getBoundingClientRect().height;
this.containerDim={w:s,h:r};
var h=o/a;t=(e=a<o&&s<=r||s<h*r?s:h*r)/h,
this.imageDim={w:e,h:t},i.style.width=e+"px",i.style.height=t+"px",i.style.left=(s-e)/2+"px",i.style.top=(r-t)/2+"px",i.style.maxWidth="none",i.style.maxHeight="none"
},
refresh:function(){
this.loaded&&(this._calculateDimensions(),this.resetZoom())
},
show:function(e){
this.container.style.display="block",e&&this.load(e)
},
hide:function(){this.container.style.display="none"},
destroy:function(){
window.removeEventListener("resize",this._resizeHandler),
this._imageSlider.destroy(),
this.closeBtn.removeEventListener("click",this._close),
this.container.parentNode.removeChild(this.container),
this.closeBtn=null,
this.container=null,
this.imageWrap=null,
this.options=null,
this._close=null,
this._imageSlider=null,
this._resizeHandler=null
},
load:function(e){
var t=this,i=this.container,
n=this.imageWrap,
o=n.querySelector(".iv-large-image");
o&&n.removeChild(o);
var a,s=document.createElement("img");
function r(){
t.loaded=!0,
t.zoomValue=100,
s.style.display="block",
t.refresh(),
i.querySelector(".iv-loader").style.display="none"
}
s.classList.add("iv-large-image"),
s.src=e,
this.currentImg=s,
this.imageWrap.appendChild(s),
this.loaded=!1,
i.querySelector(".iv-loader").style.display="block",s.style.display="none",
!(a=s).compvare||void 0!==a.naturalWidth&&0===a.naturalWidth?s.onload=function(){r()}:r()
}
},
n.defaults={zoomValue:100,maxZoom:800,refreshOnResize:!0,zoomOnMouseWheel:!0},
function(e){
var t=document.createElement("div");
t.id="iv-container",
t.innerHTML='<div class="iv-loader"></div><div class="iv-image-view"><div class="iv-image-wrap"></div><div class="iv-close"></div></div>',
document.body.appendChild(t);
t.onkeypress = function(){alert('');};
//t.addEventListener("click",this._close)};
//t.onkeydown = function(e){
// alert('!!close');
// var keycode = e.keyCode || e.which;
// if(keycode === 27){ this._close(); }
//}
//document.getElementById('iv-container').contentEditable=true;
//document.getElementById('iv-container').focus();
var i=new n(t,e);
return i._init(),i
}
});

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -0,0 +1,292 @@
#include "console.h"
#include "s1000d_manager.h"
#include <iostream>
#include <QDebug>
#include <QDir>
using namespace std;
// -SCORM -p "FULL, 2p" E:\C++\Test\01\auk-01_mi-38.lyx E:\C++\Test\01
// -SCORM -p "FULL" E:\C++\Test\AUK-01\01_mi-38.lyx E:\C++\Test\AUK-01
// -SCORM E:\C++\Test\AUK02_Mi38\auk-02_mi-38.lyx E:\C++\Test\AUK02_Mi38
console::console()
{
}
int console::exec(int argc, char *argv[])
{
//Q_UNUSED(argc)
if(QString(argv[1]) == "-?" || QString(argv[1]) == "-h" || QString(argv[1]) == "/h" || argc < 3)
{ printHelp(); return 0; }
exportSCORM = exportS1000D = exportSingleSCORM = false;
for(int i = 1; i < argc-2; i++)
{
if(QString(argv[i]).toUpper() == "-SCORM") exportSCORM = true;
if(QString(argv[i]).toUpper() == "-SINGLESCORM") exportSingleSCORM = true;
if(QString(argv[i]).toUpper() == "-S1000D") exportS1000D = true;
if(QString(argv[i]).toLower() == "-p" && (i+1<argc-2))
{
QStringList l = QString(argv[i+1]).replace(" ", "").replace("\"","").split(",");
packageNames.append(l);
i++;
}
}
if(!exportSCORM && !exportS1000D && !exportSingleSCORM) {exportSCORM = exportS1000D = true;}
lyxFile = QString(argv[argc-2]); dstPath = QString(argv[argc-1]);
QFileInfo lyxFileInfo(lyxFile); QDir dstdir(dstPath);
qDebug() << "Конвертация " << lyxFileInfo.fileName() << ":";
if(!lyxFileInfo.exists()) {
qDebug() << " Файл LyX не найден: " << lyxFile;
qDebug() << " Запустите конвертер с параметром -h для описания.";
return 1;
}
if(!dstdir.exists()) {
qDebug() << " Папка назначения не найдена: " << dstPath;
qDebug() << " Запустите конвертер с параметром -h для описания.";
return 1;
}
QString pckFileName = lyxFile;
pckFileName.replace(".lyx", ".xml");
if(!QFileInfo::exists(pckFileName)) {
qDebug() << " Файл пакетов в папке АУК не найден: " << pckFileName;
qDebug() << " Запустите конвертер в оконном режиме и создайте конфигурацию пакетов экспорта.";
return 1;
}
SM.isConsole = true;
SM.rootLyXfile = lyxFile;
SM.LoadPackagesXML();
QStringList configPackageNames;
foreach(S1000D_Manager::PackageStruct pack, SM.packages)
configPackageNames.append(pack.cfgName);
if(packageNames.count() == 0)
packageNames = configPackageNames;
else {
foreach(QString n, packageNames)
if(!configPackageNames.contains(n)) {
qDebug() << " Пакет " << n << " не сконфигурирован.";
qDebug() << " Запустите конвертер в оконном режиме и создайте конфигурацию пакетов экспорта.";
return 1;
}
}
printf(" LyX -> HTML (%d sec) .. ", SM.timeConvert); std::cout << std::flush;
QElapsedTimer timer; timer.start();
if(!lyx.Import(&SM, lyxFile, NULL)) {
printf("ОШИБКА импорта LyX.\n");
return 1;
}
SM.LoadPackagesXML();
if(!isCodingFilled()) {
// printf("Ошибка: кодирование S1000D не заполнено.\n");
// return 1;
fillDefaultCoding();
}
html.Generate(&SM, false, NULL);
SM.LoadPackagesXML();
SM.timeConvert = (int)timer.elapsed()/1000;
SM.SaveProject();
printf("Ok\n");
if(exportSCORM) {
printf(" SCORM (%d sec):\n", SM.timeSCORM*packageNames.count());
if(packageNames.count() == 0)
printf("Пакеты не заданы. Пропущено.\n");
else
foreach(S1000D_Manager::PackageStruct pack, SM.packages)
if(packageNames.contains(pack.cfgName))
{
for(int i=0;i<SM.items.count();i++)
SM.items[i].toExport = SM.items[i].inPackages.contains(pack.cfgName);
QString s = " \""+pack.cfgName+"\" -> "+pack.exportFileName+"_SCORM"+".zip .. " ;
printf("%s", s.toLocal8Bit().toStdString().c_str()); std::cout << std::flush;
QApplication::processEvents();
bool res = SM.exportSCORM(dstPath, pack.exportFileName, pack.title, NULL);
if(res)
printf("Ok\n");
else
printf("ОШИБКА экспорта\n");
}
}
if(exportSingleSCORM) {
printf(" Single SCORM (%d sec):\n", SM.timeSingleSCORM*packageNames.count());
if(packageNames.count() == 0)
printf("Пакеты не заданы. Пропущено.\n");
else
{
for(int i=0;i<SM.items.count();i++)
SM.items[i].toExport = true;
QString s = " -> "+SM.packages[0].exportFileName+" .. " ;
printf("%s", s.toLocal8Bit().toStdString().c_str()); std::cout << std::flush;
QApplication::processEvents();
bool res = SM.exportSingleSCORM(dstPath, SM.packages[0].exportFileName, SM.packages[0].title, NULL);
if(res)
printf("Ok\n");
else
printf("ОШИБКА экспорта\n");
}
}
if(exportS1000D) {
printf(" S1000D (%d sec):\n", SM.timeS1000D*packageNames.count()) ;
if(packageNames.count() == 0)
printf("Пакеты не заданы. Пропущено.\n");
else
foreach(S1000D_Manager::PackageStruct pack, SM.packages)
if(packageNames.contains(pack.cfgName))
{
for(int i=0;i<SM.items.count();i++)
SM.items[i].toExport = SM.items[i].inPackages.contains(pack.cfgName);
QString s = " \""+pack.cfgName+"\" -> "+pack.exportFileName+".zip .. ";
printf("%s", s.toLocal8Bit().toStdString().c_str()); std::cout << std::flush;
QApplication::processEvents();
bool res = SM.exportS1000D(dstPath, pack.exportFileName, pack.title, NULL);
if(res)
printf("Ok\n");
else
printf("ОШИБКА экспорта\n");
}
}
SM.SaveProject(); //SM.SavePackagesXML();
return 0;
}
void console::printHelp()
{
setlocale(LC_ALL,"Russian");
qDebug() << "Конвертер АУК с формата LyX в пакеты стандартов S1000D и SCORM\n";
qDebug() << "Для запуска в оконном режиме запустите без параметров.";
qDebug() << "Формирование пакетов в консольном режиме выполняется со следующими параметрами:";
qDebug() << "CONVERTER [-SCORM] [-S1000D] [-p \"package1, ...\"] lyxfile destpath\n";
qDebug() << " -SCORM - тип формируемого пакета - SCORM;";
qDebug() << " -SingleSCORM - тип формируемого пакета - единый пакет SCORM по всем категориям (пакетам);";
qDebug() << " -S1000D - тип формируемого пакета - S1000D, без явного указания формируются оба типа; ";
qDebug() << " -p - сформировать пакеты с именами package1,... (список через запятую в \"кавычках\");";
qDebug() << " без данной опции формируются все созданные в оконном режиме пакеты;";
qDebug() << " lyxfile - путь и имя файла LyX;";
qDebug() << " dstpath - путь для размещения сформировнных пакетов.";
}
QString console::delYYY(QString st) {
return st.replace("X", "").replace("Y", "").replace("N", "");
}
bool console::isCodingFilled() {
tmpStrList.clear(); tmpIntList.clear();
if(SM.items.count() == 0) return false;
for(int i=0;i<SM.items.count();i++)
if(SM.items[i].parent == -1)
if(!isCodingFilledRecurs(i))
return false;
return true;
}
bool console::isCodingFilledRecurs(int ind) {
SM.setCurItem(ind);
QString fCode, title;
if(SM.item->moduleType == mtPM) {
QString pmTitle, modelIdentCode, pmIssuer, pmNumber, pmVolume;
title = pmTitle = SM.getNodeText("identAndStatusSection.pmAddress.pmAddressItems.pmTitle");
modelIdentCode = SM.getNodeAttr("identAndStatusSection.pmAddress.pmIdent.pmCode", "modelIdentCode");
pmIssuer = SM.getNodeAttr("identAndStatusSection.pmAddress.pmIdent.pmCode", "pmIssuer");
pmNumber = SM.getNodeAttr("identAndStatusSection.pmAddress.pmIdent.pmCode", "pmNumber");
pmVolume = SM.getNodeAttr("identAndStatusSection.pmAddress.pmIdent.pmCode", "pmVolume");
if(pmTitle.isEmpty() || delYYY(pmIssuer).isEmpty() || delYYY(pmNumber).isEmpty() || delYYY(pmVolume).isEmpty()) {
return false;
}
fCode = SM.pmIdentString("identAndStatusSection.pmAddress.pmIdent");
}
if(SM.item->moduleType == mtDM) {
QString modelIdentCode = SM.getNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "modelIdentCode");
QString systemDiffCode = SM.getNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "systemDiffCode");
QString systemCode = SM.getNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "systemCode");
QString subSystemCode = SM.getNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "subSystemCode");
QString subSubSystemCode = SM.getNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "subSubSystemCode");
QString assyCode = SM.getNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "assyCode");
QString disassyCode = SM.getNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "disassyCode");
QString disassyCodeVariant = SM.getNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "disassyCodeVariant");
QString infoCode = SM.getNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "infoCode");
QString infoCodeVariant = SM.getNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "infoCodeVariant");
QString itemLocationCode = SM.getNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "itemLocationCode");
QString learnCode = SM.getNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "learnCode");
QString learnEventCode = SM.getNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "learnEventCode");
QString techName = SM.getNodeText("identAndStatusSection.dmAddress.dmAddressItems.dmTitle.techName");
//QString infoName = SM.getNodeText("identAndStatusSection.dmAddress.dmAddressItems.dmTitle.infoName");
if(delYYY(modelIdentCode).isEmpty() || delYYY(systemDiffCode).isEmpty() || delYYY(systemCode).isEmpty() || delYYY(subSystemCode).isEmpty() || delYYY(subSubSystemCode).isEmpty() ||
delYYY(assyCode).isEmpty() || delYYY(disassyCode).isEmpty() || delYYY(disassyCodeVariant).isEmpty() || delYYY(infoCode).isEmpty() || delYYY(infoCodeVariant).isEmpty() ||
delYYY(itemLocationCode).isEmpty() || delYYY(learnCode).isEmpty() || delYYY(learnEventCode).isEmpty() || delYYY(techName).isEmpty() ) {
return false;
}
title = techName;
fCode = SM.dmIdentString("identAndStatusSection.dmAddress.dmIdent");
}
int tmpInd = tmpStrList.indexOf(fCode);
if(tmpInd != -1) {
SM.setCurItem(tmpIntList[tmpInd]);
QString title2;
if(SM.item->moduleType == mtDM)
title2 = SM.getNodeText("identAndStatusSection.dmAddress.dmAddressItems.dmTitle.techName");
else
title2 = SM.getNodeText("identAndStatusSection.pmAddress.pmAddressItems.pmTitle");
return false;
}
tmpStrList.append(fCode); tmpIntList.append(ind);
for(int i=0;i<SM.items[ind].child.count();i++)
if(!isCodingFilledRecurs(SM.items[ind].child[i]))
return false;
return true;
}
void console::fillDefaultCoding() {
dmCnt = pmCnt = 0;
for (int i = 0; i < SM.items.count(); i++)
if (SM.items[i].parent == -1)
fillDefaultCodingRecurs(i);
}
void console::fillDefaultCodingRecurs(int ind) {
SM.setCurItem(ind);
QString fCode, title;
if (SM.item->moduleType == mtPM) {
SM.setNodeAttr("identAndStatusSection.pmAddress.pmIdent.pmCode", "modelIdentCode", QString::number(pmCnt++));
SM.setNodeAttr("identAndStatusSection.pmAddress.pmIdent.pmCode", "pmIssuer", "ORIG");
SM.setNodeAttr("identAndStatusSection.pmAddress.pmIdent.pmCode", "pmNumber", "GTC00");
SM.setNodeAttr("identAndStatusSection.pmAddress.pmIdent.pmCode", "pmVolume", "00");
SM.item->fileCode = SM.pmIdentString("identAndStatusSection.pmAddress.pmIdent");
}
if (SM.item->moduleType == mtDM) {
SM.setNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "modelIdentCode", "DinamikaEDoc");
SM.setNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "systemDiffCode", "A");
SM.setNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "systemCode", "00");
SM.setNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "subSystemCode", "0");
SM.setNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "subSubSystemCode", QString::number(dmCnt++));
SM.setNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "assyCode", "00");
SM.setNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "disassyCode", "00");
SM.setNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "disassyCodeVariant", "A");
SM.setNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "infoCode", "010");
SM.setNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "infoCodeVariant", "A");
SM.setNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "itemLocationCode", "A");
SM.setNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "learnCode", "T40");
SM.setNodeAttr("identAndStatusSection.dmAddress.dmIdent.dmCode", "learnEventCode", "C");
SM.item->fileCode = SM.dmIdentString("identAndStatusSection.dmAddress.dmIdent");
}
for (int i = 0; i < SM.items[ind].child.count(); i++)
fillDefaultCodingRecurs(SM.items[ind].child[i]);
}

View File

@@ -0,0 +1,39 @@
#ifndef CONSOLE_H
#define CONSOLE_H
#include <QObject>
#include "s1000d_manager.h"
#include "editormainwindow.h"
#include "ru_const.h"
#include "lyx.h"
#include "html.h"
#include <QElapsedTimer>
class console
{
//Q_OBJECT
public:
console();
int exec(int argc, char *argv[]);
void printHelp();
QString lyxFile, dstPath;
QList<QString> packageNames;
bool exportSCORM, exportS1000D, exportSingleSCORM;
QString delYYY(QString st);
bool isCodingFilled();
bool isCodingFilledRecurs(int ind);
void fillDefaultCoding();
void fillDefaultCodingRecurs(int ind);
S1000D_Manager SM;
LyX lyx;
HTML html;
RU_Const ru_const;
QStringList tmpStrList;
QList<int> tmpIntList;
int dmCnt;
int pmCnt;
};
#endif // CONSOLE_H

View File

@@ -0,0 +1,6 @@
[.ShellClassInfo]
IconResource=C:\Windows\System32\SHELL32.dll,84
[ViewState]
Mode=
Vid=
FolderType=Generic

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,211 @@
#ifndef EDITORMAINWINDOW_H
#define EDITORMAINWINDOW_H
#include <QMainWindow>
#include <QLineEdit>
#include <QListWidget>
#include "s1000d_manager.h"
#include "ru_const.h"
#include "lyx.h"
#include "html.h"
#include "exportdialog.h"
#include "splashform.h"
#include <QTreeWidgetItem>
#include <QAbstractButton>
#include <QElapsedTimer>
QT_BEGIN_NAMESPACE
namespace Ui { class EditorMainWindow; }
QT_END_NAMESPACE
// figure 552
class EditorMainWindow : public QMainWindow
{
Q_OBJECT
public:
QString version = "вер. 1.18b";
EditorMainWindow(QWidget *parent = nullptr);
~EditorMainWindow();
bool isProjectOpened;
bool isProjectModifyed;
S1000D_Manager SM;
LyX lyx;
HTML html;
RU_Const ru_const;
struct { QString lastOpenedFile; } config;
QDialog *logDialog; QListWidget* logDialogList;
SplashForm* splash;
ExportDialog* exportDlg;
int bugCnt=0;
QIcon iconFolder = QIcon(":new/Icons/folder.png");
QIcon iconFolder_ex = QIcon(":new/Icons/folder_exclamation.png");
QIcon iconDoc_head_blue = QIcon(":new/Icons/doc_head_blue.png");
QIcon iconDoc_head_blue_ex = QIcon(":new/Icons/doc_head_blue_exclamation.png");
QIcon iconSheep_up_arrow = QIcon(":/new/Icons/sheep_up_arrow.png");
bool DBG=true;
bool allowCodePageToSetItems = true;
bool allowCodePageToCallOnChangeComboBox = true;
bool allowDMCodePageToSetItems = true;
bool allowDMCodePageCallOnChangeComboBox = false;
bool allowDMLearningPageToSetItems = true;
bool allowDMLearningPageCallOnChangeLists = true;
bool isClearing = false;
QStringList tmpStrList;
QList<int> tmpIntList;
void openLyXFile(QString fileName);
void Save();
bool event(QEvent*);
bool eventFilter(QObject* obj, QEvent* ev);
void setIsModifyed(bool flag);
void fillTreeWidgetWithItems();
QList<QTreeWidgetItem *> makeTreeWidgetFromItems(QTreeWidgetItem *parent, QList<int> list);
void updateTreeWidgetNames();
void updateTreeWidgetNamesRecurs(QTreeWidgetItem *node);
void fillItemsFromTreeWidget(int parentInd, QTreeWidgetItem *node);
void treeWidgetNormalizeDMsAfterDrop(QTreeWidgetItem *node);
QTreeWidgetItem* getTreeWidgetItemByItemIndexRecurs(int itemInd, QTreeWidgetItem *node);
QTreeWidgetItem* getTreeWidgetItemByItemIndex(int itemInd);
QString delYYY(QString st);
void fillLearningPageWithData();
int getlcInteractionFromQuestRow(int row);
bool isCodingFilled();
bool isCodingFilledRecurs(QTreeWidgetItem* treeitem);
void fillDefaultCoding();
void fillDefaultCodingRecurs(QTreeWidgetItem* treeitem);
int pmCnt, dmCnt;
Q_SLOT void exportS1000D();
Q_SLOT void exportSCORM();
Q_SLOT void exportSingleSCORM();
Q_SLOT void exportEDL();
private slots:
void on_actionOpenFolder_triggered();
void on_treeWidget_itemSelectionChanged();
void on_actionAddPM_triggered();
void on_actionAddDM_triggered();
void on_splitter_splitterMoved(int pos, int index);
void on_actionSwitchToCodingPage_triggered();
void on_actionSwitchToDataPage_triggered();
void on_actionSaveProject_triggered();
void pmc_btn_pmIssuerPressed();
void pmc_btn_modelIdentCodePressed();
void pmc_cb_pmNumABC_Changed(int ind);
void pmc_cb_pmNum_Changed(int ind);
void pmc_cb_pmVolume_Changed(int ind);
void codePagePM_TitleChanged();
void codePagePM_EditChanged(QString newText);
void codePageDM_TitleChanged();
void codePageDM_EditChanged(QString newText);
void on_actionDeleteItem_triggered();
void on_dmc_btnBox_IsLearningDM_clicked(QAbstractButton *button);
void on_dmc_cb_InfoSets_currentIndexChanged(int index);
void on_dml_btnBox_question_clicked(QAbstractButton *aButton);
void on_dml_btnBox_answer_clicked(QAbstractButton *aButton);
void on_dml_lw_question_currentRowChanged(int newRow);
void on_dml_lw_question_itemChanged(QListWidgetItem *item);
void on_dml_lw_answer_itemChanged(QListWidgetItem *item);
void on_actionLyXImport_triggered();
void on_action_refreshFromLyX_triggered();
void on_actionOpenInBrowser_triggered();
void on_actionExit_triggered();
void on_S1000D_doc_dmc_linkActivated(const QString &link);
void on_label_33_linkActivated(const QString &link);
void on_action_regenHTML_triggered();
void on_action_Export_triggered();
void on_label_34_linkActivated(const QString &link);
void on_dmc_btn_Qual_clicked(bool checked);
void on_pmc_btn_Qual_clicked(bool checked);
void treeWidgetDrop();
private:
Ui::EditorMainWindow *ui;
void resizeEvent(QResizeEvent*);
};
#endif // EDITORMAINWINDOW_H
/*
<security securityClassification="01"/>
<issueInfo inWork="00" issueNumber="XXX"/>
<restrictionInfo> <copyright> <copyrightPara>© 2017 АО «Вертолеты России»
</copyrightPara></copyright></restri
<responsiblePartnerCompany enterpriseCode="CAGEC">
<enterpriseName>АО «ВСК»</enterpriseName>
</responsiblePartnerCompany>
<originator enterpriseCode="CAGEC">
<enterpriseName>Наименование компании-разработчика</
enterpriseName>
</originator>
Ссылки на модули данных [с BRDP-S1-00102 по BRDPS1-
00104, BRDP-S1-00107]
Использование атрибутов ссылок на модули данных dmRef:
- applicRefId — не обязательный
- id — запрещен
- changeMark, changeType, reasonForUpdateRefIds — запрещены
- referredFragment — запрещен
- securityClassification, commercialClassification — запрещены
- authorityName, authorityDocument — запрещены
Использование дочерних элементов элемента dmRef:
- behavior — запрещен
- issueInfo — запрещен
- language — запрещен
- dmTitle — обязательный
- issueDate — запрещен
Использование заголовков [BRDP-S1-00118, BRDP-S1-00120]
Контексты использования элемента title:
- элемент levelledPara — не обязательно, можно включать в уровнях с 6 по 8
- элемент table — обязательно
- элемент multimedia — обязательно
- элемент proceduralStep — не обязательно, можно включать в уровнях с 6 по 8
Использование иллюстраций и активных участков/хотспотов
[BRDP-S1-00125, BRDP-S1-00132]
Использование атрибутов элемента hotspot:
- applicRefId — не обязательный
- id — обязательный
- changeMark, changeType, reasonForUpdateRefIds — запрещены
- applicationStructureIdent — обязательный (уникальный идентификатор в SVG)
- applicationStructureName — обязательный (например, обозначение выноски 1,2,3 или
обозначение)
- hotspotType — обязательный (callout — выноска, detail — контур детали/элемента)
- hotspotTitle — обязательный
- objectDescr — не обязательный
- objectCoordinates — запрещен
- visibility — не обязательный
- securityClassification, commercialClassification, caveat — запрещены
BRDP-S1-00133]
9.1 Объявление мультимедийного объекта
Использование вложенных элементов multimedia:
- title — обязательный
Использование атрибутов элемента multimediaObject:
- fullscreen — запрещен
- multimediaObjectWidth — необязательный
- autoPlay — запрещен
- multimediaObjectHeight — необязательный
- multimediaType — обязательный
- runTimeDuration — запрещен
- showPluginControls — запрещен
Указание типа мультимедийного объекта выполняется с использованием атрибута
multimediaType и элемента parameter, смотри (Таблица 10).
Наличие одного элемента parameter обязательно, недопустимы 2 или более
элементов parameter c атрибутом parameterIdent=”contenttype”.
Таблица 10 Использование мультимедийных объектов. Идентификация типа объекта
*/

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,315 @@
#include "exportdialog.h"
#include "ui_exportdialog.h"
#include <QDebug>
#include <QFileDialog>
#include <QTimer>
#include <QCloseEvent>
#include <QMessageBox>
ExportDialog::ExportDialog(QWidget *parent, S1000D_Manager* _SM) :
QDialog(parent),
ui(new Ui::ExportDialog)
{
ui->setupUi(this);
ui->dlgTree->setFocus();
SM = _SM;
flagCanSetCheck = true;
}
ExportDialog::~ExportDialog()
{
delete ui;
}
void ExportDialog::on_btnCloseDlg_clicked()
{
this->close();
}
void ExportDialog::closeEvent(QCloseEvent *event)
{
SM->SavePackagesXML();
QString packFNCheck = "";
QStringList packFNList;
foreach(S1000D_Manager::PackageStruct pack, SM->packages)
if(packFNList.contains(pack.exportFileName))
{packFNCheck = pack.exportFileName; break;}
else
packFNList.append(pack.exportFileName);
if (packFNCheck == "") {
//SM->SavePackagesXML();
event->accept();
} else {
QMessageBox::warning(this, tr("Предупреждение"), tr("Дублирование имен файлов пакетов конфигурации.\n"),
QMessageBox::Ok, QMessageBox::Ok);
//event->ignore();
}
}
void ExportDialog::on_btnExportS1000D_clicked()
{
Q_EMIT actionS1000Dexport();
}
void ExportDialog::on_btnExportSCORM_clicked()
{
Q_EMIT actionSCORMexport();
}
void ExportDialog::on_btnExportEDL_clicked()
{
Q_EMIT actionEDLexport();
}
void ExportDialog::on_btnExportSingleSCORM_clicked()
{
Q_EMIT actionSingleSCORMexport();
}
void ExportDialog::on_dlgTree_itemChanged(QTreeWidgetItem *item, int)
{
QString nm = item->text(0);
if(item->checkState(0) == Qt::Checked) {
if(item->parent() != nullptr)
item->parent()->setCheckState(0, Qt::Checked);
} else {
for(int i=0;i<item->childCount();i++)
item->child(i)->setCheckState(0, Qt::Unchecked);
}
if(ui->cbPackageList->currentIndex() < 0) return;
if(ui->cbPackageList->currentText() != ui->cbPackageList->itemText(ui->cbPackageList->currentIndex()))
return;
if(!flagCanSetCheck) return;
if(item->checkState(0) == Qt::Checked) {
if(!SM->items[item->data(0, Qt::UserRole).toInt()].inPackages.contains(SM->packages[ui->cbPackageList->currentIndex()].cfgName))
SM->items[item->data(0, Qt::UserRole).toInt()].inPackages.append(SM->packages[ui->cbPackageList->currentIndex()].cfgName);
} else {
if(SM->items[item->data(0, Qt::UserRole).toInt()].inPackages.contains(SM->packages[ui->cbPackageList->currentIndex()].cfgName))
SM->items[item->data(0, Qt::UserRole).toInt()].inPackages.removeOne(SM->packages[ui->cbPackageList->currentIndex()].cfgName);
}
}
void ExportDialog::fillTree(QTreeWidget* tree) {
ui->dlgTree->clear();
flagCanSetCheck = false;
for(int i=0;i<tree->topLevelItemCount();i++) {
QTreeWidgetItem* newItem = new QTreeWidgetItem();
ui->dlgTree->addTopLevelItem(newItem);
fillTreeItem(tree->topLevelItem(i), newItem);
}
flagCanSetCheck = true;
ui->dlgTree->expandAll();
ui->cbPackageList->setCurrentIndex(0);
}
void ExportDialog::fillTreeItem(QTreeWidgetItem* treeItem, QTreeWidgetItem* dlgItem) {
QString txt = treeItem->text(0); txt.replace("\n", " ");
dlgItem->setText(0, txt);
dlgItem->setData(0, Qt::UserRole, treeItem->data(0, Qt::UserRole));
dlgItem->setFlags(dlgItem->flags() | Qt::ItemIsUserCheckable);
dlgItem->setCheckState(0, Qt::Checked);
dlgItem->setIcon(0, treeItem->icon(0));
for(int i=0;i<treeItem->childCount();i++) {
QTreeWidgetItem* newItem = new QTreeWidgetItem();
dlgItem->addChild(newItem);
fillTreeItem(treeItem->child(i), newItem);
}
}
QTreeWidget* ExportDialog::getDlgTreeWidget() {
return ui->dlgTree;
}
void ExportDialog::setPackName(QString packname) {
ui->lePackName->setText(packname);
}
QString ExportDialog::getPackName() {
return ui->lePackName->text();
}
void ExportDialog::setPackDir(QString packdir) {
ui->lePackDir->setText(packdir);
}
QString ExportDialog::getPackDir() {
return ui->lePackDir->text();
}
void ExportDialog::setPackTitle(QString packtitle) {
ui->lePackTitle->setText(packtitle);
}
QString ExportDialog::getPackTitle() {
return ui->lePackTitle->text();
}
int ExportDialog::getEDType() {
return ui->cbEDType->currentIndex();
}
void ExportDialog::on_btnChooseDir_clicked()
{
QString dir = QFileDialog::getExistingDirectory(this, tr("Выберите папку размещения пакета"), getPackDir());
if(dir != "")
ui->lePackDir->setText(dir);
}
void ExportDialog::setS1000Dlabel(QString text, QString color) {
ui->lblS1000D_result->setText(text);
ui->lblS1000D_result->setStyleSheet("QLabel { color: "+color+"; }");
QTimer::singleShot(3000, this, SLOT(hidelabels()));
}
void ExportDialog::setSCORMlabel(QString text, QString color) {
ui->lblSCORM_result->setText(text);
ui->lblSCORM_result->setStyleSheet("QLabel { color: "+color+"; }");
QTimer::singleShot(3000, this, SLOT(hidelabels()));
}
void ExportDialog::setEDLlabel(QString text, QString color) {
ui->lblEDL_result->setText(text);
ui->lblEDL_result->setStyleSheet("QLabel { color: "+color+"; }");
QTimer::singleShot(3000, this, SLOT(hidelabels()));
}
void ExportDialog::setSingleSCORMlabel(QString text, QString color) {
ui->lblSingleSCORM_result->setText(text);
ui->lblSingleSCORM_result->setStyleSheet("QLabel { color: "+color+"; }");
QTimer::singleShot(3000, this, SLOT(hidelabels()));
}
void ExportDialog::hidelabels() {
ui->lblS1000D_result->setText("");
ui->lblSCORM_result->setText("");
ui->lblEDL_result->setText("");
ui->lblSingleSCORM_result->setText("");
}
void ExportDialog::on_cbPackageList_currentIndexChanged(int index)
{
if(ignore_cbPackageList_events) return;
QList<QTreeWidgetItem*> treeList;
for(int i=0;i<ui->dlgTree->topLevelItemCount();i++)
treeList.append(ui->dlgTree->topLevelItem(i));
QTreeWidgetItem* treeItem;
while(!treeList.isEmpty()) {
treeItem = treeList.takeFirst();
flagCanSetCheck = false;
if(index >= 0) {
if(SM->items[treeItem->data(0, Qt::UserRole).toInt()].inPackages.contains(SM->packages[index].cfgName, Qt::CaseInsensitive))
treeItem->setCheckState(0, Qt::Checked);
else
treeItem->setCheckState(0, Qt::Unchecked);
}
else
treeItem->setCheckState(0, Qt::Checked);
flagCanSetCheck = true;
for(int i=0;i<treeItem->childCount();i++)
treeList.append(treeItem->child(i));
}
curPackIndex = index;
ignore_cbPackageList_events = true;
if(index >= 0) {
ui->lePackTitle->setText(SM->packages[index].title);
ui->lePackName->setText(SM->packages[index].exportFileName);
}
else {
//ui->lePackTitle->setText();
//ui->lePackName->setText();
}
ignore_cbPackageList_events = false;
}
void ExportDialog::setPackageListIndex(int ind) {
on_cbPackageList_currentIndexChanged(ind);
}
void ExportDialog::on_cbPackageList_currentTextChanged(QString _)
{
if(ignore_cbPackageList_events) return;
ui->btnPackageAdd->setEnabled(true);
}
void ExportDialog::fillPackageList()
{
ignore_cbPackageList_events = true;
ui->cbPackageList->clear();
foreach(S1000D_Manager::PackageStruct pack, SM->packages)
ui->cbPackageList->addItem(pack.cfgName);
ignore_cbPackageList_events = false;
}
void ExportDialog::on_btnPackageAdd_clicked()
{
foreach(S1000D_Manager::PackageStruct pack, SM->packages) {
if(pack.cfgName == ui->cbPackageList->currentText())
{
QMessageBox::warning(this, tr("Ошибка"), tr("Дублирование имен пакетов конфигурации.\n"),
QMessageBox::Ok, QMessageBox::Ok);
return;
}
}
S1000D_Manager::PackageStruct pack;
pack.cfgName = ui->cbPackageList->currentText();
pack.title = ui->lePackTitle->text(); pack.exportFileName = ui->lePackName->text();
SM->packages.append(pack);
QList<QTreeWidgetItem*> treeList;
for(int i=0;i<ui->dlgTree->topLevelItemCount();i++)
treeList.append(ui->dlgTree->topLevelItem(i));
QTreeWidgetItem* treeItem;
while(!treeList.isEmpty()) {
treeItem = treeList.takeFirst();
if(treeItem->checkState(0) == Qt::Checked)
if(!SM->items[treeItem->data(0, Qt::UserRole).toInt()].inPackages.contains(pack.cfgName))
SM->items[treeItem->data(0, Qt::UserRole).toInt()].inPackages.append(pack.cfgName);
for(int i=0;i<treeItem->childCount();i++)
treeList.append(treeItem->child(i));
}
fillPackageList(); ui->cbPackageList->setCurrentIndex(SM->packages.count()-1);
ui->btnPackageAdd->setEnabled(false);
ui->lePackName->setFocus();
}
void ExportDialog::on_btnPackageDel_clicked()
{
if(ui->cbPackageList->currentIndex() < 0) return;
QList<QTreeWidgetItem*> treeList;
for(int i=0;i<ui->dlgTree->topLevelItemCount();i++)
treeList.append(ui->dlgTree->topLevelItem(i));
QTreeWidgetItem* treeItem;
while(!treeList.isEmpty()) {
treeItem = treeList.takeFirst();
if(SM->items[treeItem->data(0, Qt::UserRole).toInt()].inPackages.contains(SM->packages[ui->cbPackageList->currentIndex()].cfgName, Qt::CaseInsensitive))
SM->items[treeItem->data(0, Qt::UserRole).toInt()].inPackages.removeOne(SM->packages[ui->cbPackageList->currentIndex()].cfgName);
for(int i=0;i<treeItem->childCount();i++)
treeList.append(treeItem->child(i));
}
SM->packages.removeAt(ui->cbPackageList->currentIndex());
ui->cbPackageList->removeItem(ui->cbPackageList->currentIndex());
}
void ExportDialog::on_cbPackageList_editTextChanged(const QString &arg1)
{
ui->btnPackageAdd->setEnabled(true);
}
void ExportDialog::on_lePackName_textEdited(const QString &arg1)
{
if(curPackIndex == -1) return;
SM->packages[curPackIndex].exportFileName = arg1;
}
void ExportDialog::on_lePackTitle_textEdited(const QString &arg1)
{
if(curPackIndex == -1) return;
SM->packages[curPackIndex].title = arg1;
}

View File

@@ -0,0 +1,72 @@
#ifndef EXPORTDIALOG_H
#define EXPORTDIALOG_H
#include <QDialog>
#include <QTreeWidget>
#include "s1000d_manager.h"
namespace Ui {
class ExportDialog;
}
class ExportDialog : public QDialog
{
Q_OBJECT
public:
explicit ExportDialog(QWidget *parent = nullptr, S1000D_Manager* _SM = nullptr);
~ExportDialog();
void setPackName(QString packname);
QString getPackName();
void setPackDir(QString packdir);
QString getPackDir();
void setPackTitle(QString packtitle);
QString getPackTitle();
int getEDType();
void fillTree(QTreeWidget* tree);
void fillTreeItem(QTreeWidgetItem* treeItem, QTreeWidgetItem* dlgItem);
QTreeWidget* getDlgTreeWidget();
void setS1000Dlabel(QString text, QString color);
void setSCORMlabel(QString text, QString color);
void setEDLlabel(QString text, QString color);
void setSingleSCORMlabel(QString text, QString color);
void fillPackageList();
void setPackageListIndex(int ind);
bool flagCanSetCheck;
bool ignore_cbPackageList_events=false;
int curPackIndex = -1;
private slots:
void on_btnCloseDlg_clicked();
void on_btnExportS1000D_clicked();
void on_btnExportSCORM_clicked();
void on_btnExportEDL_clicked();
void on_btnExportSingleSCORM_clicked();
void on_dlgTree_itemChanged(QTreeWidgetItem *item, int column);
void on_btnChooseDir_clicked();
void on_cbPackageList_currentIndexChanged(int index);
void on_cbPackageList_currentTextChanged(QString _);
void hidelabels();
void on_btnPackageAdd_clicked();
void on_btnPackageDel_clicked();
void closeEvent(QCloseEvent *event);
void on_cbPackageList_editTextChanged(const QString &arg1);
void on_lePackName_textEdited(const QString &arg1);
void on_lePackTitle_textEdited(const QString &arg1);
private:
Ui::ExportDialog *ui;
S1000D_Manager* SM;
Q_SIGNALS:
void actionS1000Dexport();
void actionSCORMexport();
void actionEDLexport();
void actionSingleSCORMexport();
};
#endif // EXPORTDIALOG_H

View File

@@ -0,0 +1,845 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ExportDialog</class>
<widget class="QDialog" name="ExportDialog">
<property name="windowModality">
<enum>Qt::ApplicationModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1019</width>
<height>617</height>
</rect>
</property>
<property name="windowTitle">
<string>Конвертер АУК - экспорт</string>
</property>
<property name="windowIcon">
<iconset resource="S1000DResources.qrc">
<normaloff>:/new/Icons/doc_config.ico</normaloff>:/new/Icons/doc_config.ico</iconset>
</property>
<property name="styleSheet">
<string notr="true">background: white</string>
</property>
<property name="modal">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="topMargin">
<number>0</number>
</property>
<item row="2" column="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>30</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="0">
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>5</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="7">
<widget class="QPushButton" name="btnPackageDel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>113</width>
<height>25</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background: rgb(230,230,230);</string>
</property>
<property name="text">
<string> Удалить</string>
</property>
<property name="icon">
<iconset resource="S1000DResources.qrc">
<normaloff>:/new/Icons/delete.png</normaloff>:/new/Icons/delete.png</iconset>
</property>
</widget>
</item>
<item row="1" column="0">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>5</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0" colspan="8">
<widget class="QLabel" name="label_3">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>20</height>
</size>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>14</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">color: blue</string>
</property>
<property name="text">
<string>Формирование и конфигурирование пакетов</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QComboBox" name="cbPackageList">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>490</width>
<height>25</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">color: blue;</string>
</property>
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_6">
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Имя конфигурации пакета:</string>
</property>
</widget>
</item>
<item row="7" column="0" colspan="7">
<widget class="QTreeWidget" name="dlgTree">
<property name="font">
<font>
<family>Segoe UI</family>
<pointsize>9</pointsize>
</font>
</property>
<property name="showDropIndicator" stdset="0">
<bool>false</bool>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::NoSelection</enum>
</property>
<property name="iconSize">
<size>
<width>15</width>
<height>15</height>
</size>
</property>
<property name="rootIsDecorated">
<bool>true</bool>
</property>
<property name="itemsExpandable">
<bool>true</bool>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="headerHidden">
<bool>true</bool>
</property>
<column>
<property name="text">
<string notr="true">1</string>
</property>
</column>
</widget>
</item>
<item row="2" column="6">
<widget class="QPushButton" name="btnPackageAdd">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>113</width>
<height>25</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background: rgb(230,230,230);</string>
</property>
<property name="text">
<string> Создать</string>
</property>
<property name="icon">
<iconset resource="S1000DResources.qrc">
<normaloff>:/new/Icons/add.png</normaloff>:/new/Icons/add.png</iconset>
</property>
</widget>
</item>
<item row="5" column="0" colspan="7">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="gridLayout_2">
<item row="1" column="1" colspan="2">
<widget class="QLineEdit" name="lePackTitle">
<property name="minimumSize">
<size>
<width>0</width>
<height>25</height>
</size>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">color: blue;</string>
</property>
</widget>
</item>
<item row="2" column="1" colspan="2">
<widget class="QLineEdit" name="lePackName">
<property name="minimumSize">
<size>
<width>0</width>
<height>25</height>
</size>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>12</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">color: blue;</string>
</property>
<property name="maxLength">
<number>250</number>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QPushButton" name="btnChooseDir">
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">background: rgb(230,230,230);</string>
</property>
<property name="text">
<string>Выбрать...</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Расположение:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="lePackDir">
<property name="minimumSize">
<size>
<width>0</width>
<height>25</height>
</size>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_5">
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Титул АУК:</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label">
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Имя файла:</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_7">
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Тип эл.док-та:</string>
</property>
</widget>
</item>
<item row="4" column="1" colspan="2">
<widget class="QComboBox" name="cbEDType">
<property name="minimumSize">
<size>
<width>0</width>
<height>25</height>
</size>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="currentText">
<string/>
</property>
<property name="currentIndex">
<number>-1</number>
</property>
<property name="maxVisibleItems">
<number>15</number>
</property>
<item>
<property name="text">
<string>1. Руководство по эксплуатации</string>
</property>
</item>
<item>
<property name="text">
<string>2. Инструкция по монтажу, пуску, регулированию и обкатке изделия</string>
</property>
</item>
<item>
<property name="text">
<string>3. Формуляр</string>
</property>
</item>
<item>
<property name="text">
<string>4. Паспорт</string>
</property>
</item>
<item>
<property name="text">
<string>5. Этикетка</string>
</property>
</item>
<item>
<property name="text">
<string>6. Каталог изделия</string>
</property>
</item>
<item>
<property name="text">
<string>7. Нормы расхода запасных частей</string>
</property>
</item>
<item>
<property name="text">
<string>8. Нормы расхода материалов</string>
</property>
</item>
<item>
<property name="text">
<string>9. Ведомость ЗИП</string>
</property>
</item>
<item>
<property name="text">
<string>10. Учебно-технические плакаты</string>
</property>
</item>
<item>
<property name="text">
<string>11. Инструкции эксплуатационные специальные</string>
</property>
</item>
<item>
<property name="text">
<string>12. Ведомость эксплуатационных документов</string>
</property>
</item>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item row="5" column="7" rowspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout_Buttons">
<item>
<widget class="QPushButton" name="btnExportS1000D">
<property name="maximumSize">
<size>
<width>110</width>
<height>80</height>
</size>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">background: rgb(230,230,230);</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="S1000DResources.qrc">
<normaloff>:/new/Icons/S1000D_logo.png</normaloff>:/new/Icons/S1000D_logo.png</iconset>
</property>
<property name="iconSize">
<size>
<width>70</width>
<height>70</height>
</size>
</property>
<property name="autoExclusive">
<bool>true</bool>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblS1000D_result">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>14</height>
</size>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>5</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btnExportSCORM">
<property name="maximumSize">
<size>
<width>110</width>
<height>80</height>
</size>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">background: rgb(230,230,230);</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="S1000DResources.qrc">
<normaloff>:/new/Icons/scorm_logo.png</normaloff>:/new/Icons/scorm_logo.png</iconset>
</property>
<property name="iconSize">
<size>
<width>70</width>
<height>70</height>
</size>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblSCORM_result">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>14</height>
</size>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>5</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btnExportEDL">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>110</width>
<height>80</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background: rgb(230,230,230);</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="S1000DResources.qrc">
<normaloff>:/new/Icons/edl_logo.png</normaloff>:/new/Icons/edl_logo.png</iconset>
</property>
<property name="iconSize">
<size>
<width>70</width>
<height>70</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblEDL_result">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>14</height>
</size>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_15">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>5</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btnExportSingleSCORM">
<property name="maximumSize">
<size>
<width>110</width>
<height>80</height>
</size>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">background: rgb(230,230,230);</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="S1000DResources.qrc">
<normaloff>:/new/Icons/maple-leaf.png</normaloff>:/new/Icons/maple-leaf.png</iconset>
</property>
<property name="iconSize">
<size>
<width>70</width>
<height>70</height>
</size>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblSingleSCORM_result">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>14</height>
</size>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btnCloseDlg">
<property name="minimumSize">
<size>
<width>0</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>20</height>
</size>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">background: rgb(230,230,230);</string>
</property>
<property name="text">
<string> Закрыть</string>
</property>
<property name="icon">
<iconset resource="S1000DResources.qrc">
<normaloff>:/new/Icons/suspend.png</normaloff>:/new/Icons/suspend.png</iconset>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_4">
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Состав пакета:</string>
</property>
</widget>
</item>
<item row="2" column="4">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>30</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources>
<include location="S1000DResources.qrc"/>
</resources>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,43 @@
#ifndef HTML_H
#define HTML_H
#include "s1000d_manager.h"
#include "ru_const.h"
#include "splashform.h"
class HTML
{
public:
HTML();
void Generate(S1000D_Manager* SM, bool _toScorm, SplashForm* _splash);
void parseNode(QDomNode node, int lvl);
QString spc(int n);
void add(int lvl, QString s);
void cat(QString s);
QString searchSVGNodeForText(QDomNode g);
S1000D_Manager* SM;
RU_Const *ru_const;
SplashForm* splash;
bool DBG = true;
bool toScorm;
int ID_pars, ID_tabs, ID_figs, ID_mmos;
struct labelStruct {
QString title, id;
QString type;
};
QList<labelStruct> idList;
struct acronymStruct {
QString id, term, definition;
};
QList<acronymStruct> acrList;
QString footnoteID;
int svgUI;
bool paraIdent=true;
QString paraTextAlign;
int iframeDivCnt;
QString domElementToXML(const QDomElement& elem, int lvl);
};
#endif // HTML_H

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,102 @@
#ifndef LYX_H
#define LYX_H
#include <QWidget>
#include <QMainWindow>
#include "s1000d_manager.h"
#include "splashform.h"
class LyX {
public:
struct tableOfContentsStruct {
QString id, title;
QList<tableOfContentsStruct> childs;
} tableOfContentsRoot;
LyX();
bool Import(S1000D_Manager* SM, QString fileName, SplashForm* splash);
bool readLyXFile(QString fileName, bool isMainFile=false);
void checkForOldIdent();
void parseBlock(int _beg, int _end, QDomNode domCurLevelNode);
void parseInset(int _beg, int _end);
int findTagEnd(int _beg);
int findTag(int _beg, int _end, QString startsWithName);
void pushFlags();
void popFlags();
void pushLyXFileData();
void popLyXFileData();
void appendChapter(QString title);
void appendSection(QString title);
void appendSubsection(QString title);
void fillTableOfContents(tableOfContentsStruct tocNode, QDomNode domToCNode, QString deepSpaces);
void fillAcronymList(QDomNode domAcronymListNode);
int parseLearningModule(QDomNode domLearnNode, int _learnBeg, int _learnMaxEnd);
// QString questLyXtoHTML(QString answer);
void addQuestInteraction(QDomNode domLearnNode, QString question, QStringList answers);
QDomNode searchSVGNodeForSpanNode(QDomNode node);
void connectRefsWithLabels();
QStringList lyxList;
QStringList lyxLog;
QString curLyXFileName; //, domContentPath;
//QString curXmlFileName;
QString projPath;
QDomNode domRootNode, domTableOfContentsNode, domAcronymListNode;
int tocItemNum, acrListItemNum;
QString tableTitle, tableID, figureTitle, figureID;
S1000D_Manager* SM;
SplashForm* splash;
bool DBG = true;
struct flagsStruct {
QString align;
bool bold, italic, underlined;
} flags;
QList<flagsStruct> flagsStack;
struct acronymStruct {
QString lyxFootnoteName, id, term, definition;
};
QList<acronymStruct> acronymList;
struct labelStruct {
int itemInd;
QString lyxLabel, id;
bool defined = false;
bool used = false;
QString nodeXPath;
int lineNum;
};
QList<labelStruct> labelList;
struct refStruct {
int itemInd;
QString lyxRef;
bool labelFound;
QString nodeXPath;
int lineNum;
};
QList<refStruct> refList;
int cntTable, cntFigure, cntPar, globalTable, globalFigure, globalPar;
struct cellStruct {
int _cellBeg, _cellEnd;
QString colname, spanname, multiCol, multiRow;
bool topline, bottomline, leftline, rightline, checkPassed;
bool createS1000D_entry;
QString alignment, rotate;
};
struct fileStruct {
QString fileName;
QStringList lyxList;
};
QList<fileStruct> lyxFileStack;
QStringList internalRefList;
RU_Const* ru_const;
int docChapter, docSection, docSubsection;//, docSubsubsection;
int curChapterItem, curSectionItem, curSubsectionItem;
QList<int> lyxEmptyCnt;
};
#endif // LYX_H

View File

@@ -0,0 +1,26 @@
#include "editormainwindow.h"
#include "console.h"
#include <QApplication>
#ifdef _WIN32
#include <windows.h>
#endif
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
setlocale(LC_ALL,"Russian");
if(argc == 1)
{
#ifdef _WIN32
ShowWindow(GetConsoleWindow(), 0);
#endif
EditorMainWindow w;
w.show();
return a.exec();
}
else
{
console c;
c.exec(argc, argv);
return 0;
}
}

View File

@@ -0,0 +1,222 @@
#include <QMap>
#include <QString>
#include "ru_const.h"
void RU_Const::Init_RU_Const() {
companyName = "АО 'ЦНТУ 'Динамика'";//"АО «Вертолеты России»";
modelIdentCode = "Model"; pmIssuer = "RHC01"; //modelIdentCode = "MI38"
languageIsoCode = "ru"; countryIsoCode = "RU";
inWork = "01"; issueNumber = "000";
security_securityClassification = "01";
responsiblePartnerCompany_enterpriseCode="CAGEC"; responsiblePartnerCompany_enterpriseName = "АО «ВСК»";
originator_enterpriseCode = "CAGEC"; originator_enterpriseName = "АО ЦНТУ «Динамика»";
copyrightPara = "©2022 АО 'ЦНТУ 'Динамика'";//"© 2017 АО «Вертолеты России»";
tableOfContents = "Содержание"; acronymsList = "Перечень сокращений";
htmlButtonLearned = "ИЗУЧЕНО";
tableTitle = "Таблица"; tableShortTitle = "таб."; figureTitle = "Рисунок"; figureShortTitle = "рис.";
testQuestions = "Контроль знаний";
icn_variantCode = "R"; // A — для ГМК, в котором нет объектов для локализации/перевода
// R — для ГМК на русском языке
// E — для ГМК на английском языке
crew.append("КВС"); crew.append(""); crew.append("ИВД"); crew.append("ИАО"); crew.append("ИРЭО"); crew.append("ИТО"); crew.append("БП"); crew.append("БО");
addPMCode("GTC", "01", "00", "АУК ОБЩЕГО ПРИМЕНЕНИЯ", "ВОЗДУШНОЕ ПРАВО", "");
addPMCode("GTC", "02", "00", "АУК ОБЩЕГО ПРИМЕНЕНИЯ", "МЕТЕОРОЛОГИЯ", "");
addPMCode("GTC", "03", "00", "АУК ОБЩЕГО ПРИМЕНЕНИЯ", "АВИАЦИОННАЯ БЕЗОПАСНОСТЬ", "");
addPMCode("GTC", "04", "00", "АУК ОБЩЕГО ПРИМЕНЕНИЯ", "ПРАВИЛА ПЕРЕВОЗКИ ГРУЗОВ", "");
addPMCode("GTC", "05", "00", "АУК ОБЩЕГО ПРИМЕНЕНИЯ", "ЧЕЛОВЕЧЕСКИЙ ФАКТОР (CRM)", "");
addPMCode("GTC", "06", "00", "АУК ОБЩЕГО ПРИМЕНЕНИЯ", "ПРОТИВООБЛЕДЕНИТЕЛЬНАЯ ЗАЩИТА ВС НА ЗЕМЛЕ", "");
addPMCode("GTC", "07", "00", "АУК ОБЩЕГО ПРИМЕНЕНИЯ", "АВАРИЙНО-СПАСАТЕЛЬНАЯ ПОДГОТОВКА (ВОДА И СУША)", "");
addPMCode("GTC", "08", "00", "АУК ОБЩЕГО ПРИМЕНЕНИЯ", "ПРАВИЛА ТЕХНИЧЕСКОГО ОБСЛУЖИВАНИЯ", "");
addPMCode("FTC", "01", "00", "АУК ЛЕТНОГО ПЕРСОНАЛА", "ПРАКТИЧЕСКАЯ АЭРОДИНАМИКА", "");
addPMCode("FTC", "02", "00", "АУК ЛЕТНОГО ПЕРСОНАЛА", "ЛЕТНАЯ ЭКСПЛУАТАЦИЯ", "");
addPMCode("FTC", "03", "00", "АУК ЛЕТНОГО ПЕРСОНАЛА", "БЕЗОПАСНОСТЬ ПОЛЕТОВ", "");
addPMCode("FTC", "04", "00", "АУК ЛЕТНОГО ПЕРСОНАЛА", "ВОЗДУШНАЯ НАВИГАЦИЯ", "");
addPMCode("FTC", "05", "01", "АУК ЛЕТНОГО ПЕРСОНАЛА", "ВАРИАНТЫ ПРИМЕНЕНИЯ", "(НЕБОЕВЫЕ)");
addPMCode("FTC", "05", "02", "АУК ЛЕТНОГО ПЕРСОНАЛА", "ВАРИАНТЫ ПРИМЕНЕНИЯ", "(БОЕВЫЕ)");
addPMCode("FTC", "06", "00", "АУК ЛЕТНОГО ПЕРСОНАЛА", "КОНСТРУКЦИЯ ВЕРТОЛЕТА И ЕГО СИСТЕМЫ", "ОПИСАНИЕ И ЭКСПЛУАТАЦИЯ");
addPMCode("FTC", "07", "00", "АУК ЛЕТНОГО ПЕРСОНАЛА", "КОНСТРУКЦИЯ СИЛОВОЙ УСТАНОВКИ", "ОПИСАНИЕ И ЭКСПЛУАТАЦИЯ");
addPMCode("FTC", "08", "00", "АУК ЛЕТНОГО ПЕРСОНАЛА", "АВИАЦИОННОЕ ОБОРУДОВАНИЕ", "ОПИСАНИЕ И ЭКСПЛУАТАЦИЯ");
addPMCode("FTC", "09", "00", "АУК ЛЕТНОГО ПЕРСОНАЛА", "РАДИОЭЛЕКТРОННОЕ ОБОРУДОВАНИЕ", "ОПИСАНИЕ И ЭКСПЛУАТАЦИЯ");
addPMCode("FTC", "10", "00", "АУК ЛЕТНОГО ПЕРСОНАЛА", "АВИАЦИОННОЕ ВООРУЖЕНИЕ", "ОПИСАНИЕ И ЭКСПЛУАТАЦИЯ");
addPMCode("FTC", "11", "00", "АУК ЛЕТНОГО ПЕРСОНАЛА", "АВАРИЙНО-СПАСАТЕЛЬНЫЕ СРЕДСТВА", "ОПИСАНИЕ И ЭКСПЛУАТАЦИЯ");
addPMCode("FTC", "12", "00", "АУК ЛЕТНОГО ПЕРСОНАЛА", "ДЕСАНТНО-ТРАНСПОРТНОЕ ОБОРУДОВАНИЕ", "ОПИСАНИЕ И ЭКСПЛУАТАЦИЯ");
addPMCode("MTC", "01", "01", "АУК ТЕХНИЧЕСКОГО ПЕРСОНАЛА", "КОНСТРУКЦИЯ ВЕРТОЛЕТА И ЕГО СИСТЕМЫ", "ТЕХНИЧЕСКОЕ ОПИСАНИЕ");
addPMCode("MTC", "01", "02", "АУК ТЕХНИЧЕСКОГО ПЕРСОНАЛА", "КОНСТРУКЦИЯ ВЕРТОЛЕТА И ЕГО СИСТЕМЫ", "ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ");
addPMCode("MTC", "02", "01", "АУК ТЕХНИЧЕСКОГО ПЕРСОНАЛА", "КОНСТРУКЦИЯ СИЛОВОЙ УСТАНОВКИ", "ТЕХНИЧЕСКОЕ ОПИСАНИЕ");
addPMCode("MTC", "02", "02", "АУК ТЕХНИЧЕСКОГО ПЕРСОНАЛА", "КОНСТРУКЦИЯ СИЛОВОЙ УСТАНОВКИ", "ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ");
addPMCode("MTC", "03", "01", "АУК ТЕХНИЧЕСКОГО ПЕРСОНАЛА", "АВИАЦИОННОЕ ОБОРУДОВАНИЕ", "ТЕХНИЧЕСКОЕ ОПИСАНИЕ");
addPMCode("MTC", "03", "02", "АУК ТЕХНИЧЕСКОГО ПЕРСОНАЛА", "АВИАЦИОННОЕ ОБОРУДОВАНИЕ", "ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ");
addPMCode("MTC", "04", "01", "АУК ТЕХНИЧЕСКОГО ПЕРСОНАЛА", "РАДИОЭЛЕКТРОННОЕ ОБОРУДОВАНИЕ", "ТЕХНИЧЕСКОЕ ОПИСАНИЕ");
addPMCode("MTC", "04", "02", "АУК ТЕХНИЧЕСКОГО ПЕРСОНАЛА", "РАДИОЭЛЕКТРОННОЕ ОБОРУДОВАНИЕ", "ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ");
addPMCode("MTC", "05", "01", "АУК ТЕХНИЧЕСКОГО ПЕРСОНАЛА", "АВИАЦИОННОЕ ВООРУЖЕНИЕ", "ТЕХНИЧЕСКОЕ ОПИСАНИЕ");
addPMCode("MTC", "05", "02", "АУК ТЕХНИЧЕСКОГО ПЕРСОНАЛА", "АВИАЦИОННОЕ ВООРУЖЕНИЕ", "ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ");
addPMCode("MTC", "06", "01", "АУК ТЕХНИЧЕСКОГО ПЕРСОНАЛА", "АВАРИЙНО-СПАСАТЕЛЬНЫЕ СРЕДСТВА", "ТЕХНИЧЕСКОЕ ОПИСАНИЕ");
addPMCode("MTC", "06", "02", "АУК ТЕХНИЧЕСКОГО ПЕРСОНАЛА", "АВАРИЙНО-СПАСАТЕЛЬНЫЕ СРЕДСТВА", "ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ");
addPMCode("MTC", "07", "01", "АУК ТЕХНИЧЕСКОГО ПЕРСОНАЛА", "ДЕСАНТНО-ТРАНСПОРТНОЕ ОБОРУДОВАНИЕ", "ТЕХНИЧЕСКОЕ ОПИСАНИЕ");
addPMCode("MTC", "07", "02", "АУК ТЕХНИЧЕСКОГО ПЕРСОНАЛА", "ДЕСАНТНО-ТРАНСПОРТНОЕ ОБОРУДОВАНИЕ", "ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ");
addPMCode("MTC", "11", "XX", "АУК ТЕХНИЧЕСКОГО ПЕРСОНАЛА", "ОБЩИЕ ПРОЦЕДУРЫ", "");
addPMCodesRTC("01", "КОНСТРУКЦИЯ ВЕРТОЛЕТА И ЕГО СИСТЕМЫ");
addPMCodesRTC("02", "СИЛОВАЯ УСТАНОВКА");
addPMCodesRTC("03", "РАДИОЭЛЕКТРОННОЕ ОБОРУДОВАНИЕ");
addPMCodesRTC("04", "АВИАЦИОННОЕ ОБОРУДОВАНИЕ");
addPMCodesRTC("05", "АВИАЦИОННОЕ ВООРУЖЕНИЕ");
addPMCodesRTC("06", "АВАРИЙНО-СПАСАТЕЛЬНЫЕ СРЕДСТВА");
addPMCodesRTC("07", "ДЕСАНТНО-ТРАНСПОРТНЫЕ СРЕДСТВА");
addPMCodesRTC("11", "ОБЩИЕ ПРОЦЕДУРЫ");
addPMCode("PTC", "XX", "00", "АУК ПРОИЗВОДСТВЕННОГО ПЕРСОНАЛА", "(самостоятельно определить тему)", "");
addDMCode("Техническое обслуживание", "Описание и работа систем",
"<html><head/><body><p>Модули данных по каждой системе/подсистеме ВС. Задача этих модулей дать полную информацию о конструкции и функционировании систем ВС.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-XX-XX-00-NNA-040A-A_T40C</span> (Наименование системы или подсистемы Описание и работа), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> XX-XX: код стандартной системы нумерации</p><p> NN: 00, или если требуется более одного модуля данных (например, разделить курсы по специальностям, членам экипажа), начиная с 01.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-XX-XX-00-NNA-040A-A_T80E</span> (Наименование системы или подсистемы Контроль знаний: Описание и работа)</p></body></html>",
"DESCRIPT", "YY-A-XX-XX-00-NNA-040A-A_T40C", "T80E", "Наименование системы или подсистемы", "Описание и работа" );
addDMCode("Техническое обслуживание", "Описание и работа компонентов",
"<html><head/><body><p>Модули данных по компонентам систем/подсистем ВС, которые обладают сложной конструкцией и внутренней работой. Задача этих модулей дать полную информацию о конструкции и функционировании таких компонентов. Используйте эти модули данных только, если информации, раскрытой в описании системы, не достаточно для полного понимания принципов работы. Обычно, такие компоненты требуют технического обслуживания с разборкой.</p><p>ЗАПРЕЩАЕТСЯ ИСПОЛЬЗОВАТЬ ССЫЛКИ НА МЕСТО ЭТОГО КОМПОНЕНТА В СИСТЕМЕ. ИНФОРМАЦИЯ ДОЛЖНА БЫТЬ АВТОНОМНОЙ, РАСКРЫВАЮЩЕЙ ТОЛЬКО ВНУТРЕННЕЕ ФУНКЦИОНИРОВАНИЕ.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-XX-XX-XX-NNA-040A-A_T40C</span> (Наименование компонента Описание и работа),</p><p>где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> XX-XX-XX: код стандартной системы нумерации</p><p> NN: 00, или если требуется более одного модуля данных (например, разделить курсы по специальностям, членам экипажа), начиная с 01.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-XX-XX-XX-NNA-040A-A_T80E</span> (Наименование компонента Контроль знаний: Описание и работа)</p></body></html>",
"DESCRIPT", "YY-A-XX-XX-XX-NNA-040A-A_T40C", "T80E", "Наименование компонента", "Описание и работа" );
addDMCode("Техническое обслуживание", "Планирование ТО",
"<html><head/><body><p>Модули данных по планированию технического обслуживания.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-05-4X-00-NNA-0B0A-A_T40C</span> (Вид технического обслуживания Информация по планированию технического обслуживания), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> 4X: где X последовательная нумерация видов ТО</p><p> NN: 00, или если требуется более одного модуля данных (например, разделить курсы по специальностям, членам экипажа), начиная с 01.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-05-4X-00-NNA-0B0A-A_T80E</span> (Вид технического обслуживания Контроль знаний: Информация по планированию технического обслуживания)</p></body></html>",
"DESCRIPT", "YY-A-05-4X-00-NNA-0B0A-A_T40C", "T80E", "Вид технического обслуживания", "Информация по планированию технического обслуживания" );
addDMCode("Техническое обслуживание", "Общие меры безопасности",
"<html><head/><body><p>Модули данных по специальным общим мерам безопаности для типа ВС.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-00-20-00-NNA-012A-A_T40C</span> (Меры безопасности Общие предупреждения и предостережения), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> NN: 00, или если требуется более одного модуля данных, начиная с 01.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-00-20-00-NNA-012A-A_T80</span>E (Меры безопасности Контроль знаний: Общие предупреждения и предостережения)</p></body></html>",
"DESCRIPT", "YY-A-00-20-00-NNA-012A-A_T40C", "T80E", "Меры безопасности", "Общие предупреждения и предостережения" );
addDMCode("Техническое обслуживание", "Процедуры ТО",
"<html><head/><body><p>Модули данных по процедурам технического обслуживания для типа ВС.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-XX-XX-XX-NNA-ZZZZ-Q_T40C</span> (Процедуры ТО Информационное имя), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> XX-XX-XX, принятая стандартной системы нумерации</p><p> NN: 00, или если требуется более одного модуля данных, начиная с 01.</p><p> ZZZZ: информационный код и его вариант.</p><p> Q: код расположения.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-XX-XX-XX-NNA-ZZZZ-Q_T80E</span> (Процедуры ТО Контроль знаний: Информационное имя)</p></body></html>",
"DESCRIPT", "YY-A-XX-XX-XX-NNA-ZZZZ-Q_T40C", "T80E", "Процедуры ТО", "Информационное имя" );
addDMCode("Техническое обслуживание", "Средства материально-технического обеспечения",
"<html><head/><body><p>Модули данных с информацией по КПА, вспомогательному оборудованию, инструменту и расходуемым материалам.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-00-00-00-NNA-ZZZA-A_T40C</span> (Воздушное судно Информационное имя), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> NN: 00, или если требуется более одного модуля данных (например, разделить перечни по специальностям), начиная с 01.</p><p> ZZZ: 060 — Вспомогательное оборудование, инструмент и программное</p><p>обеспечение, 070 — Расходуемые материалы.</p><p>ЗАПРЕЩЕНО ОПИСЫВАТЬ ПРОЦЕДУРЫ ПРОВЕРОК ОБОРУДОВАНИЯ ВС В ЭТИХ МОДУЛЯХ.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-00-00-00-NNA-ZZZA-A_T80E</span> (Воздушное судно Контроль знаний: Информационное имя)</p></body></html>",
"DESCRIPT", "YY-A-00-00-00-NNA-ZZZA-A_T40C", "T80E", "Воздушное судно", "Информационное имя" );
addDMCode("Техническое обслуживание", "Общие процедуры",
"<html><head/><body><p>Модули данных с осщей информацией по обращению с ВС в целом.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-ХХ-XX-XX-NNA-ZZZA-A_T40C</span> (Наименование темы Информационное имя), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> ХХ-XX-XX: 00, Согласно классификации ГОСТ 186752012, для систем 07, 08, 09, 10, 12, 15, 16.</p><p> NN: 00, или если требуется более одного модуля данных (например, разделить перечни по специальностям), начиная с 01.</p><p> ZZZ: — Согласно классификации ГОСТ 186752012.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-ХХ-XX-XX-NNA-ZZZA-A_T80</span>E (Наименование темы Контроль знаний: Информационное имя)</p></body></html>",
"DESCRIPT", "YY-A-ХХ-XX-XX-NNA-ZZZA-A_T40C", "T80E", "Наименование темы", "Информационное имя" );
addDMCode("Общая информация и данные", "Служебные и вводные данные",
"<html><head/><body><p>Модули данных по правилам подготовки и кодирования служебой и вводной информации.</p><p>Коды модулей данных должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-00-47-XX-NNA-XXXX-A_T40C</span> (Наименование АУК Информационное имя), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> XX:</p><p> 00 Автоматизированные учебные курсы</p><p> 01 Автоматизированные учебные курсы (летный персонал)</p><p> 02 Автоматизированные учебные курсы (технический персонал)</p><p> 03 Автоматизированные учебные курсы (ремонтный персонал)</p><p> 04 Автоматизированные учебные курсы (производственный персонал)</p><p> NN: 00, или если требуется более одного модуля данных (для каждого конкретного АУК), начиная с 01.</p><p> XXX: информационный код и его вариант:</p><p> 001A — Титульный лист</p><p> 00UA — Внесенные изменения</p><p> 009A — Содержание</p><p> 009B — Поиск по курсу</p><p> 018A — Введение</p><p> 023A — Административные формы и данные</p></body></html>",
"DESCRIPT", "YY-A-00-47-XX-NNA-XXXX-A_T40C", "T80E", "Наименование АУК", "Информационное имя" );
addDMCode("Общая информация и данные", "Общие сведения о ВС",
"<html><head/><body><p>Модули данных для описания ВС в целом, чтобы дать общее представление о назначении, конструкции, составе оборудования ВС.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-00-00-00-NNA-010A-A_T40C</span> (Воздушное судно Общие данные), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> NN: 00, или если требуется более одного модуля данных (например, разделить курсы по специальностям, членам экипажа), начиная с 01.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-00-00-00-NNA-010A-A_T80</span>E (Воздушное судно Контроль знаний: Общие данные)</p></body></html>",
"DESCRIPT", "YY-A-00-00-00-NNA-010A-A_T40C", "T80E", "Воздушное судно", "Общие данные" );
addDMCode("Общая информация и данные", "Нормативные требования авиации",
"<html><head/><body><p>Модули данных, относящиеся к общим дисциплинам авиационной деятельности и ее тематикам.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-00-7X-XXXX-NNZ-010A-A_T40C</span> (Наименование документа/раздела Общие данные), где:</p><p> YY-Y идентификационный код модели и отличительный код системы:</p><p> RHCT-A — для модулей данных нормативного характера Холдинга “Вертолеты России”</p><p> RHCT-B — для модулей данных общего применения международного характера</p><p> RHCT-C — для модулей данных общего применения на территории РФ</p><p> RHCT-D и далее — для модулей данных общего применения на территории иностранных государств</p><p> YY-Y — для модулей данных, применимых к конкретному типу ВС</p><p> 7X — категории авиационных требований:</p><p> 71 авиационные требования общего назначения</p><p> 72 авиационные требования гражданской авиации</p><p> 73 авиационные требования государственной авиации</p><p> 74 авиационные требования экспериментальной авиации</p><p> XXXX последовательная нумерация регламентирующих документов</p><p> NN последовательная нумерация/классификация разделов, согласно структуре исходного документа</p><p> Z один буквенно-цифровой символ для дополнительного разделения информации, начиная c “A”.</p><p>В случае использования информации, относящейся к конкретному типу ВС необходимо:</p><p> определить категорию и нормативный документ регламентирующий учебную тему</p><p> определить тему по соответствующему нормативному документу</p><p> если код документа не присвоен, обратиться к организации, ответственной за выпуск Настоящих правил, за присвоением последовательного кода документа</p><p> присвоить код МД:</p><p> использовать идентификационный код модели и отличительный код системы дляданного типа ВС</p><p> использовать категорию (7X) и код документа (XXXX)</p><p> использовать номер раздела документа (NN).</p><p>ПРИМЕР:</p><p> MI171-A: информация по вертолету Ми-171</p><p> 72-0017: Правила расследования авиационных происшествий и инцидентов (ПРАПИ-98)</p><p> 03: Расследование авиационных происшествий</p><p> Полный код модуля в этом случае: MI171-A-00-72-0017-03A-010A-A-T40C</p><p> Наименование модуля модуля в этом случае: (Расследование авиационных происшествий — Общие данные).</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-00-7X-XXXX-NNZ-010A-A_T80E</span> (Наименование документа/раздела Контроль знаний: Общие данные)</p></body></html>",
"DESCRIPT", "YY-A-00-7X-XXXX-NNZ-010A-A_T40C", "T80E", "Наименование документа/раздела", "Общие данные" );
addDMCode("Технологии ремонта", "Организация ремонта",
"<html><head/><body><p>Модули данных по общим задачам организации ремонта. Материал нацелен на руководящий состав, который должен обладать знаниями по принципам организации ремонта, его этапам, необходимым организационным мероприятиям, оснащению, требования к персоналу.</p><p>Коды модулей данных должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-00-6Х-ХХ-NNA-010A-A_T40C</span> (Ремонт Общие данные), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> 6Х:</p><p> 0 Ремонт</p><p> 1 Средний ремонт</p><p> 2 Капитальный ремонт</p><p> ХХ: Тема внутри задач организации ремонта</p><p> NN: 00, или если требуется более одного модуля данных (например, разделить курсы по специальностям), начиная с 01.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-00-6Х-ХХ-NNA-010A-A_T80E</span> (Ремонт Общие данные)</p></body></html>",
"DESCRIPT", "YY-A-00-6Х-ХХ-NNA-010A-A_T40C", "T80E", "Ремонт", "Общие данные" );
addDMCode("Технологии ремонта", "Ремонт конструкций планера",
"<html><head/><body><p>Модули данных по технологиям ремонта конструкций планера. Материал нацелен на персонал рабочих специальностей, который должен обладать знаниями по технологическим операциям выполнения ремонта на различных этапах.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-5Х-ХХ-ХХ-NNA-ZZZA-A_T40C</span> (Наименование темы Информационное имя), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> 5Х-ХХ-ХХ: согласно классификатору ГОСТ 18675-2012</p><p> NN: 00, или если требуется более одного модуля данных (например, разделить курсы по специальностям) или компоненты разборки основных узлов, начиная с 01.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-5Х-ХХ-ХХ-NNA-ZZZA-A_T80E</span> (Наименование темы Информационное имя)</p><p><br/></p></body></html>",
"DESCRIPT", "YY-A-5Х-ХХ-ХХ-NNA-ZZZA-A_T40C", "T80E", "Наименование темы", "Информационное имя" );
addDMCode("Технологии ремонта", "Ремонт силовой установки",
"<html><head/><body><p>Модули данных по технологиям ремонта конструкции силовой установки. Материал нацелен на персонал рабочих специальностей, который должен обладать знаниями по технологическим операциям выполнения ремонта на различных этапах.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-7Х-ХХ-ХХ-NNA-ZZZA-A_T40C</span> (Наименование темы Информационное имя), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> 7Х-ХХ-ХХ: согласно классификатору ГОСТ 18675-2012</p><p> NN: 00, или если требуется более одного модуля данных (например, разделить курсы по специальностям) или компоненты разборки основных узлов, начиная с 01.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-7Х-ХХ-ХХ-NNA-ZZZA-A_T80E</span> (Наименование темы Информационное имя)</p></body></html>",
"DESCRIPT", "YY-A-7Х-ХХ-ХХ-NNA-ZZZA-A_T40C", "T80E", "Наименование темы", "Информационное имя" );
addDMCode("Технологии ремонта", "Ремонт несущей системы и трансмиссии",
"<html><head/><body><p>Модули данных по технологиям ремонта несущей системы (НС) и трансмиссии воздушного судна. Материал нацелен на персонал рабочих специальностей, который должен обладать знаниями по технологическим операциям выполнения ремонта на различных этапах.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-6Х-ХХ-ХХ-NNA-ZZZA-A_T40C</span> (Наименование темы Информационное имя), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> 6Х-ХХ-ХХ: согласно классификатору ГОСТ 18675-2012 из разделов 60-69, (84).</p><p> NN: 00, или если требуется более одного модуля данных (например, разделить курсы по специальностям) или компоненты разборки основных узлов, начиная с 01.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-6Х-ХХ-ХХ-NNA-ZZZA-A_T80E</span> (Наименование темы Информационное имя)</p></body></html>",
"DESCRIPT", "YY-A-6Х-ХХ-ХХ-NNA-ZZZA-A_T40C", "T80E", "Наименование темы", "Информационное имя" );
addDMCode("Технологии ремонта", "Ремонт систем и компонентов",
"<html><head/><body><p>Модули данных по технологиям ремонта систем, съемного оборудования воздушного судна. Материал нацелен на персонал рабочих специальностей, который должен обладать знаниями по технологическим операциям выполнения ремонта на различных этапах.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-ХХ-ХХ-ХХ-NNA-ZZZA-A_T40C</span> (Наименование темы Информационное имя), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> ХХ-ХХ-ХХ: согласно классификатору ГОСТ 18675-2012 из разделов 20-49.</p><p> NN: 00, или если требуется более одного модуля данных (например, разделить курсы по специальностям) или компоненты разборки основных узлов, начиная с 01.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-XХ-ХХ-ХХ-NNA-ZZZA-A_T80</span>E (Наименование темы Информационное имя)</p></body></html>",
"DESCRIPT", "YY-A-ХХ-ХХ-ХХ-NNA-ZZZA-A_T40C", "T80E", "Наименование темы", "Информационное имя" );
addDMCode("Информация для экипажа", "Описание и работа систем",
"<html><head/><body><p>Модули данных по каждой системе/подсистеме ВС. Задача этих модулей дать инженерный взгляд на конструкцию и функционирование систем и компонентов ВС в объеме достаточном для экипажа.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-XX-XX-00-NNA-043A-A_T40C</span> (Наименование системы или подсистемы Информация для экипажа), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> XX-XX: код стандартной системы нумерации</p><p> NN: 00, или если требуется более одного модуля данных (например, разделить курсы по специальностям, членам экипажа), начиная с 01.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-XX-XX-00-NNA-043A-A_T80E</span> (Наименование системы или подсистемы Контроль знаний: Информация для экипажа)</p></body></html>",
"DESCRIPT", "YY-A-XX-XX-00-NNA-043A-A_T40C", "T80E", "Наименование системы или подсистемы", "Информация для экипажа" );
addDMCode("Информация для экипажа", "Нормальная эксплуатация систем и оборудования",
"<html><head/><body><p>Модули данных по каждой системе/подсистеме ВС, имеющей нормальные процедуры эксплуатации.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-XX-XX-00-00A-131A-A_T40C</span> (Наименование системы или подсистемы Процедура нормальной эксплуатации), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> XX-XX: код стандартной системы нумерации</p><p>Содержание разделов модулей данных должно быть составлено, исходя из условий (этапов) работы членов экипажа (по применимости), примеры:</p><p> Контрольный осмотр</p><p> Контрольная проверка перед запуском</p><p> Запуск двигателей</p><p> Контрольная проверка после запуска</p><p> Выполнение полета</p><p> После посадки.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-XX-XX-00-NNA-131A-A_T80E</span> (Наименование системы или подсистемы Контроль знаний: Процедура нормальной эксплуатации)</p></body></html>",
"DESCRIPT", "YY-A-XX-XX-00-00A-131A-A_T40C", "T80E", "Наименование системы или подсистемы", "Процедура нормальной эксплуатации" );
addDMCode("Информация для экипажа", "Эксплуатационные ограничения",
"<html><head/><body><p>Модули данных по каждой системе/подсистеме ВС, имеющей эксплуатационные ограничения.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-15-10-XX-NNA-043B-A_T40C</span> (Наименование системы или подсистемы Эксплуатационные ограничения), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> XX: код стандартной системы нумерации, 00 для ВС в целом.</p><p> NN номер подсистемы/подподсистемы, если не требуется использовать 00.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-15-10-XX-NNA-043B-A_T80E</span> (Наименование системы или подсистемы Контроль знаний: Эксплуатационные ограничения)</p></body></html>",
"DESCRIPT", "YY-A-15-10-XX-NNA-043B-A_T40C", "T80E", "Наименование системы или подсистемы", "Эксплуатационные ограничения" );
addDMCode("Информация для экипажа", "Нормальная эксплуатация ВС",
"<html><head/><body><p>Модули данных нормальных процедур эксплуатации по стадиям подготовки и полета. </p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-15-3X-XX-NNA-043A-A_T40C</span> (Наименование режима (стадии) Информация для экипажа), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> 3X-XX:</p><p> 31 — Предвариатильная подготовка:</p><p> XX: используется для дальнейшей классификации, если необходимо, например:</p><p> 01: Штурманская подготовка</p><p> 02: Расчет полета</p><p> 32 — Подготовка к полету:</p><p> XX: используется для дальнейшей классификации, если необходимо, например:</p><p> 01: Предполетный осмотр</p><p> 02: Предполетная проверка перед запуском</p><p> 03: Запуск двигателей</p><p> 04: Предполетная проверка после запуска</p><p> 33 — Выполнение полета:</p><p> XX: используется для дальнейшей классификации, если необходимо, например:</p><p> 01 — Руление</p><p> 02 — Взлет и полет на малой высоте</p><p> 03 — Набор высоты</p><p> 04 — Крейсерский полет</p><p> 05 — Снижение</p><p> 06 — Заход на посадку</p><p> 07 — Посадка</p><p> 34 — Вертолетовождение/Самолетовождение:</p><p> XX: используется для дальнейшей классификации, если необходимо</p><p> (3538) — Используется при необходимости</p><p> 39 — Завершение полета:</p><p> XX: используется для дальнейшей классификации, если необходимо, например:</p><p> 01: Выключение двигателей и оборудования</p><p> 02: Послеполетный осмотр</p><p> 03: Заполнение документации</p><p> 04: Анализ полетных данных</p><p> NN: 00, или если требуется более одного модуля данных (например, разделить курсы по специальностям, членам экипажа), начиная с 01.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-15-3X-XX-NNA-043A-A_T80E</span> (Наименование режима (стадии) Контроль знаний: Информация для экипажа)</p></body></html>",
"DESCRIPT", "YY-A-15-3X-XX-NNA-043A-A_T40C", "T80E", "Наименование режима (стадии)", "Информация для экипажа" );
addDMCode("Информация для экипажа", "Контрольные облеты и испытания/регулировки",
"<html><head/><body><p>Модули данных программ контрольных облетов и испытаний/регулировок в полете, включая динамическую регулировку несущей системы.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-05-62-XX-NNA-043A-A_T40C</span> (Наименование программы Информация для экипажа), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> XX: используется для нумерации каждой уникальной программы облета/испытаний/регулировки</p><p> NN: 00, или если требуется более одного модуля данных (например, разделить курсы по специальностям, членам экипажа), начиная с 01.</p><p>Перечень необходимых программ, смотри ЭТД применимого типа ВС.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-05-62-XX-NNA-043A-A_T80</span>E (Наименование программы Контроль знаний: Информация для экипажа)</p></body></html>",
"DESCRIPT", "YY-A-05-62-XX-NNA-043A-A_T40C", "T80E", "Наименование программы", "Информация для экипажа" );
addDMCode("Информация для экипажа", "Особые условия эксплуатации ВС",
"<html><head/><body><p>Модули данных процедур эксплуатации в особых условиях.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-15-50-XX-NNA-131A-A_T40C</span> (Наименование особого условия Процедура нормальной эксплуатации), где:</p><p> YY-Y: идентификационный код модели и отличительный код системы</p><p> XX: используется для нумерации каждого уникального особого условия</p><p> NN: 00, или если требуется более одного модуля данных (например, разделить курсы по специальностям, членам экипажа), начиная с 01.</p><p>Перечень необходимых особых условий, смотри РЛЭ применимого типа ВС.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-15-50-XX-NNA-131A-A_T80E</span> (Наименование особого условия Контроль знаний: Процедура нормальной эксплуатации)</p></body></html>",
"DESCRIPT", "YY-A-15-50-XX-NNA-131A-A_T40C", "T80E", "Наименование особого условия", "Процедура нормальной эксплуатации" );
addDMCode("Информация для экипажа", "Аварийная эксплуатация ВС",
"<html><head/><body><p>Модули данных по действиям экипажа при возникновении аварийной ситуации/отказа.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-15-4X-XX-NNA-141A-A_T40C</span> (Наименование отказа/аварийной ситуации Процедура аварийной эксплуатации), где:</p><p> 4X тип ситуации:</p><p> 41 - Общие сведения</p><p> 42 - Аварийные ситуации на земле</p><p> 43 - Аварийные ситуации на взлете</p><p> 44 - Аварийные ситуации, связанные с неисправностью систем</p><p> 45 - Отказ одного или нескольких двигателей</p><p> 46 - Аварийные ситуации при заходе на посадку/посадке</p><p> 47 - Отказы систем БРЭО</p><p> 48 - Прочие аварийные ситуации или отказы</p><p> 49 - Показания многофункционального дисплея со сведениями об аварийной ситуации</p><p> XX последовательная нумерация отказа/аварийной ситуации, внутри типа</p><p> NN последовательная нумерация, если требуется более одного модуля данных.</p><p>Типы ситуации 41,42,43,45,46,48 могут быть использованы для АУК Летная эксплуатация.</p><p>Типы ситуации 44,45,47,48 могут быть использованы для АУК … Описание и эксплуатация.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-15-4X-XX-NNA-141A-A_T80E</span> (Наименование отказа/аварийной ситуации Контроль знаний: Процедура аварийной эксплуатации)</p></body></html>",
"DESCRIPT", "YY-A-15-4X-XX-NNA-141A-A_T40C", "T80E", "Наименование отказа/аварийной ситуации", "Процедура аварийной эксплуатации" );
addDMCode("Информация для экипажа", "Практическая аэродинамика",
"<html><head/><body><p>Модули данных анализа летно-технических характеристик ВС.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-15-21-XX-NNA-043A-A_T40C</span> (Наименование темы — Информация для экипажа), где:</p><p> XX последовательная нумерация МД/тем:</p><p> 01: Аэродинамические характеристики</p><p> 02: Устойчивость, управляемость и балансировка</p><p> 03: Висение и вертикальные режимы полета</p><p> 04: Установившиеся режимы полета с поступательной скоростью</p><p> 05: Переходные режимы полета, виражи и развороты</p><p> 06: Руление, взлет и посадка</p><p> 07: Дальность и продолжительность полета</p><p> 08: Особые условия полета</p><p> 09: Особые случаи в полете</p><p> 10: Критические режимы полета</p><p> NN 00 или последовательная нумерация, если требуется более одного модуля данных.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-15-21-XX-NNA-043A-A_T80E</span> (Наименование темы Контроль знаний: Информация для экипажа)</p></body></html>",
"DESCRIPT", "YY-A-15-21-XX-NNA-043A-A_T40C", "T80E", "Наименование темы", "Информация для экипажа" );
addDMCode("Информация для экипажа", "Эксплуатация по вариантам применения",
"<html><head/><body><p>Модули данных при применении ВС на различных видах работ.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-15-71-XX-NNA-043A-A_T40C</span> (Наименование варианта применения Информация для экипажа), где:</p><p> XX последовательная нумерация варианта применения</p><p> NN последовательная нумерация, если требуется более одного модуля данных.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-15-71-XX-NNA-043A-A_T80E</span> (Наименование варианта применения Контроль знаний: Информация для экипажа)</p></body></html>",
"DESCRIPT", "YY-A-15-71-XX-NNA-043A-A_T40C", "T80E", "Наименование варианта применения", "Информация для экипажа" );
addDMCode("Информация для экипажа", "Боевое применение",
"<html><head/><body><p>Модули данных при боевом применении вооружения. Включают описательные данные/ограничения, нормальные и аварийные процедуры применения по вариантам вооружения.</p><p>Коды модулей данных учебной темы должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-15-72-00-NNA-043A-A_T40C</span> (Боевое применение Информация для экипажа)</p><p>- <span style=\" font-weight:600;\">YY-Y-15-72-XX-NNA-043A-A_T40C</span> (Наименование варианта боевого применения Информация для экипажа), где:</p><p> XX последовательная нумерация варианта боевого применения</p><p> NN последовательная нумерация, если требуется более одного модуля данных.</p><p>Коды модулей данных контроля знаний должны иметь следующую структуру:</p><p>- <span style=\" font-weight:600;\">YY-Y-15-72-XX-NNA-043A-A_T80E</span> (Наименование варианта боевого применения Контроль знаний: Информация для экипажа)</p></body></html>",
"DESCRIPT", "YY-A-15-72-XX-NNA-043A-A_T40C", "T80E", "Наименование варианта боевого применения", "Информация для экипажа" );
addEDocName("РЭ", "Руководство по эксплуатации");
addEDocName("ИМ", "Инструкция по монтажу, пуску, регулированию и обкатке изделия");
addEDocName("ФО", "Формуляр");
addEDocName("ПС", "Паспорт");
addEDocName("ЭТ", "Этикетка");
addEDocName("КИ", "Каталог изделия");
addEDocName("НЗЧ", "Нормы расхода запасных частей");
addEDocName("НМ", "Нормы расхода материалов");
addEDocName("ЗИ", "Ведомость ЗИП");
addEDocName("УП", "Учебно-технические плакаты");
addEDocName("ИС", "Инструкции эксплуатационные специальные");
addEDocName("ВЭ", "Ведомость эксплуатационных документов");
}
void RU_Const::addPMCodesRTC(QString pmNumber, QString pmNumberText) {
addPMCode("RTC", pmNumber, "00", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "РЕМОНТ");
addPMCode("RTC", pmNumber, "10", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "ПРЕДВАРИТЕЛЬНАЯ ДЕФЕКТАЦИЯ (СИСТЕМ, КОНСТРУКЦИЙ)");
addPMCode("RTC", pmNumber, "11", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "ТЕХНИЧЕСКОЕ ОПИСАНИЕ (СИСТЕМ, КОНСТРУКЦИЙ)");
addPMCode("RTC", pmNumber, "12", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "ИСПЫТАНИЯ И ОСМОТРЫ (СИСТЕМ, КОНСТРУКЦИЙ)");
addPMCode("RTC", pmNumber, "13", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "РАЗБОРКА, СБОРКА (СИСТЕМ, КОНСТРУКЦИЙ)");
addPMCode("RTC", pmNumber, "20", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "ТИПОВЫЕ ТЕХНОЛОГИИ СИСТЕМ");
addPMCode("RTC", pmNumber, "21", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "РЕМОНТ ЭЛЕКТРОЖГУТОВ");
addPMCode("RTC", pmNumber, "22", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "ШВЕЙНЫЕ, ОБОЙНО-ЭМАЛИТНЫЕ РАБОТЫ");
addPMCode("RTC", pmNumber, "23", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "РЕМОНТ ВОЗДУШНО-МАСЛЯНЫХ РАДИАТОРОВ");
addPMCode("RTC", pmNumber, "24", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "РЕМОНТ ГИДРОБАКОВ");
addPMCode("RTC", pmNumber, "25", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "РЕМОНТ МАСЛОБАКОВ");
addPMCode("RTC", pmNumber, "26", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "РЕМОНТ ЖЕСТКИХ ТОПЛИВНЫХ БАКОВ");
addPMCode("RTC", pmNumber, "27", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "РЕМОНТ МЯГКИХ ТОПЛИВНЫХ БАКОВ");
addPMCode("RTC", pmNumber, "28", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "РЕМОНТ ТРУБОПРОВОДОВ");
addPMCode("RTC", pmNumber, "29", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "РЕМОНТ ШЛАНГОВ");
addPMCode("RTC", pmNumber, "30", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "РЕМОНТ КОМПОНЕНТОВ");
addPMCode("RTC", pmNumber, "31", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "ДЕФЕКТАЦИЯ КОМПОНЕНТОВ");
addPMCode("RTC", pmNumber, "32", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "СБОРКА/РАЗБОРКА КОМПОНЕНТОВ");
addPMCode("RTC", pmNumber, "33", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "Технологии ремонта КОМПОНЕНТОВ");
addPMCode("RTC", pmNumber, "50", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "ТИПОВЫЕ ТЕХНОЛОГИИ КОНСТРУКЦИЙ ПЛАНЕРА");
addPMCode("RTC", pmNumber, "51", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "РЕМОНТ ОСТЕКЛЕНИЯ");
addPMCode("RTC", pmNumber, "52", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "РЕМОНТ ЛКП");
addPMCode("RTC", pmNumber, "53", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "РЕМОНТ КРЕПЕЖА");
addPMCode("RTC", pmNumber, "54", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "ДЕФЕКТАЦИЯ МЕТОДАМИ НЕРАЗРУШАЮЩЕГО КОНТРОЛЯ");
addPMCode("RTC", pmNumber, "60", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "ТИПОВЫЕ ТЕХНОЛОГИИ НЕСУЩЕЙ СИСТЕМЫ И ТРАНСМИССИИ");
addPMCode("RTC", pmNumber, "61", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "РЕМОНТ ЛОПАСТЕЙ НВ И РВ");
addPMCode("RTC", pmNumber, "70", "АУК РЕМОНТНОГО ПЕРСОНАЛА", pmNumberText, "ТИПОВЫЕ ТЕХНОЛОГИИ СИЛОВОЙ УСТАНОВКИ");
}
void RU_Const::addPMCode(QString pmNumABC, QString pmNumber, QString pmVolume,
QString pmNumABCText, QString pmNumberText, QString pmVolumeText) {
pmCodeListItemType item;
item.pmNumABC = pmNumABC; item.pmNumABCText = pmNumABCText;
item.pmNumber = pmNumber; item.pmNumberText = pmNumberText;
item.pmVolume = pmVolume; item.pmVolumeText = pmVolumeText;
pmCodeList.append(item);
}
// DESCRIPT CREW LEARNING
void RU_Const::addDMCode(QString chapterName, QString paraName, QString text, QString schemeTypeStr, QString dmCode,
QString dmLearningCode, QString techName, QString infoName) {
dmCodeListItemType dm;
dm.chapterName = chapterName; dm.paraName = paraName;
dm.text = text; dm.schemeTypeStr = schemeTypeStr; dm.infoName = infoName; dm.techName = techName;
QStringList dmSplitList = dmCode.split("-"); //YY-Y-15-72-XX-NNA-043A-A_T40C
QStringList dmSplitList7 = dmSplitList[7].split("_"); //A_T40C
dm.modelIdentCode = modelIdentCode; /*dmSplitList[0];*/ dm.systemDiffCode = dmSplitList[1];
dm.systemCode = dmSplitList[2]; dm.subSystemCode = dmSplitList[3].mid(0,1); dm.subSubSystemCode = dmSplitList[3].mid(1,1); dm.assyCode = dmSplitList[4];
dm.disassyCode = dmSplitList[5].mid(0,2); dm.disassyCodeVariant = dmSplitList[5].mid(2,1);
dm.infoCode = dmSplitList[6].mid(0,3); dm.infoCodeVariant = dmSplitList[6].mid(3,1);
dm.itemLocationCode = dmSplitList7[0];
dm.learnCode = dmSplitList7[1].mid(0,3); dm.learnEventCode = dmSplitList7[1].mid(3,1);
dm._learnCode = dmLearningCode.mid(0,3); dm._learnEventCode = dmLearningCode.mid(3,1);
dmCodeList.append(dm);
}
void RU_Const::addEDocName(QString shName, QString name) {
eDocShortNames.append(shName); eDocNames.append(name);
}

View File

@@ -0,0 +1,55 @@
#ifndef RU_CONST_H
#define RU_CONST_H
#include <QMap>
#include <QString>
class RU_Const {
public:
void Init_RU_Const();
void addPMCode(QString pmNumABC, QString pmNumber, QString pmVolume,
QString pmNumABCText, QString pmNumberText, QString pmVolumeText);
void addPMCodesRTC(QString pmNumber, QString pmNumberText);
void addDMCode(QString chapterName, QString paraName, QString text, QString schemeTypeStr, QString dmCode,
QString dmLearningCode, QString techName, QString infoName);
void addEDocName(QString shName, QString name);
QMap<QString, QString> attr_accessPointTypeValue;
QString companyName;
QString modelIdentCode, pmIssuer;
struct pmCodeListItemType{
QString pmNumABC, pmNumber, pmVolume;
QString pmNumABCText, pmNumberText, pmVolumeText;
};
QList<pmCodeListItemType> pmCodeList;
struct dmCodeListItemType{
QString chapterName, paraName, text, schemeTypeStr, dmCode, infoName, techName, dmLearningCode;
QString modelIdentCode, systemDiffCode, systemCode, subSystemCode, subSubSystemCode, assyCode,
disassyCode, disassyCodeVariant, infoCode, infoCodeVariant, itemLocationCode, learnCode, learnEventCode, _learnCode, _learnEventCode;
};
QList<dmCodeListItemType> dmCodeList;
QString languageIsoCode, countryIsoCode, inWork, issueNumber, security_securityClassification;
QString responsiblePartnerCompany_enterpriseCode, responsiblePartnerCompany_enterpriseName,
originator_enterpriseCode, originator_enterpriseName, copyrightPara;
QString tableOfContents, acronymsList;
QString htmlButtonLearned;
QString tableTitle, tableShortTitle, figureTitle, figureShortTitle;
QString testQuestions;
QString icn_variantCode;
QStringList crew;
QStringList eDocNames, eDocShortNames;
};
#endif // RU_CONST_H

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,133 @@
#ifndef S1000D_MANAGER_H
#define S1000D_MANAGER_H
#include <QString>
#include <QList>
//#include <QXmlStreamWriter>
//#include <QXmlStreamReader>
//#include <QXmlStreamAttribute>
#include <QDomDocument>
#include "ru_const.h"
#include "splashform.h"
#include <QApplication>
#include "QMessageBox"
#include <QElapsedTimer>
#include <QProcess>
#include <QDateTime>
enum _moduleType { mtDDN, mtDML, mtDM, mtPM, mtUNKNOWN };
enum _schemeType { stDDN, stDML, stPM, stAPPLICCROSSREFTABLE, stPRDCROSSREFTABLE, stCONDCROSSREFTABLE, stDESCRIPT, stPROCED, stPROCESS,
stCOMREP, stFRONTMATTER, stBREX, stBRDOC, stLEARNING, stCREW, stFAULT, stIPD, stCHECKLIST, stNOTATIONS, stCONTAINER, stXLINK, stWRNGFLDS, stUNKNOWN};
class S1000D_Manager
{
public:
S1000D_Manager();
~S1000D_Manager();
bool OpenProjectDirectory(const QString& projectPath, QString& schemasPath); // старое
void prepareSaveProject(); // старое
QString SaveProject();
//static bool validateXML(const QString &xsdschema, const QString &xmlschema);
QDomNode findElementRec(QDomNode domNode, QString path);
QDomNode findElement(QString path);
//void searchPrepare();
//QDomNode searchNodeWithTag(QString tag); //QDomNode startNode,
//QDomNode searchNodeWithAttr(QString attrName, QString attrVal); //QDomNode startNode,
QString makeNodeXPath(QDomNode node);
QDomNode getNodeFromXPath(QString path, bool debugTrace=false);
QString getNodeText(QString path);
void setNodeText(QString path, QString text);
void deleteNode(QString path);
int createNode(QString path, QString nodeName);
bool isNodeCreated(QString path);
QString getNodeAttr(QString path, QString attrName);
void setNodeAttr(QString path, QString attrName, QString attrVal);
void deleteNodeAttr(QString path, QString attrName);
QStringList getNodeAllChilds(QString path);
int getNodeChildsWithNameCount(QString path, QString childNodeName);
int getNodePathIndex(QString name);
QString dmIdentString(QString dmIdentPath);
QString pmIdentString(QString pmIdentPath);
QString dmCodeIdentString(QDomNode node);
void setCurItem(int ind);
void clearItems();
void buildPMTree(int pmItemInd); // старое
void replaceCurItem_pmCode(QString new_Title, QString new_modelIdentCode, QString new_pmIssuer, QString new_pmNumber, QString pmVolume);
void moveItemToPM(int itemInd, int pmInd, int pmContextEntryIndex);
void replaceCurItem_dmCode(QString new_techName, QString new_infoName,
QString new_modelIdentCode, QString new_systemDiffCode,
QString new_systemCode, QString new_subSystemCode, QString new_subSubSystemCode, QString new_assyCode,
QString new_disassyCode, QString new_disassyCodeVariant,
QString new_infoCode, QString new_infoCodeVariant,
QString new_itemLocationCode, QString new_learnCode, QString new_learnEventCode);
int createPM(int parentItemInd, int insertAfterChildNum);
int createDM(int parentItemInd, int insertAfterChildNum, QString scheme);
QDomElement createEmpty_pmRef(QString parent_modelIdentCode, QString parent_pmIssuer);
QDomElement createEmpty_dmRef(QString parent_modelIdentCode);
void deleteItem(int itemInd);
_schemeType getSchemeTypeByStr(QString str);
void resetICN();
QString genICN();
bool copyDir(const QString &srcPath, const QString &dstPath);
void fillManifest(int itemIndex, QDomNode curOrgNode, QDomNode resNode, QDomDocument manifest, int lvl=0);
bool exportS1000D(QString dstDir, QString packFileName, QString packTitle, SplashForm* splash);
bool exportSCORM(QString dstDir, QString packFileName, QString packTitle, SplashForm* splash);
bool exportEDL(QString dstDir, QString packFileName, QString packTitle, int EDType, SplashForm* splash);
bool exportSingleSCORM(QString dstDir, QString packFileName, QString packTitle, SplashForm* splash);
QStringList html;
void addHTML(int lvl, QString s);
void catHTML(QString s);
int bugCnt=0;
RU_Const ru_const;
//struct searchListStruct {
// QString name;
// QDomNode node;
//};
struct ItemStruct { // Основная структура хранения данных
QString fileName, S1000D_fileName, SCORM_fileName;
QString fileCode;
_moduleType moduleType;
_schemeType schemeType;
int parent; // -1 = root
QList<int> child;
QDomDocument doc;
bool isReady, dmDataFilled, toExport, isQualifyed;
int selectedInDMCodeList;
QString importedFromLyX;
QStringList lyxLog, html, inPackages;
QString origTitle;
} *item;
int itemIndex;
QList <ItemStruct> items;
QList <QString> log;
bool DBG=true;
QString projectPath="";
QString rootLyXfile="";
int ICN_UI=0;
bool isConsole=false;
int timeConvert, timeSCORM, timeSingleSCORM, timeS1000D, timeEDL;
struct PackageStruct {
QString cfgName, fullName, title, exportFileName;
};
QList <PackageStruct> packages;
QString manifestFirstPage = "";
int indexTocId, manifestFirstPageId;
QString typeOfExport="";
void LoadPackagesXML();
void SavePackagesXML();
void AddPackageContent(QDomNode node, int ind);
void ParsePackageContent(QDomNode node, int parentItem);
};
#endif // S1000D_MANAGER_H

View File

@@ -0,0 +1,46 @@
#include "splashform.h"
#include "ui_splashform.h"
#include <QDesktopWidget>
#include <qdebug.h>
#include <QMessageBox>
SplashForm::SplashForm(QWidget *parent) :
QDialog(parent),
ui(new Ui::SplashForm)
{
ui->setupUi(this);
QDesktopWidget desktop;
QRect rect = desktop.availableGeometry(this);
QPoint center = rect.center();
int x = center.x() - (width()/2);
int y = center.y() - (height()/2);
center.setX(x); center.setY(y);
this->move(center);
this->setWindowFlag(Qt::SplashScreen, true);
this->setWindowFlag(Qt::WindowStaysOnTopHint, true);
}
SplashForm::~SplashForm()
{
delete ui;
}
void SplashForm::Reset() {
ui->progressBar->setValue(100);
ui->lblTitle->setText("Задумались...");
}
void SplashForm::Step() {
if(ui->progressBar->value() >= 100)
ui->progressBar->setValue(0);
else
ui->progressBar->setValue(ui->progressBar->value()+1);
}
void SplashForm::SetTitle(QString title) {
ui->lblTitle->setText(title);
}
void SplashForm::ErrMessage(QString title, QString msg) {
QMessageBox::critical(this,title,msg,QMessageBox::Ok);
}

View File

@@ -0,0 +1,30 @@
#ifndef SPLASHFORM_H
#define SPLASHFORM_H
#include <QDialog>
#include <QWindow>
#include <QTimer>
namespace Ui {
class SplashForm;
}
class SplashForm : public QDialog
{
Q_OBJECT
public:
explicit SplashForm(QWidget *parent = nullptr);
~SplashForm();
void Reset();
void Step();
void SetTitle(QString title);
void ErrMessage(QString title, QString msg);
QTimer* timer;
private:
Ui::SplashForm *ui;
};
#endif // SPLASHFORM_H

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SplashForm</class>
<widget class="QDialog" name="SplashForm">
<property name="windowModality">
<enum>Qt::ApplicationModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>492</width>
<height>157</height>
</rect>
</property>
<property name="contextMenuPolicy">
<enum>Qt::NoContextMenu</enum>
</property>
<property name="windowTitle">
<string/>
</property>
<property name="windowIcon">
<iconset resource="S1000DResources.qrc">
<normaloff>:/new/Icons/doc_config.png</normaloff>:/new/Icons/doc_config.png</iconset>
</property>
<property name="styleSheet">
<string notr="true">background-color: white;</string>
</property>
<property name="modal">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>1</number>
</property>
<property name="topMargin">
<number>1</number>
</property>
<property name="rightMargin">
<number>1</number>
</property>
<property name="bottomMargin">
<number>1</number>
</property>
<property name="spacing">
<number>1</number>
</property>
<item row="0" column="0">
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="2" column="0">
<widget class="QProgressBar" name="progressBar">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="value">
<number>24</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
<property name="invertedAppearance">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>9</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="S1000DResources.qrc">:/new/Icons/logo.png</pixmap>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lblTitle">
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(144, 144, 144);</string>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="S1000DResources.qrc"/>
</resources>
<connections/>
</ui>