|
Post by Pjot on Apr 18, 2020 18:24:30 GMT 1
All, After working with several GUI toolkits and implementing different techniques (GTK, FLTK, TurboVision, Webkit, nCurses - we can do Qt also if needed) the question remains if there is a GUI toolkit available which universally works on the majority of Unix-like systems. The problem with the aforementioned toolkits is (1) they are not always available on each Unix platform and (2) their API is tedious. So I found myself looking at this question again. I searched for a toolkit which could be reached from BaCon natively and which should be accessible though a very simple API. The GUI itself should be definable in a declarative manner, simply by describing properties, there should be an event loop, and there should be two simple functions which allow to set and get certain properties from the GUI. Nothing more. For example: id = GUIDEFINE("...declarations...")
WHILE TRUE widget$ = GUIEVENT(id) IF widget$ = "button" THEN ...do something... WEND
This is what I designed before I went to search for a suitable GUI widget set. After a while, I realized that a GUI toolkit always needs an X-server to function. So would there not be a toolkit available in X itself, like natively? If a Unix environment has an X-server, and there's a toolkit in there, then it means there is a GUI available. It would be a universal kind of GUI, because if there is X, there's a toolkit as well. It turns out that such a toolkit was developed for X, it is called "X Athena Widgets" or Xaw. Its first design is from the mid 80's and it is maintained until today. It is widely available and ported to the most obscure Unix-type environments, from Irix to Tru64, from Solaris to Linux. It has a very versatile internal API, and after more than 30 years it also is extremely stable. Downside: it is ugly as hell. However, to improve the looks for Xaw many alternatives have been developed, from which Xaw3d is the most famous. It usually is available in your favorite repo as well. It looks a lot better and provides some additional extra functionality. So I started implementing a minimal GUI engine to access the Xaw toolkit. As the X toolkit intrinsics use their own type definitions it has to be a compilation-time implementation, meaning that BaCon should generate source code based on the provided GUI definition. You best can think of the BaCon GUI engine as a gateway, or as a proxy: it passes widget definitions as-they-are to the Xaw toolkit, an approach which is in line with its overall 'lazy-converter' approach. This means that the GUI definitions should mention the original Xaw properties and values. This is a simple "Hello world" GUI, which now works with the latest BaCon from fossil: OPTION GUI TRUE
id = GUIDEFINE("{ type=window name=window XtNtitle=\"Hello world application\" XtNwidth=300 XtNheight=200 } \ { type=formWidgetClass name=form parent=window } \ { type=labelWidgetClass name=label parent=form XtNlabel=\"Hello world\" }")
WHILE TRUE event$ = GUIEVENT$(id) WEND
We have to provide the GUI definition as a plain string, in which each widget is enclosed in curly brackets. Note that this string cannot be a variable, as the implementation for Xaw is a compile-time implementation, and variables only are valid during runtime. The property names for each widget consist of the obligatory 'type' and 'name'. Furthermore we can specify the 'parent' and a 'callback'. All other properties can be looked up in the Xaw documentation here. The 'window' widget is a special one: it opens a connection to X, creating a display and a screen, and it sets up some default property values. All other widgets can be used natively from the Xaw documentation. After working with these toolkits, I discovered a bonus: the widely known toolkit Motif uses the same X core API. We can use the BaCon GUI engine also to access Motif widgets.
As always, any remarks and comments are welcome. I will post a more elaborate GUI example shortly.
Best regards Peter
|
|
|
Post by Pjot on Apr 18, 2020 19:51:06 GMT 1
This is a more elaborate example, using Xaw3d. Please make sure the header files for Xaw3d are available on your system: OPTION GUI TRUE PRAGMA GUI Xaw3d
id = GUIDEFINE( "{ type=window name=window resources=\"*text.AsciiSink.foreground:blue\",\"*text.AsciiSink.font:lucidasans-italic-18\" XtNtitle=\"This is a BaCon app\" XtNwidth=500 XtNheight=300 } \ { type=formWidgetClass name=form parent=window } \ { type=menuButtonWidgetClass name=menuButton parent=form XtNwidth=70 XtNlabel=\"File\" XtNshapeStyle=XmuShapeRoundedRectangle XtNleft=XawChainLeft XtNright=XawChainLeft XtNtop=XawChainTop XtNbottom=XawChainTop } \ { type=simpleMenuWidgetClass name=menu parent=menuButton } \ { type=smeBSBObjectClass name=item1 parent=menu callback=XtNcallback XtNlabel=\"Open\" } \ { type=smeBSBObjectClass name=item2 parent=menu callback=XtNcallback XtNlabel=\"Close\" } \ { type=smeLineObjectClass name=line1 parent=menu } \ { type=smeBSBObjectClass name=item3 parent=menu callback=XtNcallback XtNlabel=\"Exit\" } \ { type=asciiTextWidgetClass name=text parent=form XtNfromVert=menuButton XtNeditType=XawtextEdit XtNwidth=500 XtNheight=200 XtNscrollVertical=XawtextScrollWhenNeeded XtNwrap=XawtextWrapWord XtNleft=XawChainLeft XtNright=XawChainRight XtNtop=XawChainTop XtNbottom=XawChainBottom } \ { type=commandWidgetClass name=button parent=form callback=XtNcallback XtNfromVert=text XtNfromHoriz=NULL XtNwidth=120 XtNheight=40 XtNlabel=\"Click me\" XtNleft=XawChainLeft XtNright=XawChainLeft XtNtop=XawChainBottom XtNbottom=XawChainBottom } \ { type=commandWidgetClass name=exit_b parent=form callback=XtNcallback XtNfromVert=text XtNfromHoriz=button XtNhorizDistance=260 XtNwidth=120 XtNheight=40 XtNlabel=\"Exit\" XtNleft=XawChainRight XtNright=XawChainRight XtNtop=XawChainBottom XtNbottom=XawChainBottom } " )
LOCAL txt$
CALL GUISET(id, "text", XtVaTypedArg, XtNbackground, XtRString, "yellow", 7) CALL GUISET(id, "text", XtNstring, "Hello world")
CALL GUISET(id, "button", XtVaTypedArg, XtNbackground, XtRString, "green", 6) CALL GUISET(id, "button", XtVaTypedArg, XtNforeground, XtRString, "yellow", 7)
WHILE TRUE event$ = GUIEVENT$(id) SELECT event$ CASE "button" CALL GUIGET(id, "text", XtNstring, &txt$) PRINT "Did you type: '", txt$, "'?" CASE "item1" PRINT "Open a file!" CASE "item2" PRINT "Close a file!" CASE "exit_b", "item3" END ENDSELECT WEND
Note that Xaw does not allow to position by coordinates. It defines properties to align widgets relative to each other. This way, also the resizing of the main window does not spoil the GUI. In this GUI I have defined a menu as well. For fun, I put the menu title into an oval button but this can of course be changed. We can change color, font and so very easily. A list of X-server fonts can be obtained using the command 'xlsfonts'. Hope this GUI demonstrates how powerful this old toolkit is! BR Peter Attachments:
|
|
|
Post by vovchik on Apr 18, 2020 21:47:26 GMT 1
Dear Peter,
Thanks and great work. The first example compiles fine on Mint 19.2 64-bit and on Pi4 with Buster. The more elaborate example fails on both platforms with this:
In file included from xaw3d-demo1.bac:1:0, from xaw3d-demo1.bac.c:2: /usr/include/X11/Xaw3d/AllWidgets.h:34:8: error: unknown type name ‘XmuWidgetNode’ extern XmuWidgetNode XawWidgetArray[]; ^~~~~~~~~~~~~ make: *** [xaw3d-demo1.bac.o] Error 1
I am missing some headers or lib, but do not know which one(s). Any advice?
I have:
/usr/include/X11/Xaw/AllWidgets.h /usr/include/X11/Xaw3dxft/AllWidgets.h
installed on Mint and
/usr/include/X11/Xaw3dxft/AllWidgets.h /usr/include/X11/Xaw3d/AllWidgets.h /usr/include/X11/Xaw/AllWidgets.h
installed on Pi4.
With kind regards, vovchik
|
|
|
Post by bigbass on Apr 19, 2020 2:18:22 GMT 1
Hello Peter and vovchik
The first example works
the second I got to compile but have a run time issue with fonts
Warning: Missing charsets in String to FontSet conversion Error: Aborting: no font found
I installed sudo apt-get install libxmu-dev
and changed the top of the code to get it to compile cleanly
OPTION GUI TRUE PRAGMA GUI
PRAGMA LDFLAGS Xaw3d PRAGMA LDFLAGS Xmu
maybe vovchik you'll get it past the fonts run time error (since your on the RPI )
I'm still trying but will pass the ball to where I am with it
*maybe change to some common font or I have some missing fonts? keep me updated Joe
|
|
|
Post by bigbass on Apr 19, 2020 4:40:59 GMT 1
Hello Peter and vovchik Got the second larger demo working on the RPI! that's good news removed references to fonts and text size and bingo Peter I like what you are doing and having a GUI built in will have some advantages and we already hacked at xlib in the past so should be fun seeing what could be done Joe OPTION GUI TRUE PRAGMA GUI
PRAGMA LDFLAGS Xaw3d PRAGMA LDFLAGS Xmu
id = GUIDEFINE( " { type=window name=window XtNtitle=\"This is a BaCon app\" XtNwidth=500 XtNheight=300 } \ { type=formWidgetClass name=form parent=window } \ { type=menuButtonWidgetClass name=menuButton parent=form XtNwidth=70 XtNlabel=\"File\" XtNshapeStyle=XmuShapeRoundedRectangle XtNleft=XawChainLeft XtNright=XawChainLeft XtNtop=XawChainTop XtNbottom=XawChainTop } \ { type=simpleMenuWidgetClass name=menu parent=menuButton } \ { type=smeBSBObjectClass name=item1 parent=menu callback=XtNcallback XtNlabel=\"Open\" } \ { type=smeBSBObjectClass name=item2 parent=menu callback=XtNcallback XtNlabel=\"Close\" } \ { type=smeLineObjectClass name=line1 parent=menu } \ { type=smeBSBObjectClass name=item3 parent=menu callback=XtNcallback XtNlabel=\"Exit\" } \ { type=asciiTextWidgetClass name=text parent=form XtNfromVert=menuButton XtNeditType=XawtextEdit XtNwidth=500 XtNheight=200 XtNscrollVertical=XawtextScrollWhenNeeded XtNwrap=XawtextWrapWord XtNleft=XawChainLeft XtNright=XawChainRight XtNtop=XawChainTop XtNbottom=XawChainBottom XtNbackground=\"yellow\" XtNforeground=\"blue\" } \ { type=commandWidgetClass name=button parent=form callback=XtNcallback XtNfromVert=text XtNbackground=\"green\" XtNfromHoriz=NULL XtNwidth=120 XtNheight=40 XtNlabel=\"Click me\" XtNleft=XawChainLeft XtNright=XawChainLeft XtNtop=XawChainBottom XtNbottom=XawChainBottom } \ { type=commandWidgetClass name=exit_b parent=form callback=XtNcallback XtNfromVert=text XtNfromHoriz=button XtNhorizDistance=260 XtNwidth=120 XtNheight=40 XtNlabel=\"Exit\" XtNleft=XawChainRight XtNright=XawChainRight XtNtop=XawChainBottom XtNbottom=XawChainBottom } " )
LOCAL txt$
CALL GUISET(id, "*text", XtNstring, "Hello world")
WHILE TRUE event$ = GUIEVENT$(id) SELECT event$ CASE "button" CALL GUIGET(id, "*text", XtNstring, &txt$) PRINT "Did you type: '", txt$, "'?" CASE "item1" PRINT "Open a file!" CASE "item2" PRINT "Close a file!" CASE "exit_b", "item3" END ENDSELECT WEND
|
|
|
Post by Pjot on Apr 19, 2020 6:31:07 GMT 1
Thanks guys, @ vovchik: bigbass is right, we need to add the Xmu library, which, apparently, is linked automatically on my Mageia platform. I have updated the BaCon code so it now should work correctly (you can use the proposed LDFLAGS as well to avoid a complete compilation again). @ bigbass: your font issue could be caused by your LOCALE settings, can you try the following before starting the demo program: # LC_ALL=C # export LC_ALL
If this works then my sample code needs the SETENVIRON statement at the top of the program to avoid the same problem: SETENVIRON "LC_ALL", "C"
HTH Peter
|
|
|
Post by bigbass on Apr 20, 2020 5:39:52 GMT 1
Hello Peter still trouble with fonts but maybe you could make a test for this flaterco.com/xtide/installation.htmlsudo apt-get install libxaw3dxft8-dev and its around 2016 compared to others Joe
|
|
|
Post by Pjot on Apr 20, 2020 7:51:53 GMT 1
Thanks Joe, The other library is no problem, I already added functionality to specify other libraries, for example XawXpm and neXtaw. In my Mageia installation, the repo does not have a package for 'libxaw3dxft' available, so I installed it from the source code, with the recommended settings: # ./configure --enable-internationalization --enable-multiplane-bitmaps --enable-gray-stipples --enable-arrow-scrollbars
Compilation and installation went perfectly fine, then I could compile the demonstration GUI again without issues. However, I do not see a difference. But I hope it works better for you. Below the code to make the GUI work with the 'libxaw3dxft' library. BR Peter TRAP SYSTEM
OPTION GUI TRUE
PRAGMA GUI 3dXft OPTIONS -I/usr/local/include/X11/Xaw3dxft LDFLAGS -lXaw3dxft
id = GUIDEFINE( " { type=window name=window XtNtitle=\"This is a BaCon app\" XtNwidth=500 XtNheight=300 } \ { type=formWidgetClass name=form parent=window } \ { type=menuButtonWidgetClass name=menuButton parent=form XtNwidth=70 XtNlabel=\"File\" XtNshapeStyle=XmuShapeRoundedRectangle XtNleft=XawChainLeft XtNright=XawChainLeft XtNtop=XawChainTop XtNbottom=XawChainTop } \ { type=simpleMenuWidgetClass name=menu parent=menuButton } \ { type=smeBSBObjectClass name=item1 parent=menu callback=XtNcallback XtNlabel=\"Open\" } \ { type=smeBSBObjectClass name=item2 parent=menu callback=XtNcallback XtNlabel=\"Close\" } \ { type=smeLineObjectClass name=line1 parent=menu } \ { type=smeBSBObjectClass name=item3 parent=menu callback=XtNcallback XtNlabel=\"Exit\" } \ { type=asciiTextWidgetClass name=text parent=form XtNfromVert=menuButton XtNfont=\"lucidasans-italic-18\" XtNeditType=XawtextEdit XtNwidth=500 XtNheight=200 XtNscrollVertical=XawtextScrollWhenNeeded XtNwrap=XawtextWrapWord XtNleft=XawChainLeft XtNright=XawChainRight XtNtop=XawChainTop XtNbottom=XawChainBottom XtNbackground=\"yellow\" XtNforeground=\"blue\" } \ { type=commandWidgetClass name=button parent=form callback=XtNcallback XtNfromVert=text XtNbackground=\"green\" XtNfromHoriz=NULL XtNwidth=120 XtNheight=40 XtNlabel=\"Click me\" XtNfont=\"12x24\" XtNleft=XawChainLeft XtNright=XawChainLeft XtNtop=XawChainBottom XtNbottom=XawChainBottom } \ { type=commandWidgetClass name=exit_b parent=form callback=XtNcallback XtNfromVert=text XtNfromHoriz=button XtNhorizDistance=260 XtNwidth=120 XtNheight=40 XtNlabel=\"Exit\" XtNfont=\"12x24\" XtNleft=XawChainRight XtNright=XawChainRight XtNtop=XawChainBottom XtNbottom=XawChainBottom } " )
LOCAL txt$
CALL GUISET(id, "*text", XtNstring, "Hello world")
WHILE TRUE event$ = GUIEVENT$(id) SELECT event$ CASE "button" CALL GUIGET(id, "*text", XtNstring, &txt$) PRINT "Did you type: '", txt$, "'?" CASE "item1" PRINT "Open a file!" CASE "item2" PRINT "Close a file!" CASE "exit_b", "item3" END ENDSELECT WEND
Attachments:
|
|
|
Post by Pjot on Apr 20, 2020 16:36:51 GMT 1
All, This is the 'thesaurus' example program using Xaw3d. Hope it works for you all. Note how the window resizing nicely adjusts all the widgets in a correct manner. This cannot be done in HUG or MI To obtain an item from a list I had to use a propriety Xaw function, I am investigating if this can be done in a different manner. BR Peter
OPTION GUI TRUE PRAGMA GUI Xaw3d
CONST Max_Dict = 100
FUNCTION Get_Data$(server$, request$)
LOCAL total$, line$ LOCAL mynet
OPEN server$ & ":2628" FOR NETWORK AS mynet SEND request$ TO mynet
REPEAT RECEIVE line$ FROM mynet total$ = total$ & line$ IF INSTR(line$, "250 ok") THEN BREAK UNTIL NOT(WAIT(mynet, 1000))
SEND "QUIT" TO mynet CLOSE NETWORK mynet
RETURN total$
ENDFUNCTION
SUB Get_Dicts(gid)
LOCAL resp$, item$, word$, all$ LOCAL nr LOCAL server TYPE char*
CALL GUIGET(gid, "*server", XtNstring, &server)
resp$ = Get_Data$(CHOP$(server), "SHOW DB" & CR$ & NL$)
FOR item$ IN resp$ STEP CR$ & NL$ IF REGEX(LEFT$(item$, 1), "[[:alpha:]]") THEN dict$[nr] = item$ INCR nr IF nr > Max_Dict-1 THEN BREAK ENDIF NEXT dict$[nr] = NULL
CALL GUISET(gid, "*dicts", XtNlist, dict$, XtNnumberStrings, nr) CALL GUISET(gid, "*term", XtNstring, "")
ENDSUB
SUB Lookup_Term(gid)
LOCAL resp$ LOCAL server, term TYPE char* LOCAL selected TYPE XawListReturnStruct*
CALL GUIGET(gid, "*server", XtNstring, &server) IF LEN(server) = 0 THEN EXIT SUB
CALL GUIGET(gid, "*term", XtNstring, &term) IF LEN(term) = 0 THEN EXIT SUB
selected = XawListShowCurrent(XtNameToWidget((Widget)gid, "*dicts")) IF selected = NULL OR selected->string = NULL OR LEN(selected->string) = 0 THEN EXIT SUB
resp$ = Get_Data$(CHOP$(server), "DEFINE " & HEAD$(CHOP$(selected->string), 1) & " " & CHOP$(term) & CR$ & NL$)
CALL GUISET(id, "*translation", XtNstring, EXTRACT$(resp$, CHR$(13)))
FREE (char*)selected
ENDSUB
SUB Clear_Dicts(gid)
CALL GUISET(id, "*dicts", XtNlist, empty$, XtNnumberStrings, 1)
ENDSUB
GLOBAL empty$[] = { "", NULL } GLOBAL dict$[Max_Dict]
id = GUIDEFINE( " \ { type=window name=window XtNtitle=\"Thesaurus\" XtNwidth=550 XtNheight=500 } \ { type=formWidgetClass name=form parent=window } \ { type=labelWidgetClass name=label1 parent=form XtNwidth=100 XtNheight=30 XtNborderWidth=0 XtNlabel=\"Server:\" XtNjustify=XtJustifyLeft XtNleft=XawChainLeft XtNright=XawChainLeft XtNtop=XawChainTop XtNbottom=XawChainTop } \ { type=asciiTextWidgetClass name=server parent=form XtNfromVert=label1 XtNeditType=XawtextEdit XtNwidth=300 XtNheight=30 XtNleft=XawChainLeft XtNright=XawChainRight XtNtop=XawChainTop XtNbottom=XawChainTop } \ { type=commandWidgetClass name=fetch parent=form callback=XtNcallback XtNfromVert=label1 XtNfromHoriz=server XtNwidth=95 XtNheight=30 XtNlabel=\"Fetch\" XtNleft=XawChainRight XtNright=XawChainRight XtNtop=XawChainTop XtNbottom=XawChainTop } \ { type=labelWidgetClass name=label2 parent=form XtNfromVert=server XtNwidth=100 XtNheight=30 XtNborderWidth=0 XtNlabel=\"Dictionaries:\" XtNjustify=XtJustifyLeft XtNleft=XawChainLeft XtNright=XawChainLeft XtNtop=XawChainTop XtNbottom=XawChainTop } \ { type=viewportWidgetClass name=view parent=form XtNallowVert=1 XtNuseRight=1 XtNheight=100 XtNfromVert=label2 XtNleft=XawChainLeft XtNright=XawChainRight XtNtop=XawChainTop XtNbottom=XawChainTop } \ { type=listWidgetClass name=dicts parent=view XtNresize=1 XtNverticalList=1 XtNwidth=300 XtNleft=XawChainLeft XtNright=XawChainRight XtNtop=XawChainTop XtNbottom=XawChainTop } \ { type=commandWidgetClass name=clear parent=form callback=XtNcallback XtNfromVert=label2 XtNfromHoriz=view XtNvertDistance=70 XtNwidth=95 XtNheight=30 XtNlabel=\"Clear\" XtNleft=XawChainRight XtNright=XawChainRight XtNtop=XawChainTop XtNbottom=XawChainTop } \ { type=labelWidgetClass name=label3 parent=form XtNfromVert=view XtNwidth=100 XtNheight=30 XtNborderWidth=0 XtNlabel=\"Lookup:\" XtNjustify=XtJustifyLeft XtNleft=XawChainLeft XtNright=XawChainLeft XtNtop=XawChainTop XtNbottom=XawChainTop } \ { type=asciiTextWidgetClass name=term parent=form XtNfromVert=label3 XtNeditType=XawtextEdit XtNwidth=300 XtNheight=30 XtNleft=XawChainLeft XtNright=XawChainRight XtNtop=XawChainTop XtNbottom=XawChainTop } \ { type=commandWidgetClass name=action parent=form callback=XtNcallback XtNfromVert=label3 XtNfromHoriz=term XtNwidth=95 XtNheight=30 XtNlabel=\"Lookup\" XtNleft=XawChainRight XtNright=XawChainRight XtNtop=XawChainTop XtNbottom=XawChainTop } \ { type=labelWidgetClass name=label4 parent=form XtNfromVert=term XtNwidth=100 XtNheight=30 XtNborderWidth=0 XtNlabel=\"Translation:\" XtNjustify=XtJustifyLeft XtNleft=XawChainLeft XtNright=XawChainLeft XtNtop=XawChainTop XtNbottom=XawChainTop } \ { type=asciiTextWidgetClass name=translation parent=form XtNfromVert=label4 XtNeditType=XawtextRead XtNscrollVertical=1 XtNwidth=400 XtNheight=180 XtNleft=XawChainLeft XtNright=XawChainRight XtNtop=XawChainTop XtNbottom=XawChainBottom } \ { type=commandWidgetClass name=exit parent=form callback=XtNcallback XtNfromVert=translation XtNhorizDistance=310 XtNwidth=95 XtNheight=30 XtNlabel=\"Exit\" XtNleft=XawChainRight XtNright=XawChainRight XtNtop=XawChainBottom XtNbottom=XawChainBottom } \ ")
CALL GUISET(id, "*server", XtNstring, "dict.org")
trans$ = "<FocusIn>: display-caret(on)\n<FocusOut>: display-caret(off)\n<Key>BackSpace: delete-previous-character()\n<Key>Return: end-of-line()\n<Key>: insert-char()\n<Btn1Down>: select-end()" CALL GUISET(id, "*server", XtNtranslations, XtParseTranslationTable(trans$)) CALL GUISET(id, "*term", XtNtranslations, XtParseTranslationTable(trans$))
CALL Clear_Dicts(id)
WHILE TRUE event$ = GUIEVENT$(id) SELECT event$ CASE "fetch" CALL Get_Dicts(id) CASE "clear" CALL Clear_Dicts(id) CASE "action" CALL Lookup_Term(id) CASE "exit" END ENDSELECT WEND
Attachments:
|
|
|
Post by bigbass on Apr 20, 2020 18:00:34 GMT 1
Hello Peter I would be happy with your results on my box that looks really good for being built in however the RPI is famous for its GUI problems we usually get work arounds or fixes so its just a matter of time but it compiles and runs! a small edit was needed (and the latest fossil of course) OPTION GUI TRUE
PRAGMA GUI PRAGMA LDFLAGS Xaw3d
If I don't get it sorted quickly vovchik or Alex should we are all on the RPI and have solved GUI problems before Joe P.S don't wait for us keep the demos coming!
|
|
|
Post by rikky on Apr 20, 2020 19:04:39 GMT 1
Hmm, cannot get anything to work on the Raspi Stretch. There is no Xaw anywhere. Also no apt-get package. I did add the libxmu-dev package, and then even tried to install the xaw from source. But then it complained that it had no xpm. downloaded that one, but there is not even a configure script, nor instructions. And from experience I know that it can be followed by the next thing to install, and the next (and the next ...) Is it possible to have this header files from a Raspi Buster put into a tar.gz file ? I think they will work on a Stretch. Anyway, why is a package that is so widely included in nearly every Linux, not even available for the Raspi Stretch? Rik.
|
|
|
Post by bigbass on Apr 20, 2020 19:32:46 GMT 1
|
|
|
Post by Pjot on Apr 20, 2020 19:34:27 GMT 1
Hi Rik, It sure should be there - you can try to install this package meant for Stretch. As I do not have a RPi myself, I am not sure how to do the installation... @ Joe: I made some improvements on the library checking, please get the latest from fossil and see if it works better for you. BR Peter
|
|
|
Post by alexfish on Apr 20, 2020 21:39:11 GMT 1
Hi Rik
Below For info only : but try what is suggested first .. upto last
and then use at your own risk : thinking here devs wise ::
The notes + may be of use to others.
ADDED interestingly
From
and
|
|
|
Post by rikky on Apr 20, 2020 22:43:09 GMT 1
I have now apt-getted : -xaw3dg -xaw3dg-dev -libxaw7 (was already installed to my surprise) nope. -libxaw7-dev did the trick. The hello world script now works, but gives a Warning: Missing charsets in String to FontSet conversion Tomorrow (or so) I will test the others, but I already tried the last example from Pjot, and there I get: But It works. Rik.
|
|