Laxkit  0.0.7.1
Laxkit Checklist

Laxkit Checklist

     LAXKIT
Light Amalgamated X Kit
Loose Amalgamated X Kit
Lotsa Assorted Xthings
Lord, another Xlib-wrapper
Lumbering Asinine Xkit
Lame Awful Xkit

– Readymade Control Usage –

The only dependencies currently are png, Xlib, libssl, libcups, fontconfig, and Imlib2.
Currently, only left to right fonts supported in controls, that will change.
Controls called something-slider or something-button have one thing selected at a time.
Controls called something-selector can have multiple things selected at a time.
The Laxkit provides the following ready made controls and features:

  • means implemented more or less acceptably ~ means implemented enough to sort of work, but needs much cleanup . means implementation started, but still a long way to go until usable means not implemented
  • basic window type with tooltips and member functions LBDown/Up, CharInput/Release, and such
  • scrollers with the little arrows optionally right next to each other
  • zooming scrollers
  • 2-d pan window, with optional popup feature
  • 2-d integer tracker class, akin to Gtkmm's Adjuster class
  • message bars: basic, multiline
  • message bars: geared for displaying x,y coords in various formats
  • line edits
  • labled line edit ~ multiline word wrapping edits with left/right/center justification, and l/r/c/numerical tabs ~ simple multiline edit based on a prompt number rail slider with optional label
  • number slider, with optional label
  • number slider with input
  • string slider
  • icon slider
  • rulers that track the mouse
  • color picker: simple 8 bit rgb ~ palettes and palette window color picker: up to 32 bit per channel palette-gray-rgb-cmyk-cmy with background, and with simple conversion color strip: arbitrary primaries/cmyk/rgb/CIEL+a*b*/gray/yuv/palette
  • progress bar
  • text button ~ graphic button: check box-square/circle with a label
  • icon button
  • icon selector, with icon and/or text label
  • pop up menus (multi-level, select one only,optionally sub menus persist in memory)
  • popup menu selector (one level, select many), non-popped looks kinda like strslider sliderpopup/lineinput: has label, can type in option or select from list.
  • menu selector/ menu as checkboxes, checks, or highlighted detail selector, like menuselector, but list details, like file details ~ tree selector
  • icon selector (like for picking text attributes l/c/r/j)
  • function frames using RPN expressions for position, width, and height ~ row/column packing: l->r and t->b, LRBT RLTB RLBT LRTB LRBT RLTB RLBT row/column packing with builtin capability for nested rows/cols table frames ~ tabbed window frame ~ SplitWindow frame, like in Blender and Ion
  • StackFrame, a container for more than 1 window, and you slide bars between to resize
  • DateSelector
dialogs:
 ~  file select
 ~  font select
 .  print setup
 ~  color select?

  • single line input box
  • single line input box with buttons!!
  • message box, a label with buttons: "Blah Blah" [ok] [cancel]
  • ImageDialog, for setting a few properties and associated preview of images
  • Overwrite popup
an interface setup for complex manipulation of things in one window including:
 ~  rect selecting

  • bezier curve construction ~ ellipse construction
  • line construction nurbs lines
  • bezier patches ~ bezier color patch gradients ~ linear and radial gradients ~ object interface ~ freehand (makes bezier lines) ~ hetergeneous paths
  • images (based on Imlib2) triangle color mesh gradients? triangle color strip gradients (could be combined with above somehow?)? . text objects . measure tool
  • viewport window, holds a stack of the above interfaces
  • viewer window, holds a viewport, scrollers, etc.
Shortcuts: general shortcut integration
    dialogs for searching for blank keys or used shortcuts
    setup to easily enable modifying existing shortcuts
Convenience graphics functions, not anti-aliased or optimized for speed or efficiency, 
uses plain Xlib functions, these are just cheap, quick hacks really, but they do come in handy:

  • displayer for cheap and easy 2-d graphics with easy scaling/rotation displayer3d for cheap and easy 3-d, not optimized, no opengl
Support for various useful things:

  • Imlib2 initialization a Displayer using cairo as backend Generic image loaders based on imlib2, libmagick++, or whatever else graphics tablet support, spaceball support (need to get a spaceball first!!) . opengl support

FRAMES

—General Guidelines —–
Typical frame usage is something like this:
aDerivedFrameInstance::init() {
    AddWin(new WindowObject, additional parameters, ...)
    AddWin(new WindowObject2)
    ...
    Sync(1); <- the 1 means to call app->addwindow on all the unwindow'd AddWin'd windows
}
AddWin and Sync should not depend on an anxwindow having anXWindow::window defined already.
The windows should have win_w/win_h,... set with a Sync(1) before (or at the same time as in usage
example above) any call to any subwindow's anXWindow::init(), in which windows need 
appropriate values for window, win_x, win_y, win_w, win_h, and win_border so they can
do whatever basic initialization they need to.
Any resizing of the frame calls Sync(0) which calls anXWindow::MoveResize(—)
If you make any frames of your own they ought to adhere to the above guidelines.
 

Mon Feb 17 2014 11:52:57, Laxkit