Commit Graph

88 Commits

Author SHA1 Message Date
f12df021f7 Refactor queue_object_redraw(). 2011-01-09 04:41:41 +01:00
2328058b46 Add ld_point_distance(). 2011-01-09 04:35:10 +01:00
fe996324d3 Take a better approach to drawing the grid.
If the diagram is zoomed out too much, just use bigger steps between dots.
2011-01-08 16:41:55 +01:00
909a0352cc Don't draw the grid when it would be too narrow.
This prevents eating all the memory.
2011-01-08 12:11:08 +01:00
edd64aa132 Read terminals from Lua scripts and export them.
Also add a missing part of LdSymbol API.
2011-01-08 12:09:45 +01:00
7ce03bac9d Make LdCanvas zoom on mouse wheel. 2011-01-08 12:05:59 +01:00
96f7710c25 Introduce LdRectangle, LdPoint and LdPointArray.
Remove LdCanvasRect and LdSymbolArea.
2011-01-08 09:01:33 +01:00
0b3f6503bb Add basic logical symbols (NOT, AND, OR). 2011-01-07 16:38:21 +01:00
fda123249a Export more cairo methods to Lua. 2011-01-07 16:15:58 +01:00
6b5bae881c Update copyright years. 2011-01-07 05:13:00 +01:00
c815d0c16a Allow object selection in LdCanvas.
Refactor a part of LdCanvas in the process.
2011-01-07 04:52:44 +01:00
1704b94650 Introduce structure LdCanvasRect.
It's basically the same as cairo_rectangle_t,
just in our own namespace.
2011-01-06 13:07:04 +01:00
53d1de680d Change symbol clip tolerance to widget units.
As line width is in pixels, too, this makes much more sense.
2011-01-06 03:28:47 +01:00
8eba321abe Redraw LdCanvas on LdDiagram changes. 2011-01-05 11:03:38 +01:00
63f6feaa0e Add new objects to the start of LdDiagram's list.
This way it doesn't have to go through the whole linked list
to find a place for the objects.
2011-01-05 05:29:52 +01:00
b08217f999 Add a "selection-changed" signal to LdDiagram.
Make existing code emit this signal.
2011-01-05 04:37:42 +01:00
e92bebfa57 Add ld_diagram_{select,unselect}_all(). 2011-01-05 04:35:25 +01:00
c4b8f092b7 Export cairo_{get,set}_line_width to Lua symbols. 2011-01-05 03:56:59 +01:00
25f1186000 Draw selected objects with another color.
Store all colors in LdCanvasPrivate and initialize them upon
object creation. This creates a base for color themes.

Make attempts to try adding an object that's not a part
of the document to the selection issue a warning.
2011-01-05 01:11:03 +01:00
fdf1ddbbb1 Move lines around. No functional change. 2011-01-04 23:05:38 +01:00
d3e5483c84 Make adding symbols to the diagram possible.
This required creating a simple framework for operations to LdCanvas.
It is probable that it's going to require some changes when other
operations are added. The basic idea behind it seems to be good, though.
2011-01-04 09:54:05 +01:00
713f2821e4 Fix the desktop file.
The "Exec" and "Name" entries were swapped.
2011-01-04 06:06:26 +01:00
25a0ea7ce5 Fix the "library" property in LdCanvas. 2011-01-04 04:08:05 +01:00
820239597e Partial refactoring of LdCanvas.
draw_symbol() had been doing too much.
2011-01-04 00:45:44 +01:00
2cb570f894 Split in-out parameters into separate in and out.
In functions:
ld_canvas_diagram_to_widget_coords()
ld_canvas_widget_to_diagram_coords()
2011-01-03 05:57:22 +01:00
9d505f0a87 Update the copy of FindGTK2.cmake. 2010-12-24 05:41:52 +01:00
9dc1822040 Fix problems discovered while testing on Windows.
* Set the working directory for glib-genmarshal correctly.
* Use one more path suffix when searching for glibconfig.h.
* Don't assume that gdk_screen_get_resolution() returns
  a useful value.
2010-12-20 05:20:21 +01:00
b44b3e6a54 Documentation maintenance.
* Do not require gtk-doc to be installed.
* Use FindPackageHandleStandardArgs in FindGtkDoc.cmake.
* Fix installation (wrong source path).
* Don't install neither the documentation nor the desktop file on Windows.
2010-12-18 17:47:37 +01:00
9178fb8d81 LdCanvas maintenance.
* Rename ld_canvas_translate_*_coordinates() to ld_canvas_*_to_*_coords().
* Add missing parameter assertions to those functions.
* Rename local variables in draw_grid().
* Use gdk_cairo_rectangle() in expose-event handler.
* Update comments.
2010-12-18 15:34:34 +01:00
f2f308f2f5 Make the symbol menu grab focus.
This way when the user clicks outside the menu when it is open,
the menu will close itself first.

Keyboard input is however still not handled.

The symbol menu should be redesigned.
2010-12-18 05:01:50 +01:00
86e73f86c2 Rename LdDocument* to LdDiagram*.
My bad; this name is much more appropriate.
2010-12-16 11:34:02 +01:00
721cc30478 Overall cleanup.
* Add missing asserts to exported functions.
* Unify formatting.
* Fix the gtk-doc comment for ld_symbol_category_set_human_name().
* Make ld_library_load() reflect it's declaration.
* Remove an unused variable in ld_library_load_cb().
* Change all char's to gchar's.
2010-12-16 06:51:18 +01:00
4a946b3241 Implement diagram operations in UI.
* Now diagrams can be created, loaded and saved.
* Define descriptions and accelerators for actions.
* Set irrelevant actions unsensitive.
* Also remove redundant comments for clarity.
2010-12-16 06:10:28 +01:00
2c3345a4fd Add change notifications to properties.
Also fix the "human-name" property in LdSymbolCategory
and correct gtk-doc comments for coordinates properties
accessors in LdDocumentObject.
2010-12-16 04:50:54 +01:00
45aeda982b Remove redundant flags from signals. 2010-12-12 18:17:13 +01:00
a56bfd6087 LdWindowMain cleanup.
* Restructure the initialization code.
* Move LdCanvas event mask setting to ld-canvas.c.
* Remove some redundant code.
* Use consistent naming.
* Update comments.

Practically no functional change.
2010-12-12 17:56:59 +01:00
fdab244e2e Rename local LdCanvas methods.
Use a "real" prefix, as GTK+ does.
2010-12-12 17:30:28 +01:00
f9dbe12971 Stubplement LdDocument file operations.
Prototypes for these functions were wrong; fixed.
2010-12-11 20:32:03 +01:00
e364267010 Add a "modified" property to LdDocument.
The property is set to TRUE whenever the document changes.
The user may set it back to FALSE with ld_document_set_modified().

Also don't emit the "changed" signal when nothing has happened.
2010-12-11 20:31:54 +01:00
805089c38f Rename local LdLuaSymbol methods.
Use a "real" prefix, as GTK+ does.

Also make the implementations of virtual functions
really static, as they prototypes were telling.
2010-12-11 14:26:00 +01:00
afacad693d Add a main toolbar.
So far it has no special powers. This should change in the future.
2010-12-11 04:15:23 +01:00
fe7c270bdd Check for name collisions in symbol categories. 2010-12-11 03:49:54 +01:00
e6230576b7 Add category.json files for testing categories. 2010-12-11 03:49:53 +01:00
67325d5f70 Read human names of categories from category.json.
category.json contains a JSON object/table with localized
names of the category directory they are located within.

If a localized name cannot be found, the name of the category
is used as the human name, too.
2010-12-11 03:49:46 +01:00
74e43ceee4 Add a "human-name" property to LdSymbolCategory.
Just as LdSymbol has a human name for localization purposes,
LdSymbolCategory also needs to have this property.

Use the human name in tooltips.
2010-12-11 02:44:00 +01:00
aeb6e7ed58 Add a few symbols for testing.
The lucky ones are: capacitor, resistor and diode.

More symbols can be expected later, when more cairo
functions are exported to Lua and relevant standards
become accessible to me.
2010-12-10 23:27:45 +01:00
dea23f1204 Draw symbols from LdDocument in LdCanvas.
Just the minimal implementation so far.
2010-12-10 22:58:36 +01:00
3419680f25 Implement more of LdCanvas.
1. Add methods for coordinate translation between cairo/GtkWidget
   coordinates and LdDocument coordinates.
2. Draw the grid correctly (also make it significantly faster).
3. Place the canvas into a GtkScrolledWindow and register
   the set_scroll_adjustments signal in the GtkWidget base class.
4. Allow scrolling inside of an area of 200 x 200 units (for now).
   In the future, it should be possible to go to infinity.
2010-12-10 22:36:41 +01:00
37d898fb1a Change LdSymbolArea members.
Now it contains coordinates of the top-left delimiting
point and computed dimensions (instead of coorinates of
both delimiting points).
2010-12-10 08:57:42 +01:00
3d3a71d5d2 Prepare the project for json-glib.
This required writing a special CMake find module.
2010-12-05 15:30:21 +01:00