Migrating wiki contents from Google Code

This commit is contained in:
Google Code Exporter
2015-03-27 11:16:11 -04:00
commit 50ef529a2c
8 changed files with 612 additions and 0 deletions
+171
View File
@@ -0,0 +1,171 @@
### General advice ###
**When making a new component make sure to look around and be consistent with what's already there. This applies to component appearance, behavior but also the code. It is important to keep the visual identity and user experience consistent across the board and to have a maintainable code base that follows the same coding standards and patterns. Good luck.**
### Prerequisites ###
* [JDK or JRE](http://www.oracle.com/technetwork/java/javase/downloads/index.html) 1.6.0\_10 or newer installed.
* Some Java IDE, preferably [Eclipse](http://www.eclipse.org/).
* SVN client, [Subclipse](http://subclipse.tigris.org/) is recommended if you're using Eclipse. Follow [this guide](http://code.google.com/p/diy-layout-creator/source/checkout) to learn how to checkout the project from the source control.
* Decent knowledge of Java language, in specific [generics](http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf), [annotations](http://download.oracle.com/javase/tutorial/java/javaOO/annotations.html) and [Graphics2D](http://download.oracle.com/javase/tutorial/2d/overview/index.html). Unlike the previous version, you actually need to write Java code to make the component look and behave the way you want it. This makes it harder for non-programmers to make their own components or customize existing ones, but it allows greater flexibility and performance.
### Component design guidelines ###
* Make sure that your code is formatted using **diylc** formatter (included in the source code) before committing.
* Add JavaDoc on the new classes and public method you add. In particular, classes should have a brief description of what they represent and author name. Typical methods should have a one-two line description of what they do, what are the parameters and what's the output.
* Output to console should go through log4j, as shown below. Make sure to use the appropriate logging levels (debug, info, warn, error).
```
private static final Logger LOG = Logger.getLogger(MyClass.class);
...
LOG.info("Something happened.");
```
* Icons for leaded components (resistors, jumpers, wires, etc) should be drawn in the SW-NE direction, like shown below
<p align='center'><img src='http://www.diy-fever.com/diylc/images/icons.png' /></p>
* Component should be drawn differently when selected. Where applicable, component border should be painted red (resistors). In some cases it's necessary to paint the whole component red (jumper, trace, etc). Components that are red by default (trace cut) should be painted blue when selected.
* When a large component (board, chassis, etc) is dragged, only outline should be pained, together with elements that correspond to its control points. Smaller components that do not cover large areas should be painted the same as when they are selected.
* When applying transparency - border, leads and label should not be made transparent to keep them readable. However, large surfaces, like component body should be made transparent.
Here's an example that should be a good guideline for painting components in different situations:
<p align='center'><img src='http://www.diy-fever.com/diylc/images/coloring.png' /></p>
### Adding to the main library ###
1. Checkout **DIYLC** and **Library** folders from the SVN.
1. New components should be created inside **org.diylc.components** package.
1. When you are done developing and testing the new components, build the project into **DIYLC/library/main.jar**.
1. Commit new classes to the source control.
1. Commit the updated library/main.jar back to the source control.
### Creating your own component library ###
1. Create a new Java project.
1. Add **diylc.jar** to the dependencies.
1. Since it's your own project, you can use whichever package name you like.
1. When you are done developing and testing the new components, build your project as jar file (any name except for main.jar is fine).
1. To add your components to the DIYLC project commit your new jar to **library** folder in the DIYLC source control. It should be automatically recognized by the app.
### Component API ###
Each component is a separate class. From coding perspective, components are **annotated entity bean classes that know how to draw themselves**. In order for a component class to be recognized by the application it has to meet the following:
* It must implement (directly or indirectly) **`IDIYComponent<T>`** component interface. It is advisable, whenever possible, to extends one of the abstract classes instead of making a component from scratch. See below the list of them and more details.
* It must have an empty constructor. It will be used by the application to instantiate the component, so there's no need for other constructors.
* It is not mandatory but highly recommended to annotate each component class with **`@ComponentDescriptor`** annotation. Application will recognize and install the component even without it, but you will be unable to configure all the aspects of a component and they will be defaulted to values that are potentially unsuitable for the component.
* All component properties should be annotated with **`@EditableProperty`** annotation.
* It should be compiled, packed inside a jar and placed in **library** folder.
* It must be serializable, i.e. all of it's fields need to be serializable. Any fields that are not necessary for serialization (typically caches) should be made `transient` as well as any fields that are not serializable. Component should know how to handle null values for those fields because they will be nulled after deserialization (when a project is loaded or copy/paste).
#### `IDIYComponent<T>` interface ####
Base interface for all components. Class parameter T represents type of component value. For instance, resistor will have it's value type set to `Resistance` and IC will have the type of `String` (to designate IC code). In some cases, components do not have a value (solder pads for instance) and it's ok to use `Void` type as a parameter. Below is the list of methods specified by the interface.
* **getName** and **setName** used to obtain and update component instance name. Annotate it with `@EditableProperty` to allow the user to edit component name.
* **getValue** and **setValue** similar to the previous.
* **getControlPointCount**, **getControlPoint** and **setControlPoint** used to obtain and update component's control points. Note that two instances of the same component may have a different number of control points, e.g. 16 and 8 pin versions of DIL IC.
* **isControlPointSticky** returns true for all control points that may stick to other components' control points. It may be the case that some control points may and the others may not, even within the same component. For instance, hookup wire component has 4 control points, but only two ending points may stick; the middle two are there only to control wire shape and should not stick to other control points.
* **getControlPointVisibilityPolicy** tells when to render each control point. Use `ALWAYS` to show the control point all the time, `WHEN_SELECTED` to show it only when component is selected or `NEVER` to never render the control point. Use `ALWAYS` for control points of resistors or similar components with ending points. `WHEN_SELECTED` is useful for board ending points, or shape control points of hookup wire. `NEVER` is suitable for components like IC or toggle switch that already have visible pins and should not render additional control points.
* **draw** pains the component instance onto the specified `Graphics2D`. Typically, this method would use the state of the component (control points, value and other user editable properties) to draw it.
* **drawIcon** paints the component icon of the specified size onto the specified `Graphics2D`. It should act like a static method, i.e. not depend on state of the component.
#### `@ComponentDescriptor` annotation ####
May be applied only to classes that implement `IDIYComponent` interface. Contains the following attributes:
* **name**: name of component type, e.g. "Resistor". This will be shown in the toolbox.
* **description**: one or two sentence description of the component. Will be shown in the tooltip over toolbox buttons.
* **author**: name of the developer who wrote the component.
* **instanceNamePrefix**: prefix that will be used to generate component instance names, e.g. "R" for resistors or "Q" for transistors. Application will append the index automatically to form component instance names, such as "Q1". Do not leave it blank or null because components instances will be named "1", "2", etc. Not something we want.
* **zOrder**: Z-order of the component, lower number meaning that component will be shown in the back. `IDIYComponent` lists major layers, but you can use any double number. Sometimes it's useful to add a small offset to an existing zOrder. For instance, solder pads and copper traces belong to the same layer but pads should be always rendered above traces to show the hole correctly. That's why it's zOrder is increased for 0.1.
* **stretchable**: when false, moving one control point will cause all the others to move together with it, default is `true`.
Sample usage:
```
@ComponentDescriptor(name = "Resistor", author = "Branislav Stojkovic", category = "Passive", instanceNamePrefix = "R",
description = "Resistor layout symbol", zOrder = IDIYComponent.COMPONENT)
public class Resistor extends AbstractLeadedComponent<Resistance> {
```
#### `@EditableProperty` annotation ####
May be applied only to component a property getter that has a matching setter. Application will recognize all editable properties and allow the user to edit them through GUI. Based on the property type, different GUI control will be created that is suitable for that data type. Below is the list of supported property types:
* **Byte** and **byte**: create a slider that has range from 0 to 127.
* **Color**: creates a colored panel that opens the color picker when clicked.
* **Enum**: creates a combo box with all values from the enum.
* **Measure**: creates a text field and combo box that edit measure value and units respectively. See the section that explains measures for more details.
* **String**: creates a text field.
Data types not listed above are currently not supported and should not be used with editable properties.
#### `AbstractComponent` class ####
Base class that should be use for pretty much all components that do not have a more suitable abstract class as a base. Defines component name and allows for editing. Also, this class contains a convenience method `getClosestOdd(int x)` that returns the closes odd number to the specified number. This is useful when drawing a component, as object with even size do no align perfectly to the baseline.
#### `AbstractTransparentComponent` class ####
Base class for all components that may be transparent. Extends `AbstractComponent` and defines alpha level ranging from 1 to 127. It is up to the component to use the protected byte field `alpha` when drawing.
#### `AbstractLeadedComponent` class ####
This class should be used as a base class for all components that have two flying leads and solid color body that may be represented with a `Shape` object, e.g. resistor or capacitor layout symbols. It extends `AbstractTransparentComponent` and adds common logic that makes it easier to create similar components. It has the following features:
* Draws leads automatically.
* Allows user to choose component body width and height.
* Defines two control points for lead ends.
* Defines component name and allows for editing.
* Positions and draws component body based on component location on the canvas.
Child classes should implement the following methods:
* **`getDefaultWidth`** and **`getDefaultHeight`** are used to determine default component body size. Note that users may change this later; do not use these when creating body shape.
* **`getBodyColor`** and **`getBorderColor`** are used to determine colors for body and body border.
* **`getBodyShape`** should return a `Shape` object that represents component body, e.g. rectangle for resistors or ellipse for ceramic capacitors. Shape should include the current component size into account, as specified in protected fields `width` and `height`. Shape should **not** include component placement into account and should be not be scaled or rotated. Also, the minimum bounding rectangle of the shape should have it's top left corner at point (0, 0). This is important because abstract class relies on that fact when drawing the component body on the canvas.
#### `AbstractCurvedComponent` class ####
This class should be used as a base class for all components that may be represented by a cubic (Bezier) curve. It extends `AbstractTransparentComponent` and adds 4 control points - two for start/end and two curve control points. Also, it allows the user to edit component color and draws 3 guidelines between the control points. It's up to the child class to draw the `CubicCurve2D` object and to provide the default color.
#### Measures ####
DIYLC supports several different measures. All of them extend **`AbstractMeasure<T>`** class. Type parameter is enum that implements **`Unit`** interface and designates measure units. To illustrate how it works, see the example below. It defines an enum for all possible resistance units (ohm, K, M) and then creates a measure that uses it.
```
public enum ResistanceUnit implements Unit {
R(1, "\u03a9"), K(1e3, "K"), M(1e6, "M");
double factor;
String display;
private ResistanceUnit(double factor, String display) {
this.factor = factor;
this.display = display;
}
@Override
public double getFactor() {
return factor;
}
@Override
public String toString() {
return display;
}
}
public class Resistance extends AbstractMeasure<ResistanceUnit> {
public Resistance(Double value, ResistanceUnit multiplier) {
super(value, multiplier);
}
@Override
public Resistance clone() throws CloneNotSupportedException {
return new Resistance(value, unit);
}
}
```
Measure class `Size` has a convenience method `convertToPixels` that converts any `Size` object to pixels.
+11
View File
@@ -0,0 +1,11 @@
```
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
export JAVA=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Commands/java
java -Xms512m -Xmx1024m -cp diylc.jar:lib org.diylc.DIYLCStarter
```
Note that path to your java 1.6 may be different.
* **Saving to a file doesn't do anything - busy cursor appears but nothing happens. What can I do?**<br><br>This is a Java bug that occurred in version 1.6.17 and hasn't been fixed yet. The best thing to do is to downgrade to any version between 1.6.10 and 1.6.16 and set the older version as default. It's not a problem to have multiple versions installed, but the old one needs to be default when running DIYLC.</li></ul>
* **What do those check boxes on the right side of the component editor do?**<br><br>They are used to set default values for the selected component(s). When checked, value on the left of the box will be used as a default for all components of that type.
+102
View File
@@ -0,0 +1,102 @@
### Systeemvereisten ###
* Java JRE/JDK 1.6.0\_10 of nieuwer
* 256MB vrije werkgeheugen
* 10 MB beschikbare schijfruimte
* Zip hulpprogramma om het archief uit te pakken(7-zip, WinZip, Total Commander, enz.)
### Het uitvoeren van de toepassing ###
* Onder Windows voert u gewoon het programma de diylc.exe uit.
* Onder **Linux / Unix** of **Mac**, opent u de terminal, verander de map naar diylc3 (cd '<'pad naar diylc3'>') en tikt u **./run.sh** in.
### Gebruikersinterface ###
Het gebruikersinterface kan in 4 belangrijke onderdelen worden ondergedeeld:
1. **Canvas** wordt gebruikt als WYSIWYG bewerker voor het project.
1. **Gereedschapskist** geeft en lijst van alle beschikbare componenten en staat u toe om het component die u wilt gebruiken toe te voegen.
1. **Hoofdmenu** biedt bestands bewerkingen, zoals het openen, opslaan, exporteren en klembord operaties, enz.
1. **Statusbalk** toont context verwante informatie, zoomcontrole, updateinformatie en geheugengebruik.
### Configureren van de toepassing ###
De applicatie kan vanuit dit menu worden geconfigureerd. Het bevat de volgende opties:
* **Anti-Aliasing** indien aangevinkt, zullen objecten en tekst er minder geblokt uitzien, maar het kost meer tijd om dit weer te geven. Als u last heeft van verminderde prestaties, kunt u deze optie uitschakelen.
* **Automatisch Aanmaken van Soldeereilandjes** indien aangevinkt, de toepassing zal automatisch soldeereilandjes maken wanneer een component aan de tekening wordt toegevoegd.
* **Automatisch Bewerken Modus** Indien aangevinkt, verschijnt het component bewerkenings dialoogvenster nadat elk component is gemaakt, op dezelfde manier versie werkt 1.x.
* **Doorgaan met Invoegen** wanneer aangevinkt, zal de laatst geselecteerde component-soort actief blijven nadat ze geplaatst werd, zodat u snel een groot aantal componenten van hetzelfde type kunt plaatsen.
* **Raster Exporteren** Indien aangevinkt, zullen rasterlijnen naar een bestand of printer worden geëxporteerd.
* **Hoge Kwaliteit Rendering** Indien aangevinkt, zal de beeldkwaliteit verbeteren, maar het kan de prestatie verlagen.
* **Uitlijnen op Raster** Wanneer aangevinkt, gebruiken “slepen & neerzetten” operaties de Controlepunten op het raster als ankerpunt, in plaats vandat ze de muiscursor beeldelement voor beeldelement volgen.
* **Kleverig Punten** indien aangevinkt, blijven componenten aan elkaar plakken wanneer ze verplaatst worden. Houdt u de Ctrl-toets ingedrukt terwijl u sleept om tijdelijk de Kleverig Punt-modus in of uit te schakelen. Zie "Controlepunten” voor meer info over de Controlepunten.
* **Thema** laat u een thema selecteren. Thema's worden van de thema's map in de DIYLC map gelezen. Zij omvatten achtergrondkleur en de rasterlijn kleur. U kunt uw eigen thema's toevoegen in de vorm van een XML-bestand in de thema's map. Het is het gemakkelijkst om te beginnen met een kopie van één van de bestaande bestanden.
### Het toevoegen van componenten aan de tekening ###
In deze sectie wordt uitgelegd, hoe u een bestaande component aan het project kunt voegen. Om te leren hoe u uw eigen componenten mag ontwikkelen, volgt u deze handleiding. Om een component te creëren, gaat u als volgt te werk:
* Zoek het component in de gereedschapskist. Componenten zijn in verschillende tabbladen onderverdeeld, dus zorg dat u het juiste tabblad gebruikt.
* Klik op de knop dat het gewenste component toont. Merk op dat de tekst in de statusbalk verklaart wat nu te doen.
* Klik op de gewenste locatie op het Canvas om het component te creëren. Sommige componenten (Soldeereilandjes, printbanen, enz.) zullen met een enkele klik worden gemaakt, anderen (zoals weerstanden, draadbruggen, enz.) vereisen twee klikken om beide eindpunten in te stellen. Instructies in de statusbalk leiden u door het proces. Het component zal doorzichtig worden, totdat het creatieproces is voltooid.
### Verplaatsen van componenten ###
De gemakkelijkste manier om een component te verplaatsen, is door klikken & slepen naar de gewenste locatie. Wanneer de muisaanwijzer zich boven een component bevindt, zal hij in een hand aanwijzer veranderen, en de statusbalk toont de namen van de componenten die zullen worden verplaatst.
Merk op dat:
* Als er meer dan één component geselecteerd is, worden ze allemaal verplaatst.
* De beweging van één (of meer) componenten zal alle componenten die vast zitten samen bewegen/uitstrekken. De statusbalk informeert u welke onderdelen het betreft. Houdt u Ctrl ingedrukt om de geselecteerde componenten los te maken, en hen individueel te verplaatsen.
### Controlepunten ###
Een component kan één of meer Controlepunten hebben. Controlepunten hebben een tweeledig doel:
* Het veranderen van de positie of het uiterlijk van een component, door het slepen van een controle punt over het Canvas. Bijvoorbeeld, het slepen van een eindpunt van een weerstand. Om een controlepunt te slepen moet het component worden geselecteerd. Dit maakt het makkelijker twee componenten die overlappende Controlepunten hebben los te maken, en controle te hebben over de Controlepunten die moeten worden gesleept. Dit werkt ook wanneer meerdere componenten worden geselecteerd. Indien twee of meerdere componenten vast aan elkaar zitten en u hen allemaal selecteert, kunt u hun Controlepunten op het zelfde moment allemaal tegelijk slepen.
Merk op dat:
* Statusbalk geeft alle componenten die door slepen & neerzetten worden beïnvloed weer.
* U kunt alleen Controlepunten slepen als ze groen worden.
### Bewerken van component eigenschappen ###
* Dubbelklikken op een component opent de component-bewerker – een dialoogvenster dat alle bewerkbare eigenschappen van de geselecteerde component(en) geeft.
* Aanvinken van het "standaard" selectievakje aan de rechterkant, zal die waarde de standaard instelling voor die eigenschap maken. Met andere woorden, alle Componenten die daarna worden gemaakt, zullen die waarde erven.
* Gegevensvelden die de uitkomst van een meting vragen (grootte, weerstand, capaciteit, enz.), accepteren constanten of wiskundige uitdrukkingen. Zo kunt u bijvoorbeeld 3/32 tikken, en het zal automatisch naar decimale worden geconverteerd. Zelfs meer ingewikkelde uitdrukkingen met haakjes en vier elementaire numerieke operatoren zijn mogelijk.
### Groeperen van componenten ###
Component groepen gedragen zich op een vergelijkbare manier als groepen in Corel Draw. Het idee is om twee of meer componenten bij elkaar te houden, en hen op hetzelfde moment te verplaatsen/bewerken/verwijderen. Om componenten te groeperen, selecteert u hen en drukt u op Ctrl+G (of selecteer “Geselecteerde Items Groeperen" uit het menu). Dubbelklikken op een van de gegroepeerde componenten opent de bewerker met alle wederzijdse eigenschappen van de geselecteerde componenten, En maakt het mogelijk ze allemaal op het zelfde moment te bewerken. Merk op dat, terwijl de componenten zijn gegroepeerd, u niet hun individuele controlepunten kunt slepen.
Om de geselecteerde groep op te opheffen, selecteert u ze, en drukt u op Ctrl+U (of selecteert u "Geselecteerde Groep Opheffen" uit het menu).
Merk op dat:
* Geneste groepen worden momenteel niet ondersteund. Als u twee groepen van componenten samen groept, zult u een grote groep maken, in plaats van een groep die twee groepen bevat.
### Het gebruiken van de statusbalk ###
Statusbalk bevat drie verschillende functies:
* **Informatiebalk** toont context gerelateerde informatie en begeleiding via het toepassingsprogramma.
* **Selectie Afmetingen** toont de afmetingen van de minimale begrenzende rechthoek die alle geselecteerde componenten bevat. Het maakt gebruik van de standaard instelling meeteenheid (in. of cm.)
* **Zoomregeling** staat u toe om in- of uit- te zoomen.
* **Automatisch Actualiseren** kennisgeving, wanneer de lamp ingeschakeld is, zijn er updates beschikbaar. Klik erop om meer informatie te krijgen.
* **Geheugenbalk** is het oranje icoontje aan de rechterkant. Het toont het geheugen gebruik. Om meer informatie te verkrijgen, zet u de muisaanwijzer erop. Klik erop om zoveel mogelijk geheugen vrij te maken. De kleur is rood als het geheugen verbruik hoog is.
+1
View File
@@ -0,0 +1 @@
<wiki:gadget url="http://google-code-project-hosting-gadgets.googlecode.com/svn/trunk/video/gcVideo.xml" up\_video="http://www.youtube.com/watch?v=3se2BkXJaiE" height="480" width="640" />
+146
View File
@@ -0,0 +1,146 @@
|English|Nederlands|
|:------|:---------|
|User manual for non-developers|Gebruikershandleiding voor niet-ontwikkelaars|
|Main Menu|Hoofdmenu|
|File|Bestand|
|+New|Nieuw|
|+Open|Openen|
|+Save|Opslaan|
|+Save As|Opslaan als|
|+Export to PDF|Exporteren als PDF|
|+Export to PNG|Exporteren als PNG|
|+Print|Afdrukken|
|+Trace Mask|Sporenmasker|
|++Export to PDF|Exporteren als PDF|
|++Export to PNG|Exporteren als PNG|
|++Print|Afdrukken|
|+Create B.O.M|Stuklijst Aanmaken|
|+Exit|Afsluiten|
|- |- |
|Edit|Bewerken|
|+Undo|Ongedaan Maken|
|+Redo|Opniew Uitvoeren|
|+Cut|Knippen|
|+Copy|Kopiëren|
|+Paste|Plakken|
|+Select All|Alles selecteren|
|+Edit Selection|Selectie Bewerken|
|+Delete Selection|Selectie Verwijderen |
|+Group Selection|Geselecteerde Items Groeperen|
|+Ungroup Selection|Geselecteerde Groep Opheffen|
|+Send Backward|Naar achteren|
|+Bring Forward|Naar voren|
|+Renumber Selection|Selectie Hernummeren|
|++X Axis First|X-as Eerst|
|++Y Axis First|Y-as Eerst|
|+Edit Project|Project Bewerken |
|- |- |
|Configuration|Configuratie|
|+Anti-Aliasing|Antialiasing|
|+Auto-Create Pads|Automatisch Aanmaken van Soldeereilandjes|
|Auto-Edit Mode|Automatisch-Bewerken Modus|
|+Continuous Creation|Doorgaan met Invoegen|
|+Export Grid|Raster Exporteren |
|+High-Quality Rendering|Hoge Kwaliteit Rendering|
|+Mousewheel Zoom|Muiswiel Zoom|
|+Outline Mode|Omtrekmodus|
|+Snap to Grid|Uitlijnen op Raster|
|+Sticky Points|Kleverig Punten|
|+Theme|Thema|
|++Light|Licht|
|++Dark|Donker|
|++Blueprint|Blauwdruk|
|- |- |
|Lock Layers|Lagen Vergrendelen|
|+Chassis |Chassis|
|+Board|Printplaat|
|+Trace|Spoor|
|+Component|Component|
|+Text|Tekst|
|- |- |
|Help|Hulp|
|+User Manual|Gebruikershandleiding|
|+FAQ|Veel Gestelde Vragen|
|+Component API|Component API|
|+Plugin API|Invoegtoepassing API|
|+Submit a Bug|Bug Rapporteren|
|+Donate|Doneren|
|+About|Over|
|- |- |
|Component Menu|Componentenmenu|
|Recently Used|Onlangs Gebruikte|
|Boards|Printplaten|
|Connectivity|Connectiviteit|
|Electromechanical|Elektromechanisch|
|Miscellaneous|Diversen|
|Passive|Passief|
|Semiconductors|Halfgeleiders|
|Tubes/Valves|Buizen|
|- |- |
|Component editing menus|Componenten Bewerken Menu|
|Alpha|Alpha|
|AWG|AWG|
|Base|Basis|
|Body|Lichaam|
|Border|Rand|
|Colour|Kleur|
|Colour Code|Kleurcode|
|Diameter|Diameter|
|Display|Tonen|
|Eyelet Colour|Ring Kleur|
|Fill|Vullen|
|Font|Lettertype|
|Font Bold|Vet Lettertype|
|Font Italic|Cursief Lettertype|
|Font Size|Tekengrootte|
|Hole Size|Gat Diameter|
|Image|Afbeelding|
|Label Position|Labelpositie|
|Length|Lengte|
|Lug Size|Soldeerlip Maat|
|Marker|Merkering|
|Name|Naam|
|Orientation|Oriëntatie|
|Pad Colour|Soldeereilandje Kleur|
|Pin Spacing|Ruimte Tussen Pennen|
|Pins|Pennen|
|Point Count|Punten Aantal|
|Polarised|Gepolariseerd|
|Power|Vermogen|
|Resistance|Weerstand |
|Row Spacing|Tussenruimte Rijen|
|Scale|Schaal|
|Size|Maat|
|Spacing|Tussenruimte|
|Strip Colour|Kleur Printbaan|
|Tab|Tab|
|Tab Border|Tab Rand|
|Taper|Karakteristiek|
|Text|Tekst|
|Tick|Teek|
|Type|Type|
|Value|Waarde|
|Voltage|Spanning|
|Width|Breedte|
| | |
|Messages|Berichten|
|?MB of ?MB free|?MB van ?MB vrij|
|Auto-scroll|Auto-scroll|
|Cancel|Annuleren|
|Click to edit|Klik om te bewerken|
|Click to load image file|Klik om afbeelding te laden|
|Click to calculate selection size|Klik om de selectie afmetingen te berekenen|
|Click to run the garbage collector|Klik om de “Garbage Collector” in werking te stellen|
|Double-click to edit text|Dubbelklik om tekst te bewerken|
|Edit Selection|Bewerk Selectie|
|Information|Informatie|
|Max ?Mb is available|Max ?Mb beschikbaar|
|Message|Bericht|
|No components show in Bill of Materials|Geen onderdelen om te laten zien in de stuklijst|
|No updates available, click to check again|Geen updates beschikbaar, klik om opnieuw te controleren|
|OK|OK|
|Selection is empty|Selectie is leeg|
|Selection size|Selectie afmetingen|
|Zoom|Zoom|
|Selection ? and ?.|Selectie ? en ?|
|Selection: (?) Hold CTRL and drag to unstick from ?|Selectie: (?) Houd CTRL ingedrukt en sleep, om los te maken van ?.|
+85
View File
@@ -0,0 +1,85 @@
### System requirements ###
* [Java JRE/JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html) 1.6.0\_10 or newer
* 256MB free RAM memory
* 10MB free hard drive space
* Zip utility to unpack the archive (7-zip, WinZip, Total Commander, etc)
### Running the app ###
* On **Windows** just run the diylc.exe
* On **Linux/Unix** or **Mac**, open the terminal, change the directory to diylc3 (**cd `<`path to diylc3`>`**) and type **./run.sh**
### User interface ###
User interface can be separated into 4 major components:
1. **Canvas** is used as a [WYSIWYG](http://en.wikipedia.org/wiki/WYSIWYG) editor for the project.
1. **Toolbox** lists all available components and allows you to pick the one you want to add.
1. **Main menu** offers file operations, such as saving, loading and exporting, clipboard operations, etc.
1. **Status bar**: shows context related information, zoom control, update information and memory consumption.
### Configuring the application ###
Application configuration may be changed from **Config** menu. It contains the following items:
* **Anti-Aliasing**: when checked, objects and text will look smoother but it takes more time to render anti-aliased graphics. If you suffer from performance issues, try turning this option off.
* **Auto-Create Pads**: when checked, application will automatically create solder pads whenever a component is added to the layout.
* **Auto-Edit Mode**: when checked, the component edit dialog will appear after each component is created, the same way version 1.x works.
* **Continuous Creation**: when checked, the last selected component type will remain active after you create a component, allowing you to create many components of the same type rapidly.
* **Export Grid**: when checked, grid lines will be exported to a file or printer.
* **Hi-Quality Rendering**: when checked, image quality will improve slightly, but it may decrease performance.
* **Snap to Grid**: when checked, drag & drop operations will snap control points to the grid instead of following the mouse cursor pixel by pixel.
* **Sticky Points**: when checked, components are allowed to stick to each other when moved. Hold Ctrl key while dragging to temporarily toggle the Sticky Point mode. See [Control points](#Control_points.md) for more info on control points.
* **Theme**: allows selecting a theme. Themes are read from **themes** directory under the DIYLC root and they include background color and grid line color. You can create your own themes by adding an XML file to themes directory. It's easiest to start with a copy of one of the existing files.
### Adding components to the drawing ###
This sections explains how to add an existing component to the project. To learn how to develop your own components follow [this tutorial](http://code.google.com/p/diy-layout-creator/wiki/Components). To instantiate a component, follow these steps:
* Locate the component in the toolbox. Components are categorized into several tabs, so make sure you're looking into the right one.
* Click on the button that shows the desired component. Note that text in the status bar changes to reflect this action.
* Click on the desired location on the canvas to create the component. Some components (solder pads, trace cuts, etc) will be created on single click, others (like resistors, jumpers, etc) will require two clicks to set both ending points. Instructions in the status bar will guide you through the process. Component will be drawn translucent until the creation process is finalized.
### Moving components ###
The easiest way to move a component across the canvas is to drag it by clicking on it's body and moving the mouse to the desired location. When mouse cursor is over a component, it will change to "hand pointer" and status bar will read name of the component that will be dragged.
Note that:
* if more than one component is selected, all of them will be moved
* moving one (or more) components will move/stretch any components that are stuck to them. Status bar will inform you which components will be affected. Hold <b>Ctrl</b> to unstuck the selected components and move them only.
### Control points ###
A component may have one or more control points. Control points have dual purpose:
* Allows changing component placement or appearance by dragging it's control point on the canvas. For instance, drag one end point of the resistor. To be able to drag a control point, the component must be selected. That makes it easier to "un-stick" two component that have overlapping control points and to have control over points that are dragged. This also works with multiple selection. When two or more components have their components stuck to each other, selecting all of them will allow you to drag their control points at the same time.
Note that:
* status bar lists all the components that will be affected by the drag&drop operation.
* you can drag control points only when they turn green.
### Editing component properties ###
* Double click on a component opens the Component Editor - dialog that lists all editable properties of the selected component(s).
* Checking the "Default" checkbox on the right side will make the value for that property default. In other words, all the components created after that will inherit that value.
* Boxes that edit measures (size, resistance, capacitance, etc) can take math expressions in addition to constants. For instance you can type 3/32 and it will be automatically converted to decimal. Even more complicated expressions with parenthesis and 4 basic numerical operators are possible.
### Grouping components together ###
Component groups behave similar to object groups Corel Draw. The idea is to keep two or more components together and move/edit/delete them at the same time. To group components, select them and press Ctrl+G (or select "Group Selection" from the menu). Double click on one of the grouped components will open the editor with all the mutual properties of selected components and allow editing them at the same time.
Note that while the components are grouped, you can't edit drag their individual control points.
To un-group the components, select them and press Ctrl+U (or select "Ungroup Selection" from the menu).
Note that:
* nested groups are not currently supported. If you group two groups of components together you'll end up with one large group instead of a group that contains two groups.
### Using the status bar ###
Status bar contains three different features:
* **Information bar** shows context related information and guidance through the app.
* **Selection size** shows the dimensions of the minimal bounding rectangle that contains all the selected components. It takes default size units (in or cm) into account.
* **Zoom control** allows you to zoom in or out.
* **Auto-update** notification. When the bulb is on, there are updates available. Click on it for more information.
* **Memory bar** is the blue-ish icon on the right side that shows the amount of memory occupied by the application. Move the mouse over it to see more details or click on it to try to cleanup as much memory as possible. Color will turn red when memory consumption is running high.
+14
View File
@@ -0,0 +1,14 @@
### General advice ###
**When making a new plugins make sure to look around and be consistent with what's already there. This applies to visual appearance, behavior but also the code. It is important to keep the visual identity and user experience consistent across the board and to have a maintainable code base that follows the same coding standards and patterns. Good luck.**
# Introduction #
Add your content here.
# Details #
Add your content here. Format your content with:
* Text in **bold** or _italic_
* Headings, paragraphs, and lists
* Automatic links to other wiki pages
+82
View File
@@ -0,0 +1,82 @@
### Announcement ###
**DIYLC is no longer a beta! I managed to fix some annoying bugs and stability issues, so it's a full blooded production version now :)**
<table cellpadding='0' cellspacing='0'>
<tr>
<td width='151px'>
<a href='https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=25161'><img src='https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif' /></a>
</td>
<td>
<b>DIYLC is provided free of charge and can be used and redistributed freely. However, it takes a lot of time and effort to build and maintain it, as well as to respond to all your questions and feature requests. Time I could have spent doing stuff that pays, playing guitar or simply enjoying my free time. If you find DIYLC useful and want to support the project, please consider making a small PayPal donation. Every little bit counts!<br>
If you have some extra parts, transistors, tubes, ICs, caps, anything useful for a fellow DIYer, I'll gladly accept a donation in parts.</b>
</td>
</tr>
</table>
<br>
<b>If you're in need for domain names or hosting services, please use <a href='http://affiliate.godaddy.com/redirect/2398295A139BC4965396BA176C1EB33E2F9A3601388E3715E3E8FBC5A32328EA9F101A4B90E53EA8A23FB2CDB6FC5AD4C4E87072C0845C5B1E4A81C285818A54'>this GoDaddy.com</a> link to purchase your domain and/or hosting plan. Part of the proceeds will be donated to DIYLC project through GoDaddy affiliate program!</b>
<h3>News</h3>
DIYLC 3 is out! Follow the link in the left sidebar to download the latest build. Note that it's still a beta version and that some core pieces could be changed. Files created with the beta version may or may not work with the final version. However, if you find any bugs or think that I missed a feature that's important to you, go to <a href='http://code.google.com/p/diy-layout-creator/issues/list'>Issues</a> page and create an issue. Before doing so, please check that someone else hasn't requested the same thing yet.<br>
<br>
<br>
<h3>Introduction</h3>
DIY Layout Creator (DIYLC in short) is freeware drawing tool developed with help of a large online community of DIY electronics enthusiasts. It incorporates many ideas that came from people using older versions of the application. The goal is to provide a simple interface and enough power to let the user draw schematics, board/chassis layouts and guitar wiring diagrams quickly and without a steep learning curve.<br>
Also, it is build around the flexible open source framework that may be used to draw pretty much anything. Below is a sample board layout drawn in DIYLC3.<br>
<br>
<p align='center'><a href='http://diy-fever.com/wordpress/wp-content/uploads/2012/12/mark_layout_v11.png'><img src='http://diy-fever.com/wordpress/wp-content/uploads/2012/12/mark_layout_v11-320x296.png' /></a></p>
<h3>Features</h3>
<ul><li>platform independence, will run on any machine having Java JRE/JDK 1.6.0_10 or newer<br>
</li><li>easy to use interface, most of the operations can be done using mouse<br>
</li><li>draws schematics, board layouts and chassis layouts<br>
</li><li>high flexibility, has the API to allow plug-ins and new components to be added without much trouble<br>
</li><li>improved performance and reduced memory consumption compared to the previous versions<br>
</li><li>save default values for each property of a component individually<br>
</li><li>group components together and treat them as one, e.g. move, edit or delete<br>
</li><li>export the output to image, PDF or printer<br>
</li><li>export PCB trace mask suitable for toner transfer<br>
</li><li>create a Bill of Materials as a part of the project or export it to few different file formats<br>
</li><li>zoom in/out feature<br>
</li><li>configurable grid spacing on the project level<br>
</li><li>auto update checks for new versions<br>
</li><li>import files created with older versions of the application<br>
</li><li>create and load project templates<br>
</li><li><code>[</code>pending<code>]</code> integration with online project library, sharing your drawings with ease</li></ul>
To report bugs or request a new feature go to <a href='http://code.google.com/p/diy-layout-creator/issues/list'>Issues</a> page and create a new issue describing your problem or request.<br>
<br>
To join the discussion or request technical assistance, use the dedicated <a href='http://groups.google.com/group/diy-layout-creator'>Discussion Group</a>.<br>
<br>
<h3>Want to contribute?</h3>
If you want to help the DIYLC project, there are several things you can do:<br>
<br>
<ul><li>Help with adding the information to the <a href='Manual.md'>user manual</a>.<br>
</li><li>Extend the component base, read <a href='http://code.google.com/p/diy-layout-creator/wiki/ComponentAPI'>this wiki</a> to learn how to create new components.<br>
</li><li>Add a new functionality though plug-ins, read <a href='http://code.google.com/p/diy-layout-creator/wiki/PluginAPI'>this wiki</a> to learn how to create new plug-ins.<br>
</li><li>If you are good with design, DIYLC could use a fancy splash screen and/or a new application icon in 16x16, 32x32 and 48x48 formats.<br>
</li><li>Consider making a small <a href='https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=25161'>PayPal donation</a>.</li></ul>
<h3>License information</h3>
Source code is released under <a href='http://www.gnu.org/licenses/quick-guide-gplv3.html'>GPL license</a> for non-commercial projects only. Contact the project owner to obtain a licence in case you plan to use the source code, or any part of it, in commercial purposes.<br>
<br>
<h3>Brief project history</h3>
<ul><li><b>Version 3</b> is the current version and was re-written from scratch starting early 2010, but this time as an open source project. It incorporates all the ideas that were accumulated over years and also better code architecture. That should provide better user experience, less bugs and code that's easier to maintain and extend.</li></ul>
<ul><li><b>Version 2</b> was re-written from scratch in Java mid 2007 and is platform independent. Unfortunately, it's not very fast and is not backward compatible with version 1 which means that it cannot open files created with version 1. It was my first ever Java project, so code is was so great which is why I gave it up at some point.</li></ul>
<p align='center'><a href='http://diy-fever.com/diylc/images/diylc2_screenshot.png'><img src='http://diy-fever.com/diylc/images/diylc2_screenshot-320x194.png' /></a></p>
<ul><li><b>Version 1</b> started its life in May 2005 and was written in Delphi. As such, it only works on windows machines (or through emulators). There's a large collection of layouts submitted by users for this version which is why it's still kept around.</li></ul>
<p align='center'><a href='http://diy-fever.com/diylc/images/diylc_screenshot.png'><img src='http://diy-fever.com/diylc/images/diylc_screenshot-320x231.png' /></a></p>
<h3>Credits</h3>
<ul><li>Big thanks goes to folks from the following sites that helped with testing and ideas: <a href='http://www.diystompboxes.com/smfforum/'>DIY Stompboxes</a>, <a href='http://ax84.com/bbs'>AX84</a> and <a href='http://freestompboxes.org'>Free Stompboxes</a>.<br>
</li><li>I'm happy to report that DIYLC 3 is the fastest version ever. <a href='http://www.yourkit.com/java/profiler/index.jsp'>YourKit Java Profiler</a> helped tremendously with memory and performance profiling and pointed me to places in the code that took longer to run or consumed more memory than I'd like them to. I strongly recommend this tool to anyone developing Java or .NET applications because it helps finding bottlenecks and allocation hot-spots very fast.<br><br>YourKit is kindly supporting open source projects with its full-featured Java Profiler.<br>YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications.<br>Take a look at YourKit's leading software products: <a href='http://www.yourkit.com/java/profiler/index.jsp'>YourKit Java Profiler</a> and <a href='http://www.yourkit.com/.net/profiler/index.jsp'>YourKit .NET Profiler</a>