Skip to content

ssweber/clicknick

Repository files navigation

ClickNick

clicknick_logo

Tag-Based Programming for Automation Direct CLICK PLCs.

ClickNick lets you program using nicknames instead of raw memory addresses. It provides autocomplete that appears over CLICK instruction dialogs, plus standalone editors that sync with your project.

Standard CLICK ClickNick
Ladder Logic Editor Type addresses C123 Autocomplete nicknames
Address Editing One-by-one in app Bulk edit, multi-window, search/replace
Tag View Flat list Color named blocks + tree outline (hierarchy & arrays)
DataView Input raw addresses, limited reordering Autocomplete, add entire grouped structures and blocks, drag and drop reordering
Price Free (bundled) Free (open source)
Best For Simple projects Complex projects, productivity

ClickNick works with your existing .ckp projects—just open your project in CLICK Software and connect. It's entirely local with no internet calls or telemetry; changes are temporary until you save in CLICK.

Why ClickNick?

CLICK PLCs were my first PLC experience, but remembering addresses became painful. Other platforms autocomplete—why not CLICK? ClickNick adds the modern tools I wish I'd had.

Features at a Glance

Beta – Review Address & Dataview changes before saving in CLICK. Feedback welcome.


Prerequisites

  • OS: Windows 10 or 11
  • CLICK Software: v2.60–v3.90 (download here)
  • ODBC Drivers: Microsoft Access Database Engine (install link) – only needed for live DB sync; CSV import works without drivers
  • Python: 3.11+ (only if using pip; uv manages Python automatically)

Quick Start

Option 1: uv (recommended)

uvx clicknick@latest              # Try it without installing
uv tool install clicknick         # Install for offline use, upgrade with `uv tool upgrade clicknick`
clicknick                         # Run (WinKey+R `Run` or command line)

New to uv? See installation instructions.

Option 2: pip

pip install clicknick
python -m clicknick

Detailed Features

✨ Nickname Autocomplete

How it works: An autocomplete dropdown appears over CLICK instruction dialogs. Start typing a nickname and select from the filtered list—the address is inserted automatically.

  • Skip the addresses – Select Valve5 instead of typing C123
  • Flexible filters – Prefix, partial match/contains, or abbreviation (e.g., Motor Speed ↔ Mtr_Spd)
  • Hover tooltips – View address comments at a glance
  • Exclusion filters – Hide system or internal addresses (e.g., SC/SD, __private__)

ClickNick autocomplete demo


🛠️ Modern Address Editor

  • Multi-window – Edit different address sections simultaneously
  • Bulk editing – Edit before saving, copy/paste multiple cells, live duplicate detection and validation
  • Fill Down – Select rows to auto-increment nicknames (e.g., Alm1Alm2, Alm3...)
  • Clone Structure – Replicate a pattern of nicknames (e.g., Alm1_ID, Alm1_ValAlm2_ID, Alm2_Val...)
  • Shortcuts: Ctrl+F (Find) / Ctrl+R (Replace)
    • Scope: Case-sensitive. Searches Nickname and Comment columns only. Supports Find in Selection.
    • Regex Tips:
      • ^ start of line, $ end of line
      • .* match anything, \d digit, \w letter/number
      • ( ) captures a group to use as \1, \2 in the replacement box
    • Resources: Visit regex101.com for real-time testing.
  • Custom blocks – Drag to create color-coded groups for organization and quick navigation

Address Editor demo

Note

Nicknames edited in the Address Editor appear immediately in autocomplete.
Existing ladder logic refreshes after editing via the built-in Address Picker (Ctrl+T) or reopening the project.
See issue #36


📑 Tag Browser

  • Navigate large projects – See all your nicknames in an organized tree view
  • Spot patterns – Arrays and related items grouped automatically

Hierarchy: Single underscores create levels. SupplyTank_Pump_Status becomes:

SupplyTank
    └── Pump
        └── Status

Arrays: Trailing numbers auto-group. Alm1_id, Alm1_value, Alm2_id, Alm2_value becomes:

Alm[1-2]
1
  ├── id
  └── value
2
  ├── id
  └── value
  • One-click access – Double-click any item to edit.

Outline dock screenshot


📊 Dataview Editor

  • Loads all DataViews (.cdv files) from your CLICK project in tab-interface
  • Add addresses by typing nicknames instead of raw addresses
  • Drag-and-drop, cut/paste reordering
  • Double-click nicknames or entire structures from the Outline/Blocks panel to insert

🔌 Connectivity

  • CSV nickname import – No drivers needed. Import from any spreadsheet
  • Live ODBC database connection – Direct, real-time access to CLICK project database

Block Tag Specification (Advanced)

Note: The Address Editor provides buttons to create and manage blocks. This section documents the underlying format for power users.

Add tags in the Comment field to create visual blocks:

Syntax:

  • <BlockName> - Opening tag for a range
  • </BlockName> - Closing tag for a range
  • <BlockName /> - Self-closing tag for a singular point
  • <BlockName bg="#color"> - Adds background color

Colors: Use HEX codes or keywords: Red, Pink, Purple, Deep Purple, Indigo, Blue, Light Blue, Cyan, Teal, Green, Light Green, Lime, Yellow, Amber, Orange, Deep Orange, Brown, Blue Grey

Example: <Alm Bits bg="Red"> ... </Alm Bits>

Under the Hood (How ClickNick accesses your data)

ClickNick never modifies your .ckp project file directly. Instead, it works with the temporary files that CLICK Programming Software creates when you open a project:

Address Data (MDB or CSV):

  • When you open a .ckp project, CLICK extracts a temporary Access database (SC_.mdb) containing all address information (nicknames, comments, initial values)
  • With ODBC drivers: ClickNick connects directly to this database for live read/write access
  • Without ODBC drivers: ClickNick reads the auto-generated Address.csv (a snapshot from when the project was opened—doesn't reflect changes made during the session). Alternatively, import a CSV exported from CLICK (File → Export)
  • Changes via ODBC are written back to CLICK's scratchpad—they only become permanent when you save in CLICK Software

DataView Files (CDV):

  • DataView configurations are stored as .cdv files (UTF-16 encoded CSV) in the project's temporary folder
  • The Dataview Editor reads and writes these files directly
  • New DataViews created in ClickNick must be imported manually in CLICK Software

Tag Browser (Outline):

  • The tree view is generated dynamically by parsing nicknames—it doesn't store or modify any data
  • Hierarchy is built by splitting nicknames at underscores; arrays are detected from trailing numbers

Safety: Close CLICK without saving to discard all changes made through ClickNick. Your original .ckp file remains untouched until you explicitly save.