Jim Evins [Sun, 16 May 2010 15:56:03 +0000 (11:56 -0400)]
Allow for small error in comparison of dimensions.
In lgl_template_are_templates_identical(), allow for a small error when
comparing dimensions. Set EPSILON to 0.5pt, which is aproximately
0.007in or 0.2mm.
Jim Evins [Sun, 16 May 2010 03:42:38 +0000 (23:42 -0400)]
Use g_get_user_config_dir() to locate custom templates.
Use g_get_user_config_dir() to locate custom template. By default this
means that custom templates will be stored at ~/.config/libglabels/templates
instead of ~/.glabels.
Also automatically migrate user custom templates to the new location when
run for the first time.
Jim Evins [Tue, 11 May 2010 02:54:47 +0000 (22:54 -0400)]
Refinements to text objects
- Draw outline around text objects.
- Use a more sophisticated test for determining if cursor is on a text
object: test against glyphs instead of simple bounds test. The test will
also indicate that cursor is on the object if it is on the selection outline.
- Do word wrap instead of character wrap.
Jim Evins [Thu, 6 May 2010 00:16:26 +0000 (20:16 -0400)]
Added sanity tests to template parser
When parsing a template node, if there is no recognized frame node (e.g.
Label-rectangle), a default full-page frame with a 1x1 layout is created.
Likewise, if a frame has no layout, a default 1x1 layout is created.
This prevents potential crashes due to typos in the case of typos in
hand generated templates.
Jim Evins [Mon, 26 Apr 2010 01:18:47 +0000 (21:18 -0400)]
Added "Up" label to orientation arrow.
Added an "Up" label to the orientation arrow in the 1st label in the
mini preview. Use theme base color for arrow and label. Don't draw
arrow if w == h.
Jim Evins [Thu, 22 Apr 2010 02:37:57 +0000 (22:37 -0400)]
Added test for duplicate templates
Added test for duplicate pre-defined templates. Removed duplicate
template in pearl-iso-templates.xml. Also added lgl_template_print() for
debugging purposes.
Jim Evins [Mon, 29 Mar 2010 03:03:39 +0000 (23:03 -0400)]
Added "custom" tab to media select widget
Added "custom" tab to media select widget. In this tab, the user can
launch the template designer or delete an existing user-defined template.
Added notification callbacks to libglabels db subsystem so that the
media select widget will automatically update when user-defined templates
are added or deleted. The "edit" button does not do anything yet.
Also did some visual cleanup to the new label dialog.
Also include ../libglabels in SUBDIRS in src/ so that libglabels can
be rebuilt from src/ directory.
Jim Evins [Sun, 21 Mar 2010 05:14:35 +0000 (01:14 -0400)]
Yet another new "New Label Dialog"
Re-designed the "New label dialog" again. This time as a "wizard" or
GtkAssistant. This is an attempt to keep the easy navigation of the
2.2.x dialog, to keep the added meta data and preview of the latest
incarnation, and to maintain a compact dialog that should work on fairly
small displays such on netbooks (probably not hand-helds still).
Jim Evins [Thu, 18 Mar 2010 14:40:53 +0000 (10:40 -0400)]
Escape URLs in markup.
Escape URLs in vendor and product markup. Also rearranged the layout of the
new "new label" dialog -- I am still not happy with navigating the templates
with this new dialog. I will probably try for a hybrid between this and
the 2.2.x dialog.
Jim Evins [Sat, 13 Mar 2010 15:49:52 +0000 (10:49 -0500)]
Some new label dialog cleanup
Draw arrow in mini preview relative to first label, not the entire sheet.
This should be more obvious what the arrow is indicating, before it could
have been interpreted as the feed direction.
Don't put an empty line at the end of the list of similar templates.
Jim Evins [Thu, 11 Mar 2010 03:38:28 +0000 (22:38 -0500)]
Created new "New label dialog"
Created a new re-designed "New label dialog." The dialog now shows meta-data
for the selected template, including hyperlinks to vendor and product
websites, if available. The new dialog is more compact and thus should
be usable on small displays such as netbooks (probably not hand-helds).
The menu is somewhat clumbsy to navigate still -- will need to reorganize
to make navigation easier and more intuitive.
Jim Evins [Thu, 25 Feb 2010 04:45:18 +0000 (23:45 -0500)]
Rename executables and key files to support parallel installation
Renamed glabels and glabels-batch to glabels-3 and glabels-3-batch to support
parallel installation with other versions of glabels. Also renamed and
reconciled man pages and icon files.
Jim Evins [Wed, 24 Feb 2010 00:49:42 +0000 (19:49 -0500)]
Make libglabels parallel installable with other versions
Made libglabels install as libglabels-3.0 to support parallel installation
with earlier versions. Performed some related cleanup associated with
this move, including installing libglabels.h into include/libglabels-3.0
and installing all other include files in include/libglabels-3.0/libglabels/.
More work is still need to support parallel installation of the glabels
application.
Jim Evins [Fri, 29 Jan 2010 03:40:05 +0000 (22:40 -0500)]
Tweaks to glView.
- Draw drop shadow behind label.
- Fixed starting grid lines on round labels.
- Adjust grid spacing based on selected units:
Inches -> 0.125 in
mm -> 5 mm
Points -> 10 pt
Jim Evins [Tue, 19 Jan 2010 02:33:08 +0000 (21:33 -0500)]
Don't allow message bars to stack up in media select widget.
Remove old glMessageBar when attempting to load glMediaSelect tree views.
This will make sure if a new glMessageBar is needed, it won't just stack
up old message bars.
Jim Evins [Mon, 4 Jan 2010 03:05:08 +0000 (22:05 -0500)]
Use "natural" sorting order for part numbers
Use a "natural" sorting order for part numbers. I.e. numeric portions are
sorted numerically rather than character by character, such that
"A20" will precede "A100".
Also found and fixed a couple minor inconsistencies in the template data base
while debugging the new sorting code.
Jim Evins [Wed, 30 Dec 2009 07:34:34 +0000 (02:34 -0500)]
Reorganizing template database
Split out uline-us-templates.xml from avery-us-templates.xml. Also removed
the single "IP Invent It!" alias. I could not find this brand online -- I
assume it was a mis-identification -- this was a single alias for full-sheet
labels which is so generic anyway.
Jim Evins [Wed, 30 Dec 2009 07:12:17 +0000 (02:12 -0500)]
Reorganizing label database
Reorganized avery-us-templates.xml to remove deprecated Alias tags. Also,
split out separate worldlabel-us-templates.xml and maco-us-templates.xml
files.
Jim Evins [Wed, 23 Dec 2009 03:57:17 +0000 (22:57 -0500)]
Added undo/redo feature
Checkpoint the label state before each user initiated change. These
checkpoint states are kept on an undo stack. As the user pops items
from the undo stack, the current state is pushed onto a redo stack.
Jim Evins [Fri, 18 Dec 2009 04:21:33 +0000 (23:21 -0500)]
Refactored MediaSelect code
- Renamed glWdgtMediaSelect to glMediaSelect
- Created new glMessageBar widget derived from GtkInfoBar -- API is modelled
after GtkMessageDialog. Used this new widget to provide notification
of empty search results in the 2 glMediaSelect tabs.
- Simple code formatting changes.
Jim Evins [Wed, 16 Dec 2009 03:39:39 +0000 (22:39 -0500)]
Use glFieldButton instead of GtkComboBox for field selection
Extended glFieldButton so that it could be used instead of a GtkComboBox
for field selectors in the object editor. This unifies the dropdown style
with the "Insert field" button on the text editor page.
Jim Evins [Sat, 12 Dec 2009 15:07:08 +0000 (10:07 -0500)]
Always show images for object menuitems
Because of the visual nature of the actions of these menuitems, the visual
cues provided by these icons should help improve the ability to find the
correct menuitem -- I know it does for me ( I don't always know my left
from my right :-))
Use the filename "-" to indicate that the merge source is to be taken from
standard input (stdin). This is primarily intended for the glabels-batch
program.
Jim Evins [Mon, 7 Dec 2009 02:41:40 +0000 (21:41 -0500)]
Libglabels mods to support reorganization of template database
Added "equiv" attribute to "Template" tag. The "equiv" attribute works
differently than the "Alias" tag: instead of defining a simple alias for
the current template struct, it says to use the equivalent part as the
prototype for this template. The template could override (or append)
unique meta data for this part number. The "Alias" tag is still supported,
but is deprecated.
Added a "product_url" attribute to the "Meta" tag.
Added a "vendor.xml" file which contains a database of vendors and their
primary url. This file has only been populated with a few examples so far.
A new DTD file has been created to describe the above changes.
The "Avery 5160" family in "avery-us-templates.xml", has been organized in
the new scheme as an example.
Jim Evins [Fri, 4 Dec 2009 03:25:15 +0000 (22:25 -0500)]
Improved object editor default page selection
Whenever the object is changed, an attempt is made to either keep the same
page active or if that page is no longer visible, set to the first visible
page.
Jim Evins [Thu, 3 Dec 2009 04:04:09 +0000 (23:04 -0500)]
Don't intercept copy/paste operations intended for other widgets
Fixes bugs 1683799, 2833194 and probably 1978142. Only enable copy/paste
verbs if the focused widget is the glView. Otherwise let these operations
propagate to the focused widget to be handled natively.
Jim Evins [Wed, 2 Dec 2009 22:06:31 +0000 (17:06 -0500)]
Refactored glLabel and glView
Refactored glLabel and glView code:
- Moved selection tracking and storage of current label defaults from
glView to glLabel.
- Removed complexity of synchronizing lists of labels between glView and
glLabel.
- Current defaults for new objects are now kept in glLabel, not glView.
- Now follows a more faithful MVC pattern. As a consequence, the
Object editor and property bar are now fully independent views of
glLabel and do not need to be aware of glView at all.
- Refactoring reduced total SLOC count by about 1100 lines of code.
- This should potentially simplify the addition of an Undo/Redo
capability, because selections and object lists do not need
to be kept synchronized.
Jim Evins [Sun, 22 Nov 2009 23:50:38 +0000 (18:50 -0500)]
Use accessor functions instead direct access
Replaced direct access of widget fields with accessor functions. This round
catches flags and allocations which now have accessor functions in Gtk 2.18.
As a result, the master branch now requires Gtk-2.18/GNOME-2.28.