MCPcopy Index your code
hub / github.com/FidoCadJ/FidoCadJ

github.com/FidoCadJ/FidoCadJ @v0.24.9-delta2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.24.9-delta2 ↗ · + Follow
2,534 symbols 7,483 edges 238 files 2,250 documented · 89%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

FidoCadJ

Version License Java Platform

An easy-to-use electronic schematic capture and PCB design tool

🌐 Website📖 Documentation🐛 Report Bug💡 Request Feature


📑 Table of Contents


🎯 About FidoCadJ

What is FidoCadJ?

FidoCadJ is a modern, multiplatform electronic design automation (EDA) software with a vast library of electrical symbols and footprints (both through-hole and SMD). It serves as an easy-to-use editor for creating electrical schematics and printed circuit board layouts.

Origins: FidoCadJ is the successor to the original FidoCAD, a popular vector graphic editor that gained widespread adoption in the Italian Usenet community during the late 1990s. The original software used a compact text-based file format, perfect for sharing in newsgroups and forums.

Modern Evolution: FidoCadJ brings the simplicity of FidoCAD into the modern era with: - Full UTF-8 text support - Advanced features and professional output - Internationalization - Sleek, anti-aliased user interface - Multiple export formats (PDF, EPS, PGF for LaTeX, SVG, PNG, JPG)

Note: FidoCadJ is a graphical drawing tool without netlist functionality. This provides maximum flexibility as a vector drawing application but does not include circuit simulation capabilities.

✨ Key Features

  • 📐 Extensive library of electrical components and footprints
  • 🎨 Multiple export formats (PDF, EPS, SVG, PNG, JPG, PGF)
  • 🌍 Multilingual interface (English, French, Italian, Spanish, German, Chinese, Dutch, Japanese, Greek, Czech)
  • 📱 Cross-platform compatibility
  • 🔧 Simple mechanical drawing capabilities
  • 🎯 Easy to learn and use

📚 Community Libraries

FidoCadJ comes with a built-in library of components, but the community has created many additional libraries to extend its capabilities! You can download specialized libraries for various purposes:

🔗 Browse and Download Community Libraries

These community-contributed libraries include: - Additional electronic components - Specialized symbols and footprints - Industry-specific elements - Custom mechanical parts - And much more!

Simply download the library files and import them into FidoCadJ to expand your component collection.

💻 Supported Platforms

Platform Requirements
Windows Windows 7, 8, 10, 11 with Java 9+
Linux All major distributions with Java 9+
macOS macOS 10.8+ with Java 9+
Android Android 4.0+

🚀 Getting Started

Installation

Windows

Download FidoCadJ_Windows.msi from the releases page and run the installer. Launch FidoCadJ from the Start menu.

macOS

  1. Download FidoCadJ_MacOSX.dmg from the releases page
  2. Open the DMG file and drag FidoCadJ to your Applications folder

📝 Note: The application bundle is self-sufficient and includes everything needed to run. You don't need to install Java separately.

⚠️ macOS Gatekeeper Issue:

Recent macOS versions may show a very misleading error when trying to run FidoCadJ:

"FidoCadJ.app is damaged and can't be opened. You should move it to the Trash."

This is NOT true! The application is not damaged. This is a security feature that prevents running apps from unidentified developers. The error message is misleading and doesn't explain the real issue.

What's happening: - macOS activates the "quarantine" extended attribute on downloaded files - The system refuses to run software with this attribute - On some Macs (like M1/M2), you may be asked to install Rosetta first

Example of the error (macOS Ventura 13.3):

macOS Gatekeeper Error

Solution - Follow these steps:

  1. Remove the quarantine attribute: Open Terminal and type: bash xattr -c /Applications/FidoCadJ.app (If you haven't moved it to Applications yet, use the actual path to the file)

⚠️ You need admin access and may need to authorize Terminal.app to modify files

  1. Right-click on FidoCadJ.app and select "Open" (don't double-click)

  2. Confirm when the system asks if you really want to run the software downloaded from an untrusted source

Need help? See Issue #198 for discussion and alternative solutions.

💡 If you know a way to solve this without using Terminal, please share it in the GitHub issue!

Linux

Method 1: Using the JAR file

java -jar fidocadj.jar

Method 2: Build from source

make
sudo make install

Android

Download the APK file from the official GitHub releases page and install it on your device.

⚠️ Security Note: Only download FidoCadJ from the official GitHub repository to ensure authenticity.

Quick Start

  1. Launch FidoCadJ using your preferred method
  2. Create a new drawing from the File menu
  3. Select components from the extensive library
  4. Design your schematic using the intuitive interface
  5. Export to your desired format (PDF, PNG, SVG, etc.)

💡 Pro Tip: Expand your component collection by downloading community libraries!

📖 Need help? Check out the user manual (available in multiple languages).


👨‍💻 For Developers

Repository Structure

FidoCadJ/
├── bin/                    # Compiled classes and resources
├── busy being born/        # Screenshots and promotional materials
├── dev_tools/              # Build scripts and development tools
├── doc/                    # Javadoc documentation
├── icons/                  # Application icons
├── jar/                    # JAR and manifest files
├── manual/                 # LaTeX manual sources
├── OSes/                   # Platform-specific files (including Android)
├── src/                    # Java source files
├── test/                   # Automated test suite
├── gpl-3.0.txt            # License file
├── makefile               # Build automation
└── README.md              # This file

Important Classes

Path Description
src/fidocadj/FidoMain.java Application entry point
src/fidocadj/FidoFrame.java Main editor window
src/fidocadj/primitives/*.java Graphic primitives
src/fidocadj/dialogs/*.java Swing dialogs
src/fidocadj/circuit/CircuitPanel.java Editor panel
src/fidocadj/circuit/* Low-level editing (MVC)

Building from Source

Prerequisites

  • Java Development Kit (JDK) 9 or higher
  • Make (for Unix-like systems)
  • Git

Clone Repository

git clone https://github.com/FidoCadJ/FidoCadJ.git
cd FidoCadJ

Build Commands

Using Make (macOS/Linux):

Command Description
make Compile FidoCadJ
make run Run FidoCadJ
make rebuild Clean and rebuild
make createjar Create JAR file in jar/ directory
make createdoc Generate Javadoc
make clean Remove compiled classes
make cleanall Full cleanup

Using Scripts (Windows):

cd dev_tools
winbuild.bat compile    # Compile sources
winbuild.bat run        # Run application
winbuild.bat rebuild    # Clean and rebuild

Manual Compilation (Windows):

javac -g -sourcepath src -classpath bin .\src\fidocadj\FidoMain.java -d bin
java -classpath .\bin;.\jar;.\jar\ FidoMain

Coding Conventions

General Rules

  • Java Version: Compatible with Java 14+
  • Indentation: 4 spaces (no tabs)
  • Line Length: Maximum 80 characters
  • Newlines: Unix-style (LF) only
  • Naming Conventions:
  • Classes: PascalCase
  • Methods and variables: camelCase
  • No underscores in names (deprecated)
  • Documentation: Javadoc required for public classes and methods
  • Quality: Commits must not break the build

Code Style Examples

Methods:

void exampleMethod(int param1, int param2)
{
    // Method body with 4-space indentation
    System.out.println("Example");
}

Control Structures:

for (int i = 0; i < 10; ++i) {
    // Loop body
    System.out.println("Iteration: " + i);
}

if (condition) {
    // If body
} else {
    // Else body
}

Classes:

class ExampleClass
{
    // Class members
}

Code Quality Tools

We maintain high code quality using:

  • Checkstyle: Enforces coding standards (dev_tools/rules.xml)
  • PMD: Static code analysis (dev_tools/pmd.sh)
  • FindBugs: Bug detection on compiled JAR
  • Copy/Paste Detection: Identifies code duplication

🎯 Before submitting a pull request, run Checkstyle with dev_tools/rules.xml to ensure compliance!

Testing

FidoCadJ includes comprehensive automated tests in the test/ directory.

Run all tests:

./test/all_tests.sh

Individual test suites:

Test Purpose
test/export/test_export.sh Validates export functionality for all formats
test/messages/test_messages.sh Checks translation file consistency
test/size/test_size.sh Verifies element size calculations

📝 Note: Before running tests, ensure fidocadj.jar is up-to-date using make createjar.


🤝 Contributing

We welcome contributions from the community! Whether you're fixing bugs, adding features, translating, or improving documentation, your help is appreciated.

Translation

FidoCadJ makes translation easy—no programming skills required!

To translate the interface:

  1. Locate language files in bin/MessagesBundle_xx.properties (where xx is the ISO 639-1 language code)
  2. Copy the English reference file (MessagesBundle_en.properties)
  3. Translate the values (keep keys unchanged)
  4. Save with appropriate language code
  5. Submit a pull request

Example:

# English (MessagesBundle_en.properties)
File = File
New = New
Open = Open file

# French (MessagesBundle_fr.properties)
File = Fichier
New = Nouveau dessin
Open = Ouvre un fichier

Current translations available: English, French, Italian, Spanish, German, Chinese, Dutch, Japanese, Greek, Czech

Development

Getting started:

  1. 🍴 Fork the repository
  2. 📖 Read the coding conventions (Section above)
  3. 💬 Open an issue to discuss your plans
  4. 🔨 Make your changes following our style guidelines
  5. ✅ Run tests and quality checks
  6. 📬 Submit a pull request

Useful commands for developers:

make createdoc          # Generate Javadoc documentation
dev_tools/checkstyle.sh # Run Checkstyle
dev_tools/pmd.sh        # Run PMD analysis
dev_tools/profile       # Run profiler

Committer Checklist

For all commits: - [ ] Code builds successfully (PC and Android) - [ ] Follows coding style (section 4.1) - [ ] Comments added/updated where needed - [ ] Checkstyle passes with dev_tools/rules.xml

For PC application: - [ ] JAR generated and automated tests pass - [ ] PMD analysis completed

Ways to Contribute

Area Description
🌍 Translation Translate UI or documentation to your language
📝 Documentation Improve or update manuals and guides
🎥 Tutorials Create video tutorials for YouTube
🐛 Bug Reports Report issues via GitHub Issues
💻 Code Implement new features or fix bugs
📦 Packaging Create distribution packages (deb, RPM, etc.)
🧪 Testing Expand unit test coverage

Feature requests: - Export to Gerber format - Enhanced unit testing - Linux packaging improvements - And more!


💬 Support

Getting Help

  • 📖 Documentation: User manuals (PDF files)
  • 💬 GitHub Discussions: Ask questions and share ideas
  • 🐛 Bug Reports: Create an issue
  • 📧 Email: davbucci@tiscali.it (no attachments please)

💡 Tip: GitHub discussions are preferred for better collaboration among developers.

Reporting Bugs

Found a bug? We appreciate your help in making FidoCadJ better!

  1. Check existing issues to avoid duplicates
  2. Create a new issue with:
  3. Clear description of the problem
  4. Steps to reproduce
  5. Expe

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Method 2,293
Class 211
Interface 27
Function 2
Enum 1

Languages

Java100%
Python1%

Modules by API surface

src/fidocadj/MenuTools.java69 symbols
src/fidocadj/circuit/CircuitPanel.java64 symbols
src/fidocadj/macropicker/model/MacroTreeModel.java59 symbols
src/fidocadj/graphic/swing/Graphics2DSwing.java53 symbols
src/fidocadj/primitives/GraphicPrimitive.java52 symbols
src/fidocadj/export/ExportPCBRND.java49 symbols
src/fidocadj/macropicker/MacroTree.java42 symbols
src/fidocadj/geom/MapCoordinates.java42 symbols
OSes/android/fidocadj/src/net/sourceforge/fidocadj/FidoEditor.java40 symbols
src/fidocadj/librarymodel/LibraryModel.java39 symbols
src/fidocadj/export/ExportDXF.java37 symbols
src/fidocadj/FidoFrame.java37 symbols

For agents

$ claude mcp add FidoCadJ \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page