JX is a full-featured C++ application framework and widget library (SDK) for use with the X Window System.
C++ C HTML Shell Other Makefile Other
Permalink
Failed to load latest commit information.
ACE upgrade to ACE 6.3.0 and fix build issues with previous pcre upgrade Dec 4, 2015
bin generate ChangeLog.html instead of ChangeLog.php Jan 29, 2016
doc release fixes Apr 25, 2010
include not all systems have SBValue::GetSummary Feb 20, 2016
jextra update all code to remove instantiate_template.h Mar 8, 2014
lib don't ignore files in lib/ Feb 6, 2016
libj2dplot update all code to remove instantiate_template.h Mar 8, 2014
libj3d update all code to remove instantiate_template.h Mar 8, 2014
libjcal remove delete template instantiation files Mar 8, 2014
libjcore fix bug in JRegex which causes infinite loop in JTextEditor when sear… Jan 11, 2016
libjexpr code clean up Mar 8, 2014
libjfs update all code to remove instantiate_template.h Mar 8, 2014
libjx whitespace cleanup Jan 29, 2016
misc upgrade to ACE 6.3.0 and fix build issues with previous pcre upgrade Dec 4, 2015
obsolete update links in online help Jan 11, 2016
programs medic: lldb: attaching to process Mar 7, 2016
tutorial clean up packaging scripts Jan 6, 2016
.gitignore don't ignore files in lib/ Feb 6, 2016
CHANGES JX-3.0.0 Apr 4, 2011
COPYING initial commit Apr 15, 2009
INSTALL medic requires liblldb Feb 23, 2016
JX.dsw initial commit Apr 15, 2009
LICENSE JX-3.0.0 Apr 4, 2011
Makefile clean up build target names Feb 6, 2016
README.md clean up packaging scripts Jan 6, 2016
aceconfig.bat initial commit Apr 15, 2009
cygwin_bugs cygwin notes May 7, 2015
todo medic: lldb: attaching to process Mar 7, 2016
todo-utf8.c notes Jan 8, 2016

README.md

This repository contains all the New Planet Software tools and applications:

  • JX Application Framework
  • Code Crusader - IDE
  • Code Medic - Debugging UI on top of gdb / Xdebug
  • Code Mill - Class generator plugin for Code Crusader
  • System G - File manager with git support
  • Leibnitz - Graphing calculator
  • Glove - Data acquisition, manipulation, and analysis tool
  • Drakon - Process manager

JX Application Framework

JX is a full-featured C++ application framework and widget library (SDK) for use with the X Window System. The power of JX stems from its rich feature set and extensibility which support all aspects of professional quality application development. The library provides a wide variety of widgets for use in your program's windows along with useful functionality that connects the widgets and windows to make complete, working software. The package also includes a graphical window layout editor that lets you quickly position and configure the widgets in each of the program's windows. JX is built directly on top of Xlib and has been carefully optimized for performance.

The package also includes a complete test suite that demonstrates all of the features of the library and a set of tutorial programs that introduce the major concepts, one at a time. This provides a rich source of sample code, both for top level application design and for individual widget classes. It also shows how to extend the functionality of the library by, for example, creating custom tables or menus.

To build the libraries and programs, simply run GNU make ("make" or "gmake" on most systems) in a command line window inside the JX directory and follow the instructions that are printed.

If you are new to the JX Application Framework, then it is important to understand that it is not a program that you can run. Rather, it is a set of classes that provide a foundation on which you can build a program with a graphical interface. If you are familiar with either MicroSoft Visual Studio or MetroWerks CodeWarrior, then the equivalent components are as follows:

New Planet Software MicroSoft MetroWerks
Code Crusader/Code Medic Visual Studio CodeWarrior
jx_project_wizard Project Wizards Project Wizards
JX Application Framework MFC PowerPlant
JX/tutorials/ MSDN Sample code
JX/libjx/test/ MSDN Sample code

In this directory, you will find:

README               This file
INSTALL              Instructions for compiling and installing this package
LICENSE              License information
CHANGES              Describes changes from previous versions

tutorial             Tutorial source code demonstrating JX library
doc                  Documentation for JX library
lib                  Links to static and shared libraries

include
  make               Include files for Makefiles
  jcore              Link to header files for JCore
  jx                 Link to header files for JX

libjcore
  code               JCore source
  test               Sample source for using JCore classes

libjx
  code               JX source
  test               Sample application demonstrating JX library

programs
  code_crusader      IDE
  code_medic         Debugger
  code_mill          C++ class generator
  compile_jstrings   Compiles string database files for use with JX
  drakon             UNIX process manager
  glove              Data analysis
  jx_memory_debugger Graphical display and inspection of memory usage
  jx_project_wizard  Wizard to create skeleton JX application
                     and project file for use in Code Crusader 
  jxlayout           Graphical window layout editor
  leibnitz           Electronic paper for calculations and graphing
  makemake           Builds Makefile from Make.files and Make.header
  mondrian           (Unfinished) Graphical layout builder
  ssh_askpass        Replacement for x11-ssh-askpass
  systemg            Graphical file manager
  webgif             Utility program for working with gifs

ACE
  test               Sample source for using ACE library

misc
  pcre-*             PCRE regular expression package
  png                PNG library (new libgd)
  xpm                XPM library (libXpm)
  win32              Partial port to Windows

Please read the LICENSE file for the conditions under which the source is provided.

The code has been thoroughly tested on Linux and OS X. Bizzare behavior and crashes may be the result of broken system libraries. We am willing to work with you to solve such problems, so please don't hesitate to contact us, but since we don't have access to your system, the burden of proof must rest on you if a system call that works fine on all other systems doesn't work for you.

It is also important to realize that we do not maintain ACE. You are welcome to contact us if you have problems compiling it, but the ACE developers are more likely to be able to help, and patches should be sent to them, not to us. JX uses ACE because networking is horribly UNIX-variant-dependent, and the ACE developers are much better at dealing with this than we are. The ACE web page is:

http://www.cs.wustl.edu/~schmidt/ACE.html

FAQ

General problems

Can I get a pre-compiled version of JX?

No. We gave up trying to distribute binaries a long time ago. Everybody has a different version of the compiler and/or the required system libraries, so it causes more problems than it solves.

How do I set environment variables?

At the command line type:

echo $SHELL

This will tell you if you are using /bin/tcsh or /bin/bash as your shell.

If you are using /bin/tcsh:

setenv VARIABLE VALUE

If you append this to the file ~/.cshrc, the variable will be set automatically every time you log in.

If you are using /bin/bash:

export VARIABLE=VALUE

If you append this to the file ~/.bashrc, the variable will be set automatically every time you log in.

makemake hangs. How do I fix this?

Run it from the shell, not from another program (e.g. Midnight Commander).

Or you can patch it by appending the following arguments to the call to JProcess::Create(): kJIgnoreConnection, NULL, kJTossOutput, NULL, kJAttachToFromFD, NULL

It gives me the error: "'touch' has both : and :: entries." How do I fix this?

Remove all old copies of makemake from your system.

Why does it complain that it can't find the ACE header files?

You need to set the environment variable ACE_ROOT, as explained in the instructions printed when you run make in the top level directory.

Why does it complain that it can't find Xlib.h?

You need to create a symbolic link /usr/include/X11 that points to the directory containing the X11 header files on your system. This is often /usr/X11R6/include.

If you do not have root access and your system administrator doesn't want to create the link, then uncomment J_X11_INCLUDE_DIR and set it to point to the directory containing the X11 header files.

When I compile, I get warnings about implicit declarations of functions in ACE header files. How do I fix this?

Comment out J_DIE_ON_WARNING in include/make/jx_config.

When I compile, I get an error "undefined reference to 'CMSG_DATA'". How do I get around this?

Uncomment J_FORCE_ACE_STATIC in include/make/jx_config. Then delete ACE/ACE_wrappers/ace/libACE.so and run make again. Please notify us so we can update the configuration for your system.

When I link, it complains that it can't find libXpm. How do I fix this?

Uncomment JX_INCLUDE_LIBXPM in include/make/jx_config.

How do I avoid stripping the shared libraries?

Change J_STRIP_DEBUG to echo in include/make/jx_config.

How do I avoid installing the binaries when I build?

Run make J_WANT_INSTALL=0 *target*

Do I have to use the version of ACE included with JX?

No. JX uses only the elementary functionality provided by ACE, and since this is very unlikely to change, you can safely use newer versions.