This commit is contained in:
Matthew Kennedy 2023-11-25 00:39:40 -08:00
commit baa9bc3cfc
43 changed files with 0 additions and 2733 deletions

View File

@ -1 +0,0 @@
pcb_sync

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AntConfiguration">
<buildFile url="file://$PROJECT_DIR$/build.xml" />
</component>
</project>

View File

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<option name="DEFAULT_COMPILER" value="Javac" />
<resourceExtensions />
<wildcardResourcePatterns>
<entry name="!?*.java" />
<entry name="!?*.form" />
<entry name="!?*.class" />
<entry name="!?*.groovy" />
<entry name="!?*.scala" />
<entry name="!?*.flex" />
<entry name="!?*.kt" />
<entry name="!?*.clj" />
</wildcardResourcePatterns>
<annotationProcessing>
<profile default="true" name="Default" enabled="false">
<processorPath useClasspath="true" />
</profile>
</annotationProcessing>
</component>
</project>

View File

@ -1,3 +0,0 @@
<component name="CopyrightManager">
<settings default="" />
</component>

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
</project>

View File

@ -1,9 +0,0 @@
<component name="libraryTable">
<library name="junit">
<CLASSES>
<root url="jar://$PROJECT_DIR$/lib/junit.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="EntryPointsManager">
<entry_points version="2.0" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="false" assert-keyword="true" jdk-15="true" project-jdk-name="1.7 64b" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
<component name="SvnBranchConfigurationManager">
<option name="mySupportsUserInfoFilter" value="true" />
</component>
</project>

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/pcb_sync.iml" filepath="$PROJECT_DIR$/pcb_sync.iml" />
</modules>
</component>
</project>

View File

@ -1,25 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="BomBuilder" type="Application" factoryName="Application">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" value="com.rusefi.bom.BomBuilder" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="in.cmp comp.csv out.csv" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="pcb_sync" />
<envs />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
</component>

View File

@ -1,25 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Main move" type="Application" factoryName="Application">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" value="com.rusefi.Main" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="pcb_move frankenso_foundation.kicad_pcb frankenso_foundation.kicad_pcb 0 25.4" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="pcb_sync" />
<envs />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
</component>

View File

@ -1,25 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Main pcb_merge" type="Application" factoryName="Application">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" value="com.rusefi.Main" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="pcb_merge test.kicad_pcb out.kicad_pcb changes.txt" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="pcb_sync" />
<envs />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
</component>

View File

@ -1,25 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Main rename" type="Application" factoryName="Application">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" value="com.rusefi.Main" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="rename mmc_replace.txt in out" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="pcb_sync" />
<envs />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
</component>

View File

@ -1,25 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="RemoveUnneededTraces" type="Application" factoryName="Application" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" value="com.rusefi.misc.RemoveUnneededTraces" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="test.kicad_pcb test.kicad_pcb" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="pcb_sync" />
<envs />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
</component>

View File

@ -1,23 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="main cmp_merge" type="Application" factoryName="Application">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" value="com.rusefi.Main" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="cmp_merge output\res.cmp 1.cmp 2.cmp" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="pcb_sync" />
<envs />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<ConfigurationWrapper RunnerId="Debug" />
<method />
</configuration>
</component>

View File

@ -1,5 +0,0 @@
<component name="DependencyValidationManager">
<state>
<option name="SKIP_IMPORT_STATEMENTS" value="false" />
</state>
</component>

View File

@ -1,125 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="svn" />
</component>
</project>

View File

@ -1,48 +0,0 @@
P1;P401
P2;P402
P3;P403
P4;P404
P5;P405
P7;P406
R4;R401
R18;R402
R5;R403
R16;R404
R6;R405
R14;R406
R7;R407
R17;R408
R8;R409
R15;R410
R9;R411
R13;R412
R1;R451
R2;R452
R3;R453
Q1;Q401
Q2;Q402
Q3;Q403
Q4;Q404
Q5;Q405
Q6;Q406
D1;D401
D2;D402
D3;D403
D4;D404
D5;D405
D6;D406
D7;D407
D8;D408

View File

@ -1,24 +0,0 @@
<project default="jar">
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile">
<mkdir dir="build/classes"/>
<javac destdir="build/classes" classpath="lib/junit.jar:lib/annotations.jar">
<src path="src/main/java"/>
</javac>
</target>
<target name="jar" depends="compile">
<mkdir dir="build/jar"/>
<jar destfile="../pcb_sync.jar" basedir="build/classes">
<manifest>
<attribute name="Main-Class" value="com.rusefi.Main"/>
</manifest>
<zipfileset dir="build/classes" includes="**/*.class"/>
</jar>
</target>
</project>

View File

@ -1,5 +0,0 @@
#comment
SM0805_500K,resistor,resistto_part,hi resistor
LOGO_LOGO,ignore,ignore,ignore
1 #comment
2 SM0805_500K,resistor,resistto_part,hi resistor
3 LOGO_LOGO,ignore,ignore,ignore

View File

@ -1,843 +0,0 @@
Cmp-Mod V01 Created by CvPcb (2013-mar-13)-testing date = Пнд 20 Янв 2014 20:56:23
BeginCmp
TimeStamp = /524A0957;
Reference = C210;
ValeurCmp = 0.01uF;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524A0814;
Reference = C211;
ValeurCmp = 0.1uF;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B71C8;
Reference = C220;
ValeurCmp = 0.01uF;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B795A;
Reference = C230;
ValeurCmp = 0.01uF;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B797C;
Reference = C240;
ValeurCmp = 0.01uF;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B84CE;
Reference = C250;
ValeurCmp = 0.01uF;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B84BC;
Reference = C251;
ValeurCmp = 0.1uF;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B84F0;
Reference = C260;
ValeurCmp = 0.01uF;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B8405;
Reference = C270;
ValeurCmp = 0.01uF;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B8427;
Reference = C280;
ValeurCmp = 0.01uF;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524F7FCF;
Reference = C290;
ValeurCmp = 0.01uF;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524F7FBD;
Reference = C291;
ValeurCmp = 0.1uF;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524F7FED;
Reference = C300;
ValeurCmp = 0.01uF;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /5295CCE4;
Reference = C310;
ValeurCmp = 0.01uF;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /5295CD02;
Reference = C320;
ValeurCmp = 0.01uF;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524F7F12;
Reference = D210;
ValeurCmp = DOUBLE_SCHOTTKY;
IdModule = sot23;
EndCmp
BeginCmp
TimeStamp = /524F7EE6;
Reference = D220;
ValeurCmp = DOUBLE_SCHOTTKY;
IdModule = sot23;
EndCmp
BeginCmp
TimeStamp = /524F7290;
Reference = D230;
ValeurCmp = DOUBLE_SCHOTTKY;
IdModule = sot23;
EndCmp
BeginCmp
TimeStamp = /524F7ED1;
Reference = D240;
ValeurCmp = DOUBLE_SCHOTTKY;
IdModule = sot23;
EndCmp
BeginCmp
TimeStamp = /52894617;
Reference = D250;
ValeurCmp = DOUBLE_SCHOTTKY;
IdModule = sot23;
EndCmp
BeginCmp
TimeStamp = /528945F7;
Reference = D260;
ValeurCmp = DOUBLE_SCHOTTKY;
IdModule = sot23;
EndCmp
BeginCmp
TimeStamp = /52895644;
Reference = D270;
ValeurCmp = DOUBLE_SCHOTTKY;
IdModule = sot23;
EndCmp
BeginCmp
TimeStamp = /5289563E;
Reference = D280;
ValeurCmp = DOUBLE_SCHOTTKY;
IdModule = sot23;
EndCmp
BeginCmp
TimeStamp = /524F800B;
Reference = D290;
ValeurCmp = DOUBLE_SCHOTTKY;
IdModule = sot23;
EndCmp
BeginCmp
TimeStamp = /524F8039;
Reference = D300;
ValeurCmp = DOUBLE_SCHOTTKY;
IdModule = sot23;
EndCmp
BeginCmp
TimeStamp = /5295CD1A;
Reference = D310;
ValeurCmp = DOUBLE_SCHOTTKY;
IdModule = sot23;
EndCmp
BeginCmp
TimeStamp = /5295CD43;
Reference = D320;
ValeurCmp = DOUBLE_SCHOTTKY;
IdModule = sot23;
EndCmp
BeginCmp
TimeStamp = /529C04C3;
Reference = G200;
ValeurCmp = LOGO;
IdModule = LOGO;
EndCmp
BeginCmp
TimeStamp = /529C091E;
Reference = G201;
ValeurCmp = LOGO;
IdModule = LOGO_F;
EndCmp
BeginCmp
TimeStamp = /529C09B9;
Reference = G202;
ValeurCmp = LOGO;
IdModule = LOGO_F;
EndCmp
BeginCmp
TimeStamp = /524F705F;
Reference = LD200;
ValeurCmp = LED;
IdModule = LED-1206;
EndCmp
BeginCmp
TimeStamp = /52530AFC;
Reference = M200;
ValeurCmp = CONN_1;
IdModule = PIN_ARRAY_1;
EndCmp
BeginCmp
TimeStamp = /52530B0B;
Reference = M201;
ValeurCmp = CONN_1;
IdModule = PIN_ARRAY_1;
EndCmp
BeginCmp
TimeStamp = /52896702;
Reference = M202;
ValeurCmp = CONN_1;
IdModule = PIN_ARRAY_1;
EndCmp
BeginCmp
TimeStamp = /5234F161;
Reference = P201;
ValeurCmp = CONN_10X2;
IdModule = PIN_ARRAY_10X2_M;
EndCmp
BeginCmp
TimeStamp = /524F6D3B;
Reference = P202;
ValeurCmp = CONN_3;
IdModule = PIN_ARRAY_3X1;
EndCmp
BeginCmp
TimeStamp = /5296836D;
Reference = P203;
ValeurCmp = CONN_2;
IdModule = SIL-2;
EndCmp
BeginCmp
TimeStamp = /52941801;
Reference = P204;
ValeurCmp = CONN_1;
IdModule = PIN_ARRAY_1;
EndCmp
BeginCmp
TimeStamp = /5295D3A8;
Reference = P205;
ValeurCmp = CONN_1;
IdModule = PIN_ARRAY_1;
EndCmp
BeginCmp
TimeStamp = /5297EAA7;
Reference = P207;
ValeurCmp = CONN_2;
IdModule = SIL-2;
EndCmp
BeginCmp
TimeStamp = /52967E40;
Reference = P208;
ValeurCmp = CONN_6;
IdModule = PIN_ARRAY-6X1;
EndCmp
BeginCmp
TimeStamp = /524F7A58;
Reference = P209;
ValeurCmp = CONN_6;
IdModule = PIN_ARRAY-6X1;
EndCmp
BeginCmp
TimeStamp = /524F714A;
Reference = R200;
ValeurCmp = 100;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524A0A89;
Reference = R210;
ValeurCmp = 2700;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /52350E9D;
Reference = R211;
ValeurCmp = 500K;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /525221CC;
Reference = R212;
ValeurCmp = 10k;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524A093F;
Reference = R213;
ValeurCmp = 100;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /5234EE8F;
Reference = R214;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /5234EE80;
Reference = R215;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B7296;
Reference = R220;
ValeurCmp = 2700;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /52351952;
Reference = R221;
ValeurCmp = 500K;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /525223BA;
Reference = R222;
ValeurCmp = 10k;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B71C2;
Reference = R223;
ValeurCmp = 100;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /52353061;
Reference = R224;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /5235311B;
Reference = R225;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B7962;
Reference = R230;
ValeurCmp = 2700;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B7902;
Reference = R231;
ValeurCmp = 500K;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /52894D15;
Reference = R232;
ValeurCmp = 10k;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B7954;
Reference = R233;
ValeurCmp = 100;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B78DA;
Reference = R234;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B78D4;
Reference = R235;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B798A;
Reference = R240;
ValeurCmp = 2700;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B7914;
Reference = R241;
ValeurCmp = 500K;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /52894D25;
Reference = R242;
ValeurCmp = 10k;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B7976;
Reference = R243;
ValeurCmp = 100;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B7920;
Reference = R244;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B7926;
Reference = R245;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B84D6;
Reference = R250;
ValeurCmp = 2700;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B8476;
Reference = R251;
ValeurCmp = 500K;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /52894FE9;
Reference = R252;
ValeurCmp = 10k;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B84C8;
Reference = R253;
ValeurCmp = 100;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B844E;
Reference = R254;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B8448;
Reference = R255;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B84FE;
Reference = R260;
ValeurCmp = 2700;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B8488;
Reference = R261;
ValeurCmp = 500K;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /52894FEF;
Reference = R262;
ValeurCmp = 10k;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B84EA;
Reference = R263;
ValeurCmp = 100;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B8494;
Reference = R264;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B849A;
Reference = R265;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B840D;
Reference = R270;
ValeurCmp = 2700;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B83AD;
Reference = R271;
ValeurCmp = 500K;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /52895668;
Reference = R272;
ValeurCmp = 10k;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B83FF;
Reference = R273;
ValeurCmp = 100;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B8385;
Reference = R274;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B837F;
Reference = R275;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B8435;
Reference = R280;
ValeurCmp = 2700;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B83BF;
Reference = R281;
ValeurCmp = 500K;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /52895662;
Reference = R282;
ValeurCmp = 10k;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B8421;
Reference = R283;
ValeurCmp = 100;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B83CB;
Reference = R284;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524B83D1;
Reference = R285;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524F7FD5;
Reference = R290;
ValeurCmp = 2700;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524F7F8D;
Reference = R291;
ValeurCmp = 500K;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /528954AB;
Reference = R292;
ValeurCmp = 10k;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524F7FC9;
Reference = R293;
ValeurCmp = 100;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524F7F71;
Reference = R294;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524F7F6B;
Reference = R295;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524F7FF9;
Reference = R300;
ValeurCmp = 2700;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524F7F9F;
Reference = R301;
ValeurCmp = 500K;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /528954A5;
Reference = R302;
ValeurCmp = 10k;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524F7FE7;
Reference = R303;
ValeurCmp = 100;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524F7FAB;
Reference = R304;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /524F7FB1;
Reference = R305;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /5295CCEA;
Reference = R310;
ValeurCmp = 2700;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /5295CCA2;
Reference = R311;
ValeurCmp = 500K;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /5295CD5B;
Reference = R312;
ValeurCmp = 10k;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /5295CCDE;
Reference = R313;
ValeurCmp = 100;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /5295CC8C;
Reference = R314;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /5295CC86;
Reference = R315;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /5295CD0E;
Reference = R320;
ValeurCmp = 2700;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /5295CCB4;
Reference = R321;
ValeurCmp = 500K;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /5295CD55;
Reference = R322;
ValeurCmp = 10k;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /5295CCFC;
Reference = R323;
ValeurCmp = 100;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /5295CCC0;
Reference = R324;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /5295CCC6;
Reference = R325;
ValeurCmp = 1500;
IdModule = SM0805;
EndCmp
BeginCmp
TimeStamp = /52895DF7;
Reference = U201;
ValeurCmp = LMV324IDR;
IdModule = so-14;
EndCmp
BeginCmp
TimeStamp = /52896407;
Reference = U202;
ValeurCmp = LMV324IDR;
IdModule = so-14;
EndCmp
BeginCmp
TimeStamp = /528965D2;
Reference = U203;
ValeurCmp = LMV324IDR;
IdModule = so-14;
EndCmp
BeginCmp
TimeStamp = /52987094;
Reference = W211;
ValeurCmp = TEST;
IdModule = SIL-2;
EndCmp
BeginCmp
TimeStamp = /5298705E;
Reference = W212;
ValeurCmp = TEST;
IdModule = SIL-2;
EndCmp
EndListe

View File

@ -1,41 +0,0 @@
C5;C101
C6;C102
C10;C103
C13;C104
C31;C105
C32;C106
C33;C107
C34;C108
D1;D101
D2;D102
G1;G101
P1;P101
P2;P102
P3;P103
P4;P104
R1;R101
R38;R102
R39;R103
R40;R104
R41;R105
R42;R106
R43;R107
R44;R108
R45;R109
R46;R110
R48;R111
R49;R112
R52;R113
R53;R114
R62;R115
R64;R116
R65;R117
R66;R118
U20;U101
U24;U102

View File

@ -1,55 +0,0 @@
optimize ../can_board/can_brd_1.kicad_pcb can_brd_1.kicad_pcb
add ../adc_amp_divider.vertical12/adc_amp_divider.kicad_pcb
add ../usb_mmc_spi/mmc_usb_1.kicad_pcb
add ../knock_VR_Art_ELectro/cps_vrs_io_1.kicad_pcb
add can_brd_1.kicad_pcb
# DD from the VR board
# knock in
remove P101
# amp chip
remove U102
# data out
remove P103
remove R115
remove R116
remove R117
remove R118
remove C105
remove C106
remove C107
remove C108
# VR board power LED
remove R101
remove D102
remove D101
remove R105
# CAN module connector
remove P471
# CAN module power LED
remove R471
remove D471
# SD/TTL module 3.3v LED
remove R354
remove D353
# SD/TTL module 5v LED
remove R353
remove D352
# SD/TTL right 10x2
remove P354

View File

@ -1,61 +0,0 @@
package com.rusefi;
import com.rusefi.bom.BomBuilder;
import com.rusefi.misc.CmpMergeTool;
import com.rusefi.misc.RemoveUnneededTraces;
import com.rusefi.pcb.PcbMergeTool;
import com.rusefi.pcb.PcbMoveTool;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
/**
* (c) Andrey Belomutskiy
* 12/16/13.
*/
public class Main {
private static final Map<String, Class> TOOLS = new TreeMap<String, Class>(String.CASE_INSENSITIVE_ORDER);
static {
registerTool("pcb_move", PcbMoveTool.class);
registerTool("pcb_merge", PcbMergeTool.class);
registerTool("copy", PcbCopyTool.class);
registerTool("cmp_merge", CmpMergeTool.class);
registerTool("rename", RenameComponents.class);
registerTool("optimize", RemoveUnneededTraces.class);
registerTool("bom_builder", BomBuilder.class);
}
private static void registerTool(String name, Class<?> clazz) {
TOOLS.put(name, clazz);
}
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
if (args.length < 1) {
System.out.println("At least tool name parameter expected");
System.out.println(TOOLS.size() + " tools available:");
for (String name : TOOLS.keySet())
System.out.println("\t\t" + name);
return;
}
String name = args[0];
Class c = TOOLS.get(name);
if (c == null)
throw new NullPointerException("No tool: " + name);
Method main = c.getMethod("main", String[].class);
List<String> asList = Arrays.asList(args);
String[] a = asList.subList(1, asList.size()).toArray(new String[args.length - 1]);
main.invoke(null, new Object[]{a});
}
}

View File

@ -1,106 +0,0 @@
package com.rusefi;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RenameComponents {
private static final Map<String, String> replaceMap = new HashMap<String, String>();
public static void main(String[] args) throws IOException {
if (args.length != 3) {
System.out.println("Three paramters expected:");
System.out.println(" replace_replace_file source_folder destination_folder");
return;
}
String requestFileName = args[0];
File file = new File(requestFileName);
if (!file.exists() || !file.isFile())
throw new IllegalArgumentException("No replace_request_file");
String sourceDir = args[1];
assertFolder(sourceDir);
String destinationDir = args[2];
assertFolder(destinationDir);
readReplaceRequest(file);
for (String fileName : new File(sourceDir).list())
processFile(sourceDir, destinationDir, fileName);
}
private static void processFile(String sourceDir, String destinationDir, String fileName) throws IOException {
String newFileName = destinationDir + File.separator + fileName;
BufferedWriter bw = new BufferedWriter(new FileWriter(newFileName));
String sourceFile = sourceDir + File.separator + fileName;
BufferedReader br = new BufferedReader(new FileReader(sourceFile));
System.out.println("Making " + newFileName + " from " + sourceFile);
String line;
while ((line = br.readLine()) != null) {
line = processLine(line);
bw.append(line + "\r\n");
}
bw.close();
}
private static String processLine(String line) {
for (Map.Entry<String, String> e : replaceMap.entrySet()) {
String from = e.getKey();
String to = e.getValue();
line = Pattern.compile(" " + from + "$").matcher(
line).replaceAll(Matcher.quoteReplacement(" " + to));
line = processLine(line, " " + from + ";", " " + to + ";");
line = processLine(line, " " + from + ")", " " + to + ")");
line = processLine(line, " " + from + " ", " " + to + " ");
line = processLine(line, " " + from + "-", " " + to + "-");
line = processLine(line, "\"" + from + "\"", "\"" + to + "\"");
}
return line;
}
private static String processLine(String line, String s, String s1) {
return line.replace(s, s1);
}
private static void readReplaceRequest(File file) throws IOException {
String line;
BufferedReader br = new BufferedReader(new FileReader(file));
int lineNumber = 0;
while ((line = br.readLine()) != null) {
lineNumber++;
line = line.trim();
if (line.isEmpty())
continue;
String[] s = line.split("\\;");
if (s.length != 2)
throw new IllegalArgumentException("Invalid replace request: " + line);
String from = s[0];
String to = s[1];
if (replaceMap.containsKey(from) || replaceMap.containsValue(from))
throw new IllegalArgumentException("Name already mentioned: " + from + " @" + lineNumber);
if (replaceMap.containsKey(to) || replaceMap.containsValue(to))
throw new IllegalArgumentException("Name already mentioned: " + to + " @" + lineNumber);
replaceMap.put(from, to);
System.out.println("Replacing [" + from + "] by [" + to + "]");
}
}
private static void assertFolder(String dir) {
File d = new File(dir);
if (!d.exists() || !d.isDirectory())
throw new IllegalArgumentException("No such folder: " + dir);
}
}

View File

@ -1,230 +0,0 @@
package com.rusefi.bom;
import com.rusefi.pcb.ModuleNode;
import com.rusefi.pcb.PcbNode;
import com.rusefi.util.FileUtils;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
/**
* (c) Andrey Belomutskiy
* 2/2/14
*/
public class BomBuilder {
private static final String DELIMITER = ",";
private static final CpmFileModel allComponents = new CpmFileModel();
private static final String IGNORE_TAG = "ignore";
private static String cmpFileName;
private static String bomDictionaryName;
private static Map<String, BomRecord> bomDictionary;
private static Set<String> ignoreList = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
private static boolean printQtyInFull = true;
private static boolean printPadCount = false;
private static boolean printReference = false;
private static boolean printUserComment = false;
private static PcbNode pcb;
public static void main(String[] args) throws IOException {
if (args.length < 3) {
System.out.println("bom_builder FILE_NAME.CMP PCB.kicad_pcb COMPONENTS_DICTIONARY.CSV OUTPUT_FILE.CSV");
return;
}
cmpFileName = args[0];
String pcbFileName = args[1];
bomDictionaryName = args[2];
String outputFileName = args[3];
pcb = PcbNode.readFromFile(pcbFileName);
for (int i = 4; i < args.length; i++) {
String option = args[i].trim();
if (option.equalsIgnoreCase("printUserComment")) {
printUserComment = true;
} else if (option.equalsIgnoreCase("printreference")) {
printReference = true;
} else if (option.equalsIgnoreCase("printpadcount")) {
printPadCount = true;
} else if (option.equalsIgnoreCase("skipqtyinfull")) {
printQtyInFull = false;
}
}
allComponents.readCmpFile(FileUtils.readFileToList(cmpFileName));
bomDictionary = readBomDictionary(FileUtils.readFileToList(bomDictionaryName));
writeCompactPartList(outputFileName + "_compact.csv", bomDictionary);
writeFullPartList(outputFileName + "_full.csv", bomDictionary);
}
private static void writeMissingElements(Map<String, BomRecord> bomDictionary, BufferedWriter bw, Map<String, List<BomComponent>> componentsByKey) throws IOException {
for (Iterator<Map.Entry<String, List<BomComponent>>> i = componentsByKey.entrySet().iterator(); i.hasNext(); ) {
Map.Entry<String, List<BomComponent>> e = i.next();
String key = e.getKey();
if (ignoreList.contains(key))
continue;
BomRecord bomRecord = bomDictionary.get(key);
if (bomRecord == null) {
bw.write("### no BOM record for " + key + ": " + e.getValue() + "\r\n");
i.remove();
}
}
bw.write("\r\n\n\n\n");
}
private static void writeFullPartList(String outputFileName, Map<String, BomRecord> bomDictionary) throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter(outputFileName));
Map<String, List<BomComponent>> componentsByKey = new TreeMap<String, List<BomComponent>>(allComponents.componentsByKey);
log("Writing full parts list to " + outputFileName);
writeCommonHeader(bw);
writeMissingElements(bomDictionary, bw, componentsByKey);
StringBuilder notMounted = new StringBuilder();
for (Map.Entry<String, List<BomComponent>> e : componentsByKey.entrySet()) {
// for instance, SM0805_47pF
String componentName = e.getKey();
List<BomComponent> list = e.getValue();
if (ignoreList.contains(componentName))
continue;
BomRecord bomRecord = bomDictionary.get(componentName);
if (bomRecord == null)
throw new NullPointerException();
for (BomComponent c : list) {
if (!findModule(c.getReference())) {
bw.write("Not mounted: " + c.getReference() + "\r\n");
continue;
}
writeLine(bw, bomRecord, 1, c.getReference() + ": ", c.getReference());
}
}
bw.close();
}
private static boolean findModule(String reference) {
for (PcbNode node : pcb.iterate("module")) {
if (node instanceof ModuleNode) {
ModuleNode mn = (ModuleNode) node;
if (mn.getReference().equalsIgnoreCase(reference))
return true;
}
}
return false;
}
private static void writeCompactPartList(String outputFileName, Map<String, BomRecord> bomDictionary) throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter(outputFileName));
Map<String, List<BomComponent>> componentsByKey = new TreeMap<String, List<BomComponent>>(allComponents.componentsByKey);
log("Writing compact parts list to " + outputFileName);
writeCommonHeader(bw);
writeMissingElements(bomDictionary, bw, componentsByKey);
for (Map.Entry<String, List<BomComponent>> e : componentsByKey.entrySet()) {
// for instance, SM0805_47pF
String componentName = e.getKey();
if (ignoreList.contains(componentName))
continue;
List<BomComponent> list = e.getValue();
log(list.size() + " items of " + componentName);
BomRecord bomRecord = bomDictionary.get(componentName);
if (bomRecord == null)
throw new NullPointerException();
writeLine(bw, bomRecord, list.size(), "", "");
}
bw.close();
}
private static void writeCommonHeader(BufferedWriter bw) throws IOException {
bw.write("### this file was generated by rusEfi bom_builder on " + new Date() + "\r\n");
bw.write("### " + allComponents.componentsCount + " components in " + allComponents.linesCount + " lines of " + cmpFileName + "\r\n");
bw.write("### " + allComponents.componentsByKey.size() + " kinds of components in input file\r\n");
bw.write("### " + bomDictionary.size() + " entries in BOM dictionary " + bomDictionaryName + "\r\n");
bw.write("### " + ignoreList.size() + " entries in ignore list\r\n");
}
private static void writeLine(BufferedWriter bw, BomRecord bomRecord, int quantity, String prefix, String reference) throws IOException {
bw.write(quantity + DELIMITER +
bomRecord.getStorePart() + DELIMITER +
prefix + bomRecord.getCustomerRef() + DELIMITER +
(printReference ? reference + DELIMITER : "") +
(printUserComment ? bomRecord.getUserComment() + DELIMITER : "") +
(printPadCount ? bomRecord.getPadCount() + DELIMITER : "") +
"\r\n"
);
}
private static Map<String, BomRecord> readBomDictionary(List<String> strings) {
Map<String, BomRecord> result = new TreeMap<String, BomRecord>(String.CASE_INSENSITIVE_ORDER);
for (String line : strings) {
line = line.trim();
if (line.isEmpty())
continue;
if (line.startsWith("#")) {
log("Skipping comment: " + line);
continue;
}
String[] tokens = line.split(",");
if (tokens.length < 2) {
log("Unexpected line: " + line + " Expected at least two tokens but " + tokens.length);
System.exit(-1);
}
String ref = tokens[0];
String mfgPart = tokens[1];
if (mfgPart.equalsIgnoreCase(IGNORE_TAG)) {
log("Ignoring entry: " + ref);
ignoreList.add(ref);
continue;
}
if (tokens.length != 6) {
log("Unexpected line: [" + line + "] Expected 6 tokens but " + tokens.length);
System.exit(-1);
}
String storePart = tokens[2];
String componentName = tokens[3];
int padCount = Integer.parseInt(tokens[4]);
String customerRef = tokens[5];
result.put(ref, new BomRecord(mfgPart, storePart, customerRef, padCount, componentName));
log("BOM key: " + ref);
log("mfgPartNo: " + mfgPart);
log("storePartNo: " + storePart);
}
log("Got " + result.size() + " entries in BOM dictionary");
log("Got " + ignoreList.size() + " entries in ignore list");
return result;
}
protected static void log(String msg) {
System.out.println(msg);
}
}

View File

@ -1,22 +0,0 @@
package com.rusefi.bom;
/**
* (c) Andrey Belomutskiy
* 2/2/14
*/
public class BomComponent {
private final String reference;
public BomComponent(String reference) {
this.reference = reference;
}
public String getReference() {
return reference;
}
@Override
public String toString() {
return reference;
}
}

View File

@ -1,41 +0,0 @@
package com.rusefi.bom;
/**
* (c) Andrey Belomutskiy
* 2/2/14
*/
public class BomRecord {
private final String mfgPart;
private final String storePart;
private final String customerRef;
private final int padCount;
private final String userComment;
public BomRecord(String mfgPart, String storePart, String customerRef, int padCount, String userComment) {
this.mfgPart = mfgPart;
this.storePart = storePart;
this.customerRef = customerRef;
this.padCount = padCount;
this.userComment = userComment;
}
public String getMfgPart() {
return mfgPart;
}
public String getStorePart() {
return storePart;
}
public String getCustomerRef() {
return customerRef;
}
public int getPadCount() {
return padCount;
}
public String getUserComment() {
return userComment;
}
}

View File

@ -1,75 +0,0 @@
package com.rusefi.bom;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import static com.rusefi.bom.BomBuilder.log;
/**
* (c) Andrey Belomutskiy
* 2/22/14
*/
public class CpmFileModel {
public final Map<String, List<BomComponent>> componentsByKey = new TreeMap<String, List<BomComponent>>(String.CASE_INSENSITIVE_ORDER);
public int linesCount;
public int componentsCount;
public void readCmpFile(List<String> list) throws IOException {
linesCount = list.size();
componentsCount = 0;
for (int lineIndex = 0; lineIndex < list.size(); lineIndex++) {
String line = list.get(lineIndex);
if ("BeginCmp".equals(line)) {
componentsCount++;
lineIndex += 2; // skipping 'TimeStamp' line
String a = list.get(lineIndex);
String reference = parseReferenceLine(a);
log(lineIndex + ": reference: " + reference);
lineIndex++;
String valueLine = list.get(lineIndex);
String value = parseValueLine(valueLine);
log(lineIndex + ": value: " + value);
lineIndex++;
String packageLine = list.get(lineIndex);
String packageName = packageLine.split("=")[1].trim();
packageName = cutLastSymbol(packageName);
log(lineIndex + ": package: " + packageName);
lineIndex++;
String package_value = packageName + "_" + value;
List<BomComponent> l = componentsByKey.get(package_value);
if (l == null) {
l = new ArrayList<BomComponent>();
componentsByKey.put(package_value, l);
}
l.add(new BomComponent(reference));
}
}
}
private static String parseValueLine(String s) {
String value = s.split("=")[1].trim();
return cutLastSymbol(value);
}
private static String parseReferenceLine(String line) {
String reference = line.split("=")[1].trim();
return cutLastSymbol(reference);
}
private static String cutLastSymbol(String reference) {
return reference.substring(0, reference.length() - 1);
}
}

View File

@ -1,43 +0,0 @@
package com.rusefi.misc;
import com.rusefi.util.FileUtils;
import java.io.*;
import java.util.List;
/**
* 12/8/13
* (c) Andrey Belomutskiy
*/
public class CmpMergeTool {
private CmpMergeTool() {
}
public static void main(String[] args) throws IOException {
if (args.length < 2) {
System.out.println("This tool merges .cmp KiCad component mappting files");
System.out.println("usage:");
System.out.println("NetListMerge DEST_FILE SOURCE_1 SOURCE_2 [SOURCE_x]*");
return;
}
String destinationFile = args[0];
System.out.println("Writing result into " + destinationFile);
BufferedWriter bw = new BufferedWriter(new FileWriter(destinationFile));
bw.write("Cmp-Mod V01 Created by CvPcb (2013-07-07 BZR 4022)-stable date = 01/12/2013 21:54:01\r\n");
for (int i = 1; i < args.length; i++) {
String sourceFile = args[i];
List<String> list = FileUtils.readFileToList(sourceFile);
for (String line : list.subList(1, list.size() - 2))
bw.write(line + "\r\n");
}
bw.write("\r\nEndListe\r\n");
bw.close();
}
}

View File

@ -1,7 +0,0 @@
inc
config
TunerStudio.properties
lib
images
output.xml
rusEFI-project*.md

View File

@ -1,35 +0,0 @@
<project default="jar">
<property name="javac.source" value="1.8"/>
<property name="javac.target" value="1.8"/>
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile">
<mkdir dir="build/classes"/>
<javac
source="${javac.source}"
debug="true"
target="${javac.target}"
destdir="build/classes"
classpath="../../java_console/lib/junit.jar:../../java_console/lib/annotations.jar:lib/TunerStudioMS.jar">
<src path="screen/src/main/java"/>
<src path="../../java_console/inifile/src/main/java"/>
</javac>
</target>
<target name="jar" depends="compile">
<mkdir dir="build/jar"/>
<jar destfile="ScreenShots.jar" basedir="build/classes">
<manifest>
<attribute name="Main-Class" value="com.rusefi.ScreenCaptureLauncher"/>
</manifest>
<zipfileset dir="build/classes" includes="**/*.class"/>
</jar>
</target>
</project>

View File

@ -1,16 +0,0 @@
step 0:
In TunerStudio, set "Options->Preferences->Load Last Project on startup". Exit TunerStudio.
step 1:
``ant``
Expected output: ScreenShots.jar
step 2:
Copy ScreenShots.jar inside

View File

@ -1,23 +0,0 @@
import com.rusefi.ScreenGenerator;
public class ScreenCaptureLauncher {
public static void main(String[] args) throws Exception {
startTunerStudio(args);
ScreenGenerator.main(args);
}
private static void startTunerStudio(String[] args) {
Thread t = new Thread(() -> {
try {
TunerStudio.main(args);
} catch (Exception e) {
e.printStackTrace();
throw new IllegalStateException(e);
}
});
t.setDaemon(false);
t.start();
}
}

View File

@ -1,7 +0,0 @@
package com.rusefi;
import java.awt.*;
interface Callback {
void onComponent(Component parent, Component component);
}

View File

@ -1,102 +0,0 @@
package com.rusefi;
import com.rusefi.xml.*;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
/**
* Unused and replaced by http://rusefi.online?
* REMOVE ONE DAY PRETTY SOON
*/
public class MdGenerator {
public static final String PREFIX = "rusEFI-project";
static String FOLDER;
private static final String EOL = "\r\n";
public static void main(String[] args) throws Exception {
//FOLDER = "images/";
FOLDER = "overview/TS_generated/";
ContentModel contentModel = XmlUtil.readModel(ContentModel.class, ScreenGenerator.FILE_NAME);
generateTopLevel(contentModel);
for (TopLevelMenuModel topLevelMenuModel : contentModel.getTopLevelMenus()) {
String pageName = getPageName(topLevelMenuModel);
FileWriter md = new FileWriter(pageName + ".md");
md.append("# [rusEFI project](rusEFI-project)"+ EOL);
md.append("## " + topLevelMenuModel.getTitle() + EOL);
for (DialogModel dialogModel : topLevelMenuModel.getDialogs()) {
md.append("[" + dialogModel.getDialogTitle() + "](" + "#" + safeUrl(dialogModel.getDialogTitle()).toLowerCase() + ")" + EOL + EOL);
}
for (DialogModel dialogModel : topLevelMenuModel.getDialogs()) {
appendDialog(md, dialogModel);
}
md.write(EOL);
md.write("generated by " + MdGenerator.class + " on " + new Date());
md.write(EOL);
md.close();
}
}
private static String getPageName(TopLevelMenuModel topLevelMenuModel) {
return PREFIX + "-" + safeUrl(topLevelMenuModel.getTitle());
}
private static String safeUrl(String title) {
return title.replace(" ", "-");
}
private static void generateTopLevel(ContentModel contentModel) throws IOException {
FileWriter md = new FileWriter(PREFIX + ".md");
for (TopLevelMenuModel topLevelMenuModel : contentModel.getTopLevelMenus()) {
String url = getPageName(topLevelMenuModel);
md.append("# [" + topLevelMenuModel.getTitle() + "](" + url + ")" + EOL + EOL);
md.append("<a href='" + url + "'>" + getImageTag(topLevelMenuModel.getImageName()) + "</a>");
for (DialogModel dialogModel : topLevelMenuModel.getDialogs()) {
md.append("[" + dialogModel.getDialogTitle() + "](" + url + "#" + safeUrl(dialogModel.getDialogTitle()).toLowerCase() + ")" + EOL + EOL);
}
md.append(EOL);
}
md.write(EOL);
md.write("generated by " + MdGenerator.class + " on " + new Date());
md.write(EOL);
md.close();
}
private static void appendDialog(FileWriter md, DialogModel dialogModel) throws IOException {
md.append("### " + dialogModel.getDialogTitle() + EOL);
md.append(getImageTag(dialogModel.getImageName()) + EOL);
for (FieldModel fieldModel : dialogModel.fields) {
String tooltip = fieldModel.getTooltip();
if (tooltip.length() > 0) {
tooltip = tooltip.replace("\\n", EOL);
md.append(fieldModel.getUiName() + ": " + tooltip + EOL + EOL);
}
}
}
private static String getImageTag(String imageName) {
String IMG_SUFFIX = ")" + EOL;
String IMG_PREFIX = "![x](";
return IMG_PREFIX + FOLDER + imageName + IMG_SUFFIX;
}
}

View File

@ -1,271 +0,0 @@
package com.rusefi;
import com.opensr5.ini.IniFileModel;
import com.rusefi.xml.*;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.RasterFormatException;
import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.util.*;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
public class ScreenGenerator {
public static final String FILE_NAME = "output.xml";
private static final String PNG = "png";
private static ArrayList<AbstractButton> topLevelButtons = new ArrayList<>();
private static final int MENU_CLICK_DELAY = 50;
private static final int TOP_MENU_CLICK_DELAY = 200;
private static final int WAITING_FOR_FRAME_PERIOD = 1000;
private static final String DESTINATION = "images" + File.separator;
static ContentModel contentModel = new ContentModel();
static IniFileModel iniFileModel = new IniFileModel();
static Map<String, com.opensr5.ini.DialogModel.Field> byCleanUiName = new TreeMap<>();
public static void main(String[] args) throws Exception {
if (args.length != 1) {
System.out.println("One parameter expected: path to directory containing rusefi.ini file");
System.exit(-1);
}
iniFileModel.readIniFile(".");
for (Map.Entry<String, com.opensr5.ini.DialogModel.Field> a : iniFileModel.getAllFields().entrySet()) {
String cleanUiName = cleanName(a.getValue().getUiName());
byCleanUiName.put(cleanUiName, a.getValue());
}
if (byCleanUiName.isEmpty())
throw new IllegalStateException("Something not right with input file. April 29 version is needed");
System.out.println("mkdirs " + DESTINATION);
new File(DESTINATION).mkdirs();
System.out.println("Launching TunerStudioIntegration");
Frame mainFrame = TunerStudioIntegration.findMainFrame();
waitForMainFrame(mainFrame);
System.out.println("Done discovering buttons, " + topLevelButtons.size());
Thread.sleep(2 * WAITING_FOR_FRAME_PERIOD); // we have this sleep to avoid an artifact on first screenshot
handleTopLevelButtons(mainFrame, topLevelButtons);
XmlUtil.writeXml(contentModel, ContentModel.class, FILE_NAME);
}
private static void waitForMainFrame(Frame mainFrame) throws InterruptedException {
while (topLevelButtons.isEmpty()) {
UiUtils.visitComponents(mainFrame, "", (parent, component) -> {
if (component instanceof AbstractButton) {
AbstractButton ab = (AbstractButton) component;
System.out.println("topLevelButton " + ab.getText());
if (TunerStudioIntegration.isTopLevelMenuButton(component)) {
topLevelButtons.add(ab);
}
}
});
Thread.sleep(WAITING_FOR_FRAME_PERIOD);
}
}
private static void handleTopLevelButtons(Frame frame, ArrayList<AbstractButton> topLevelButtons) throws Exception {
for (AbstractButton topLevel : topLevelButtons) {
handleTopLevelButton(frame, topLevel);
}
}
private static void handleTopLevelButton(Frame frame, AbstractButton topLevel) throws Exception {
SwingUtilities.invokeAndWait(topLevel::doClick);
Thread.sleep(TOP_MENU_CLICK_DELAY);
String imageName = "top_level_" + cleanName(topLevel.getText()) + "." + PNG;
TopLevelMenuModel topLevelMenuModel = new TopLevelMenuModel(topLevel.getText(), imageName);
ScreenGenerator.contentModel.getTopLevelMenus().add(topLevelMenuModel);
ImageIO.write(
UiUtils.getScreenShot(frame),
PNG,
new File(DESTINATION + imageName));
List<JMenuItem> menuItems = TunerStudioIntegration.findMenuItems(frame);
for (JMenuItem menuItem : menuItems) {
handleMenuItem(menuItem, topLevelMenuModel);
}
}
private static void handleMenuItem(JMenuItem menuItem, TopLevelMenuModel topLevelMenuModel) throws InterruptedException, InvocationTargetException {
SwingUtilities.invokeAndWait(menuItem::doClick);
Thread.sleep(MENU_CLICK_DELAY);
AtomicReference<JDialog> ref = new AtomicReference<>();
SwingUtilities.invokeAndWait(() -> ref.set(TunerStudioIntegration.findDynamicDialog()));
// let's give it time to appear on the screen
Thread.sleep(MENU_CLICK_DELAY);
JDialog dialog = ref.get();
if (dialog == null) {
System.out.println("Not found for " + menuItem);
return;
}
String dialogTitle = dialog.getTitle();
String imageName = "dialog_" + cleanName(dialogTitle) + "." + PNG;
DialogModel dialogModel = new DialogModel(dialogTitle, imageName);
topLevelMenuModel.getDialogs().add(dialogModel);
SwingUtilities.invokeAndWait(() -> {
try {
findSlices(dialog, dialogModel);
if (dialog == null) {
// this happens for example for disabled menu items
return;
}
// Robot robot = new Robot();
// Rectangle captureRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
// BufferedImage screenFullImage = robot.createScreenCapture(captureRect);
// ImageIO.write(screenFullImage, PNG, new File(DESTINATION + "full_" + d.getTitle() + ".png"));
BufferedImage dialogScreenShot = UiUtils.getScreenShot(dialog);
ImageIO.write(
dialogScreenShot,
PNG,
new File(DESTINATION + imageName));
dialog.setVisible(false);
dialog.dispose();
} catch (Exception e) {
throw new IllegalStateException(e);
}
});
}
private static void saveSlices(String dialogTitle, Map<Integer, String> yCoordinates, BufferedImage dialogScreenShot, DialogModel dialogModel) {
System.out.println("Label Y coordinates: " + yCoordinates);
yCoordinates.put(0, "top");
yCoordinates.put(dialogScreenShot.getHeight(), "bottom");
List<Integer> sorted = new ArrayList<>(yCoordinates.keySet());
for (int i = 0; i < sorted.size() - 1; i++) {
int fromY = sorted.get(i);
int toY = sorted.get(i + 1);
String sectionNameWithSpecialCharacters = yCoordinates.get(sorted.get(i));
String sectionName = cleanName(sectionNameWithSpecialCharacters);
BufferedImage slice;
try {
slice = dialogScreenShot.getSubimage(0, fromY, dialogScreenShot.getWidth(), toY - fromY);
} catch (RasterFormatException e) {
System.out.println("Dialog does not fit screen? " + sectionNameWithSpecialCharacters);
continue;
}
if (slice == null) {
System.out.println("Weird");
continue;
}
String fileName = cleanName(dialogTitle) + "_slice_" + fromY + "_" + sectionName + "." + PNG;
com.opensr5.ini.DialogModel.Field f = byCleanUiName.get(sectionName);
if (f == null)
continue;
String fieldName = f.getKey();
String tooltip = iniFileModel.tooltips.get(fieldName);
dialogModel.fields.add(new FieldModel(sectionNameWithSpecialCharacters, fieldName, fileName, tooltip));
File output = new File(DESTINATION + fileName);
if (output == null) {
System.out.println(sectionName + " in " + fileName + " was not a success");
continue;
}
try {
ImageIO.write(slice, PNG, output);
} catch (Exception e) {
System.out.println(sectionName + " in " + fileName + " was not a success?");
continue;
}
}
}
private static void findSlices(JDialog dialog, DialogModel dialogModel) {
UiUtils.visitComponents(dialog, "Dynamic dialog", new Callback() {
@Override
public void onComponent(Component parent, Component component) {
if (component instanceof JPanel) {
JPanel panel = (JPanel) component;
handleBox(dialog.getTitle(), panel, dialogModel);
}
}
});
}
private static void handleBox(String dialogTitle, JPanel panel, DialogModel dialogModel) {
if (panel.getLayout() instanceof BoxLayout) {
BoxLayout layout = (BoxLayout) panel.getLayout();
if (layout.getAxis() == BoxLayout.X_AXIS)
return;
BufferedImage panelImage = UiUtils.getScreenShot(panel);
Map<Integer, String> yCoordinates = new TreeMap<>();
int relativeY = panel.getLocationOnScreen().y;
UiUtils.visitComponents(panel, "Looking inside the box", new Callback() {
@Override
public void onComponent(Component parent, Component component) {
if (component instanceof JLabel) {
JLabel label = (JLabel) component;
if (!label.isVisible() || label.getSize().width == 0)
return;
String labelText = label.getText();
if (labelText.length() > 0) {
System.out.println("Looking at " + label);
try {
yCoordinates.put(label.getLocationOnScreen().y - relativeY, labelText);
} catch (IllegalComponentStateException e) {
System.out.printf("Did not go well for " + label);
}
}
}
}
});
saveSlices(dialogTitle, yCoordinates, panelImage, dialogModel);
}
}
private static String cleanName(String title) {
title = title.replace(' ', '_');
title = title.replace(")", "");
title = title.replace("%", "");
title = title.replace(">", "");
title = title.replace("<", "");
title = title.replace("?", "");
title = title.replace("(", "");
title = title.replace('/', '_');
title = title.replace('\\', '_');
title = title.replace(" ", " ");
return title;
}
}

View File

@ -1,62 +0,0 @@
package com.rusefi;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.List;
public class TunerStudioIntegration {
/**
* these magic class names are specific to TS build
* At the moment we use 3.1.02 names
* http://www.tunerstudio.com/downloads2/TunerStudioMS_Setup_v3.1.02.exe
*/
private static final String VERSION = "3.1.02";
private static final String TS_DIALOG = "com.efiAnalytics.ui.dg";
private static final String TS_POPUP_MAIN_MENU = "aH.gc";
private static final String TUNER_STUDIO = "TunerStudio";
static Frame findMainFrame() throws InterruptedException {
while (true) {
Frame[] all = JFrame.getFrames();
for (Frame frame : all) {
String frameTitle = frame.getTitle();
System.out.println("I see " + frameTitle);
if (frameTitle.contains(TUNER_STUDIO)) {
if (!frameTitle.contains(VERSION)) {
System.out.println("Title does not look right " + frameTitle + " not " + VERSION);
System.exit(-1);
}
return frame;
}
}
Thread.sleep(1000);
}
}
static boolean isTopLevelMenuButton(Component component) {
return component instanceof bi.b;
}
static java.util.List<JMenuItem> findMenuItems(Frame frame) {
List<JMenuItem> menuItems = new ArrayList<>();
UiUtils.visitComponents(frame, "Just clicked ", (parent, component) -> {
if (component instanceof JMenuItem && component.getClass().getName().endsWith(TS_POPUP_MAIN_MENU)) {
JMenuItem menuItem = (JMenuItem) component;
System.out.println("Menu item " + menuItem.getText());
menuItems.add(menuItem);
}
});
return menuItems;
}
static JDialog findDynamicDialog() {
for (Window d : Dialog.getWindows()) {
if (d.getClass().getName().equals(TS_DIALOG) && d.isVisible()) {
return (JDialog) d;
}
}
return null;
}
}

View File

@ -1,56 +0,0 @@
package com.rusefi;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
public class UiUtils {
public static void visitComponents(Component cmp, String prefix, Callback callback) {
visitComponents(cmp, null, prefix, callback);
}
public static void visitComponents(Component component, Component parent, String prefix, Callback callback) {
if (component == null)
throw new NullPointerException("component");
if (component instanceof AbstractButton) {
AbstractButton ab = (AbstractButton) component;
System.out.println("[button " + ab.getText() + "]");
} else if (component instanceof JLabel) {
JLabel ab = (JLabel) component;
System.out.println("[label " + ab.getText() + "]");
} else if (component instanceof JComboBox) {
JComboBox ab = (JComboBox) component;
System.out.println("[combo " + ab.getSelectedItem() + "]");
} else if (component instanceof JPanel) {
JPanel p = (JPanel) component;
System.out.println("[panel " + p.getLayout() + "] children=" + p.getComponents().length);
System.out.println("[panel " + p.getLayout() + "] " + p.getLocation() + " size = " + p.getSize());
}
System.out.println(prefix + " I see " + component.getClass());
callback.onComponent(parent, component);
Container container = (Container) component;
if (container == null) {
// Not a container, return
return;
}
// Go visit and add all children
for (Component subComponent : container.getComponents()) {
if (subComponent == null)
continue;
visitComponents(subComponent, component, prefix + " " + subComponent.getClass().getSimpleName(), callback);
}
}
public static BufferedImage getScreenShot(Component component) {
BufferedImage image = new BufferedImage(
component.getWidth(),
component.getHeight(),
BufferedImage.TYPE_INT_RGB
);
// call the Component's paint method, using
// the Graphics object of the image.
component.paint(image.getGraphics()); // alternately use .printAll(..)
return image;
}
}

View File

@ -1,34 +0,0 @@
package com.rusefi.xml;
import com.rusefi.ScreenGenerator;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@XmlRootElement
public class ContentModel {
private List<TopLevelMenuModel> menus = new ArrayList<>();
@XmlElementWrapper
@XmlElement(name = "keyword")
public List<TopLevelMenuModel> getTopLevelMenus() {
return menus;
}
@XmlAttribute
public String getVersion() {
return "Generated by " + ScreenGenerator.class + " on " + new Date();
}
@Override
public String toString() {
return "ContentModel{" +
"menus=" + menus +
'}';
}
}

View File

@ -1,50 +0,0 @@
package com.rusefi.xml;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import java.util.ArrayList;
import java.util.List;
public class DialogModel {
private String dialogTitle;
private String imageName;
@XmlElementWrapper
@XmlElement(name = "field")
public List<FieldModel> fields = new ArrayList<>();
public DialogModel() {
}
public DialogModel(String dialogTitle, String imageName) {
this.dialogTitle = dialogTitle;
this.imageName = imageName;
}
@XmlAttribute
public String getImageName() {
return imageName;
}
public void setImageName(String imageName) {
this.imageName = imageName;
}
@XmlAttribute
public String getDialogTitle() {
return dialogTitle;
}
public void setDialogTitle(String dialogTitle) {
this.dialogTitle = dialogTitle;
}
@Override
public String toString() {
return "DialogModel{" +
"dialogTitle='" + dialogTitle + '\'' +
", imageName='" + imageName + '\'' +
", fields=" + fields +
'}';
}
}

View File

@ -1,67 +0,0 @@
package com.rusefi.xml;
import javax.xml.bind.annotation.XmlAttribute;
public class FieldModel {
private String uiName;
private String fieldName;
private String imageName;
private String tooltip;
public FieldModel() {
}
public FieldModel(String uiName, String fieldName, String fileName, String tooltip) {
this.uiName = uiName;
this.fieldName = fieldName;
this.imageName = fileName;
this.tooltip = tooltip == null ? "" : tooltip;
}
@XmlAttribute
public String getUiName() {
return uiName;
}
public void setUiName(String uiName) {
this.uiName = uiName;
}
@XmlAttribute
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
@XmlAttribute
public String getImageName() {
return imageName;
}
public void setImageName(String imageName) {
this.imageName = imageName;
}
@XmlAttribute
public String getTooltip() {
return tooltip;
}
public void setTooltip(String tooltip) {
this.tooltip = tooltip;
}
@Override
public String toString() {
return "FieldModel{" +
"uiName='" + uiName + '\'' +
", fieldName='" + fieldName + '\'' +
", imageName='" + imageName + '\'' +
", tooltip='" + tooltip + '\'' +
'}';
}
}

View File

@ -1,55 +0,0 @@
package com.rusefi.xml;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import java.util.ArrayList;
import java.util.List;
public class TopLevelMenuModel {
private String title;
private String imageName;
@XmlElementWrapper
@XmlElement(name = "dialog")
private List<DialogModel> dialogs = new ArrayList<>();
public TopLevelMenuModel() {
}
public TopLevelMenuModel(String title, String imageName) {
this.title = title;
this.imageName = imageName;
}
@XmlAttribute
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@XmlAttribute
public String getImageName() {
return imageName;
}
public void setImageName(String imageName) {
this.imageName = imageName;
}
public List<DialogModel> getDialogs() {
return dialogs;
}
@Override
public String toString() {
return "TopLevelMenuModel{" +
"title='" + title + '\'' +
", imageName='" + imageName + '\'' +
", dialogs=" + dialogs +
'}';
}
}