Links to dialog and dialog-like utilities for use mainly with scripting or possibly creating simple GUIs with C programs are covered below. Dialog utilities are typically used on POSIX systems. There are some notes on portability to Windows platforms.

URLs are accurate as of when this was posted. However, they can change over time. You can use a search engine or archive.org wayback tool to find pages that have been moved or backups of older versions of pages.

Dialog
https://web.archive.org/web/20130602021132/http://www.openwatcom.org/index.php/Dialog_howto
How To for building Dialog on OpenWatcom. It builds on MinGW with msys just as well. However, a few of the lines in the OpenWatcom patches for handling directory structures differently aren't needed. Dialog provides console GUI interaction for batch and shell scripts.

I have a newer set of patches for dialog that adds more feature support on Windows. If there's interest, I can upload the source code as part of my LM BLD project at some point: http://www.distasis.com/cpp/lmbld.htm

LM BLD ui patches
http://www.distasis.com/cpp/lmbld.htm#lmbldui
Patches to cross-platform portable browsers so that they can be used as user interfaces. Offers the ability to create user interfaces with basic HTML and CSS. Can work with UTF-8 files to support internationalization. I personally prefer this method to scripting with dialog. HTML and CSS are standardized and there's more control over the look and feel of dialogs.

Gui It !
http://www.lprp.fr/soft/misc/guiit/guiit_en.php3?lid=320
WxWidgets based front ends using simple XML configuration files.

yad
https://sourceforge.net/projects/yad-dialog/
Yet another dialog, this is a fork of zenity with many added features. Uses GTK+ 2 to offer Windows look and feel for user interface objects and offers cross-platform use. Support for MinGW has been added to the source code. GTK+ 3 port available.

zenity
http://www.placella.com/software/zenity/
This provides a simple GUI interface for batch and shell scripts. It's been ported from POSIX systems to work with MinGW, msys and GTK+ 2. Similar to Dialog, but possibly less functions. Latest version of zenity supports GTK+ 3.

gxmessage
http://crash.ihug.co.nz/~trmusson/programs.html
Builds with MinGW and msys if GTK libraries (2 or 3) are installed. Similar to Dialog but slightly different functionality.

Xdialog
http://xdialog.free.fr/
Builds with MinGW and msys if GTK libraries are installed. Dialog port using GTK instead of pdcurses. Used following configure options: ./configure --with-gtk2 --with-scanf-calls.

gtkdialog
https://web.archive.org/web/20120303170146/http://linux.pte.hu/~pipas/gtkdialog
http://puppylinux.org/wikka/gtkdialog
Has much more functionality than Dialog or Zenity. Compiles and builds fine with MinGW and msys. However, when run to produce a dialog through a script, it hangs, presumably due to threading issues on Windows. Tried adding -mwindows -mthreads to CFLAGS and -lpthread to the libraries, but worked the same.

lxdialog
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/scripts/kconfig/lxdialog?id=HEAD
Haven't tried porting this to Windows. It provides a dialog like interface for Linux kernel configuration.

libdialog
http://ftp.tw.freebsd.org/pub/FreeBSD-stable/src/gnu/lib/libdialog/
FreeBSD dialog library for use with C programs.
GUI libraries

I've written articles on cross platform screen libraries including one for the C/C++ Users Journal. I've also done a lot of searching and evaluation of cross-platform GUI libraries. You can take a look at my comparison article on screen libraries at http://www.distasis.com/cpp/scrlib.htm

The following list does not cover every GUI library out there, but it gives a good sample of what's available. Most are C++ libraries but there are a few C libraries for those wanting to work only with C.

My personal preferences at this point are SDL (1 and 2), pdcurses and FLTK because they're lightweight and work on a large variety of systems including mobile devices.

URLs are accurate as of when this was posted. However, they can change over time. You can use a search engine or archive.org wayback tool to find pages that have been moved or backups of older versions of pages.

FLTK - Fast Light ToolKit (C++)
http://www.fltk.org/index.php

Fox Toolkit (C++)
http://www.fox-toolkit.org/

wxWidgets (C++)
http://www.wxwidgets.org/

SDL - SDL 1 and SDL 2
Simple DirectMedia Layer - C cross-platform multimedia library
https://www.libsdl.org/

SDL-widgets
C++ library
http://members.chello.nl/w.boeke/SDL-widgets/

SMFL - simple and fast multimedia library
http://www.sfml-dev.org/

pdcurses
C library
Works with Windows console, X11, SDL 1 and 2
http://pdcurses.sourceforge.net/

pdcurses win32a
C library
A PDCurses fork for Win32 (not console mode).
http://www.projectpluto.com/win32a.htm

Qt
Expansive C++ GUI toolkit - source includes many libraries including a browser example using Webkit.
https://www.qt.io/

NCurses
C console library. Works on POSIX systems and Windows.
http://invisible-island.net/ncurses/

Windows++
I learned a great deal about Win32 C++ programming from the book that created this framework:
https://web.archive.org/web/20070404043707/http://www.dilascia.com/wpp.htm

Owlnext
Borland's Object Windows C++ Library for the modern age
https://sourceforge.net/projects/owlnext/

Ultimate
C++ cross-platform rapid application development framework
http://www.ultimatepp.org/index.html

Poco
C++ library
https://pocoproject.org/

Nana
C++11 GUI library
https://github.com/cnjinhao/nana

GraphApp
Toolkit for platform-independent graphical user interface programming in the C language.
Works with Windows and X Windows
http://enchantia.com/graphapp/

Anti-Grain Geometry
C++ free graphics library for Windows and X11. Includes SVG viewer.
http://www.antigrain.com/about/index.html

CEGUI
Crazy Eddie's GUI System C++ library providing windowing and widgets for graphics APIs/engines
http://cegui.org.uk/wiki/Main_Page

Guichan
Portable C++ gaming library for Allegro, SDL and/or OpenGL
https://sourceforge.net/projects/guichan/

AntTweakBar
C/C++ GUI library for OpenGL and DirectX applications.
http://anttweakbar.sourceforge.net/doc/

Agar
C Cross-platform toolkit for graphical applications.
Difficult to build on some systems and some versions can be buggy.
http://libagar.org/

LibUFO
LibUFO Universal Form Objects, C++ core library for forms.
http://libufo.sourceforge.net/index.html

VGUI
C++ V GUI library and IDE (VIDE).
http://vgui.sourceforge.net/

IUP
Multi-platform toolkit for building graphical user interfaces. with API in three languages: C, Lua and LED.
http://webserver2.tecgraf.puc-rio.br/iup/

Milkymist GUI toolkit
C GUI library
https://github.com/m-labs/mtk

m2tklib
Mini Interative Interface Toolkit Library
https://code.google.com/archive/p/m2tklib/

ftk
Funny tool kit, a C cross-platform embedded GUI
https://github.com/xianjimli/ftk
This is a list of useful soundfonts and sound samples.

URLs are accurate as of when this was posted. However, they can change over time. You can use a search engine or archive.org wayback tool to find pages that have been moved or backups of older versions of pages.

Ethan's Original Soundfonts
Royalty free soundfonts created by Ethan Winer.
http://ethanwiner.com/ewsf2.html

FreePats project
Original web site with sound samples
https://web.archive.org/web/20160310040553/http://freepats.zenvoid.org/

Freesound
Collaborative database of Creative Commons licensed sounds
https://www.freesound.org/

MuseScore Soundfont links
SoundFonts recommended by the MuseScore project
https://musescore.org/en/handbook/soundfont

OLPC Free sound samples
Links to free sound sample resources.
http://wiki.laptop.org/go/Free_sound_samples

Philharmonia Orchestra Sound Samples
Creative Commons licensed sound samples
http://www.philharmonia.co.uk/explore/make_music/

PlopGrizzly
A collection of public domain soundfonts and instrument/sound effect recordings.
https://github.com/PlopGrizzly/PlopGrizzlySound

Titanic Soundfont
Public domain, high quality MIDI soundfont by Luke Sena.
https://aur.archlinux.org/packages/soundfont-titanic/

University of Iowa Music Instrument Samples
Freely available for use without restriction.
http://theremin.music.uiowa.edu/MIS.html
Here are some links related to music documentation.

URLs are accurate as of when this was posted. However, they can change over time. You can use a search engine or archive.org wayback tool to find pages that have been moved or backups of older versions of pages.

Music Theory for Musicians and Normal People
Creative Commons licensed music theory PDF.
http://tobyrush.com/theorypages/index.html

Programming and Using Linux Sound - in depth
Nice introduction to music software on Linux.
Has some good coding examples using midi code such as TiMidity++ and other midi libraries.
https://jan.newmarch.name/LinuxSound/

Recipes for Music on Your PC
Tutorial on creating music using ABC notation and TiMidity++
http://distasis.com/recipes/music.htm

Wotsits.org sound and music file formats
File format information backed up at archive.org from the no longer available wotsits.org site
https://web.archive.org/web/20150323133016/http://www.wotsit.org/list.asp?fc=12
Here's a list of music/audio software I like or have found of interest. I've built all of them from source without too many complications at one point or another. I'm also working on patching apcstudio which is a lightweight FLTK based audio/wave file editor. I have it building with the latest version of FLTK and am hoping to add some new capabilities.

URLs are accurate as of when this was posted. However, they can change over time. You can use a search engine or archive.org wayback tool to find pages that have been moved or backups of older versions of pages.

Audacity
Multi-track audio editor and recorder. It can be used to record real instruments and create sound samples.
http://www.audacityteam.org/

MilkyTracker
Create and listen to mod and xm files. Sound quality for playing mod files is better than many other mod file players.
http://milkytracker.org/

TiMidity++
Midi player. Can convert midi to wave files. Some versions show piano keyboard(s) with notes as they play. Can show lyrics of Karaoke midi files.
http://timidity.sourceforge.net/

abcmidi
Convert ABC notation (which can be created in any text editor) to midi and back again.
http://abc.sourceforge.net/abcMIDI/

abcm2ps
Convert ABC notation to Postscript sheet music for printing. One can even add guitar tablature using special fonts.
http://moinejf.free.fr/

sox - SOund eXchange
Swiss army knife of sound processing programs. Audio conversion utilities.
http://sox.sourceforge.net/

gramofile
Records/plays audio and has audio filtering to remove noise.
http://www.opensourcepartners.nl/~costar/gramofile/

FLTK Midi Keyboard
On screen Midi Keyboard using FLTK GUI library and rtmidi MIDI library.
https://github.com/ncassetta/Fl_MIDIKeyboard

SDL Widgets examples
Various audio programs including BigBand for music composition, SDL Widgets examples to make and edit waveforms and a synthesizer for Android devices.
http://members.chello.nl/w.boeke/

PaulStretch
Paul's Extreme Sound Stretch. Stretches audio files. FLTK GUI.
http://hypermammut.sourceforge.net/paulstretch/

GUS patch tools
Gus patch utilities based on timidity-tools.
http://www.squeep.com/~steve/guspatch-tools-0.1.tar.bz2

GT
Midi utilities with GUS support
http://pkgs.fedoraproject.org/repo/pkgs/gt/gt-0.4-clean.tar.gz/d595e464e6403f4bd8c3cfc7c42b2aec/
I'm working on several projects. One of my goals is to be able to port any of the SDL 1.2.x programs I use so they'll work with SDL 1.2.15 or with SDL 2.x. So far, I've added SDL 2 support to PDCurses. I believe some or all of those patches made it back into the official version. Other programs I've added SDL2 support for include bard, picaxo, sfontview, unifontview, perigee, SDL_Draw, pong, drac, yahtzee. More are in the works including Tuxmath. Bard is a lightweight epub reader with text to speech support. Picaxo is a lightweight graphics viewer. Sfontview is a lightweight TrueType font viewer. Unifontview is a font viewer that shows a font's entire character set including Unicode characters supported. Perigee is a graphics slideshow program. SDL_Draw is a graphics library for simple line drawing with SDL. I'm currently using it with wavetools to do the line drawing for a lightweight wave file viewer. The wave file viewer also builds with SDL 1.2.x or SDL 2.x.

Code/patches for many of the modifications I've made are available from a link at:
http://www.distasis.com/cpp/patches.htm
I'll be adding more modifications to various projects over time. Feel free to write if you're interesting in discussing a particular SDL 2 conversion further.

MinGW

May. 5th, 2016 12:29 pm
There are now several forks of MinGW and each has its pros and cons. However, there are now enough negatives to using them, that I've found it necessary to build MinGW from scratch myself. The MinGW64 project uses a later version of gcc, has better compatibility for building Open Source projects and has its own thread library instead of using Red Hat's pthreads-w32. Some custom builds of MinGW64 even have POSIX threading set as the default instead of Win32 threading. That means better compatibility for C++ thread related code (since the GNU C++ library relies on POSIX threading for parts of its implementation). The MinGW project has always been more careful about licensing and making sure that the code it was using was properly licensed and legal for usage. The MinGW project did follow the example of the MinGW64 project in one key area. They switched from public domain to a MIT license for their runtime library and Win32 API. When they did so without clearly indicating that an exception could be made similar to the GNU gcc runtime license exception, I felt it was time to stop using that version of the MinGW compiler.

I'm currently working with gcc 4.9.2 compiled from source. I'm still using the older public domain APIs, but I've made several modifications for compatibility with the Win32 API (including some modifications that aren't available in the MinGW64 libraries). I have a minimal thread library that was custom written for portability. It's based on C11 thread support and includes POSIX functionality. The gnu compiler is built with POSIX threads as the default so C++ threading works as expected.

So far, I've had no reason to want to work with any other MinGW forks. The version I have does everything I need and supports all the programs I want to compile on Windows. My particular fork is continually evolving. I continue to add support for new Win32 API changes, Win32 API omissions, new C/C++ features as I need them. At some point, I hope to completely replace the runtime library with code that better supports internationalization (better UTF-8 support), C standard compatibility and other useful features.

If anyone else is finding limitations with the compilers maintained by the various MinGW and MinGW64 projects or other related forks based on these projects, I highly recommending building the GNU compiler from source on your own with the options you need most. If you're interested in discussing the GNU compiler further or want to know more about my modifications, you're welcome to use the CppDesign mailing list ( http://groups.yahoo.com/group/CppDesign ) as a forum for further discussion.

July 2017

S M T W T F S
      1
234 5678
9101112131415
16171819202122
23242526272829
3031     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 23rd, 2017 10:48 pm
Powered by Dreamwidth Studios