Vetclix

Development and news for the Vetclix veterinary practice management package.

vetclix-python

OK, it’s been a while.  But this blog isn’t about me, so I won’t bother to explain why I haven’t done any work on Vetclix for a while.  Not that there’s a reason.

The current Vetclix codebase is frankly pathetic.  I wrote it in C before I really had a solid grasp on GObject, GTK+, memory management, or even programming.  Ironically, I wrote the current code base after I ditched the original code because when I wrote that I didn’t have a good grasp on Python, wxWidgets, or even programming.

As I don’t have a boss to yell at me, my solution to restart from scratch yet again.  Shush; this is a learning experience.  Now I could go back and do it again in C, but much as I love C, it’s not the most practical language.  My other two options are Vala and Python.  Vala doesn’t appear to have MySQL bindings, and either way it’s a quite juvenile language, so I finally decided to go with Python.

I’m building it differently this time around.  The last two iterations of Vetclix, I focused on the interface and only wrote the database components when I needed to.  This resulted in a lot of headaches and wasn’t all that good of a way to do it anyway. Now I’m completely ignoring the main UI for now; I’m writing a database backend library first along with a basic non-interactive terminal frontend. Once that’s done and good, I’ll start work on the GUI and not a second before.

Hopefully this will result in an architecture that I’ll stick with. As it’s still experimental, you can find it in the branches/vetclix-python repository.

User Interface

One of the original goals of VetClix was to have a clean and intuitive interface. It’s something I’m always dwelling upon when I’m in a VetClix mood. I’m not much of an artist, so it really is quite a struggle. But I think I’ve finally hit upon something. Actually, I have two ideas that I really like, but one would take a long time to implement, so might be better for version 2.0 or something (that idea is something like the Blender “noodle” system). But the version I’m going to try to go ahead and implement is basically like this (no time for a mock-up, I fear):

At the left is a client list with five columns: Name, address, next appointment, status (green or red indicating payment record and if they’re over-due for anything), and account number. By default, it will display the next week or whatever of appointments, but a search box above the list will allow for querying. Below this list will be two GtkExpander widgets; one for a short description of their status, and one for displaying their basic information.

Right of that is a patient list; all the patients for the selected client will be displayed with their name and status (again, green or red; red if they’re late on a vaccine or whatever).

Right of that will be a stack of GtkExpander widgets that can display various details, such as vaccines, basic info, comments, and whatever else.

Double-clicking a patient or client will bring the user to another tab that displays more detailed information.

Website Update

You may notice a slight (*cough*) change in the website here. I finally got fed up with the simplicity of blosxom. Don’t get me wrong, it was great and all, but I don’t have the web development genius to turn it into a piece of brilliance. The best worst thing about this is that all the old posts won’t be transferred over. Whee.

Work Resumes

I just resumed work on VetClix after 3 months of inactivity.

Basically I tossed the error reporting subsystem for simplicity; I think it was rather counter-productive and pointless, and stripped out the administration utility into another program. That’s where most of the upcoming work is going to be for a while. All this also meant making some changes the the makefile.

I’m also going to have to pay some more attention some time to the UI; my current concepts aren’t going to mesh well with MySQL, and I want something new.

SCons vs. Make

I’ve been thinking about using SCons for building instead of Make. I haven’t looked into SCons too much yet, but its rules are python scripts, and it has automatic dependency calculation. Blender3D is a notable user of it. Of course, seeing as how SCons isn’t as common as GNU Make, I’d have to use both, which could become a maintenance problem.

Sneak peek of possible UI

In addition to cleaning up the code (it’s a mess), I decided to update my UI idea. First off, I decided to ditch the excessive use of lists, and use a more traditional system. Second, I decided to write my own GTK+ widget based off of the GtkIconView, only displaying more information more nicely. Below is a classified sneak preview of the UI design concept, carefully drawn by the world’s leading UI design artist.

Badly drawn doodle on a post-it note

Code Cleanup

I’ve been working on cleaning up the code and splitting it up into several files. Unfortunately, I’ve got some major bugs (read: segfaults) that I previously wrote weird hacks for, but I want to take care of them properly now. It’ll be a while, and the actual functionality will decrease since I axed the configuration assistant so that I can write a more powerful, general purpose one.

Away From Internet

I’ve been forced away from my nice safe internet connection and been forced to do something which I’ve heard is called “camping”. Basically, as far as I can tell, the idea is that you leave all modern conveniences that people have worked so hard for so that you can spend a week sitting on rocks and eating spam.

So, my point is, I won’t be working on VetClix for a few days. It’s not ready for a svn commit yet, but I’ve been working on getting client details working, and I’m planning to add the “patients” table soon.

VetClix Site Launched

The first version of the VetClix site has been launched.  It isn’t very sophisticated, but later maybe I’ll give it some more polish.