LB Booster
« BBC Basic for MAC »

Welcome Guest. Please Login or Register.
Apr 1st, 2018, 04:00am



ATTENTION MEMBERS: Conforums will be closing it doors and discontinuing its service on April 15, 2018.
We apologize Conforums does not have any export functions to migrate data.
Ad-Free has been deactivated. Outstanding Ad-Free credits will be reimbursed to respective payment methods.

Thank you Conforums members.
Speed up Liberty BASIC programs by up to ten times!
Compile Liberty BASIC programs to compact, standalone executables!
Overcome many of Liberty BASIC's bugs and limitations!
LB Booster Resources
LB Booster documentation
LB Booster Home Page
LB Booster technical Wiki
Just BASIC forum
BBC BASIC Home Page
Liberty BASIC forum (the original)

« Previous Topic | Next Topic »
Pages: 1  Notify Send Topic Print
 thread  Author  Topic: BBC Basic for MAC  (Read 1125 times)
CryptoMan
New Member
Image


member is offline

Avatar




PM

Gender: Male
Posts: 46
xx BBC Basic for MAC
« Thread started on: Aug 12th, 2016, 8:07pm »

Is it possible to make a subset of LBB with BBC Basic for MAC?

Obviously, we depend on a lot WIN32 and KERNEL based API calls and various DLLs such as WINSOCK32, WMLIBERTY, etc which makes 100% or even 90% compatible to LBB for WINDOWS virtually impossible.

So, I think, it would be great to go back to basics and have a pretty decent LBB compatible LBB4MAC by simply adding the basic GUI elements such as NOTICE, PROMPT, FILEDIALOG, BUTTON, TEXTBOX, TEXTEDITOR, RADIOBUTTON, CHECKBOX, MENU, etc and without any stylebits or such frills using GUI library such as Qt or X-Windows or whatever.

Besides this, probably it will not be too hard to provide WINSOCK
and SQL drivers and arbitrary precision math libraries.

However, even with the basic GUI elements, it will be a good start.

As far as I have seen it, BBC for Macintosh is pretty amazing work. Congradulations. With all the graphics and sound capabilities, etc, it must have been a significant development effort.

CryptoMan
User IP Logged

Richard Russell
Administrator
ImageImageImageImageImage


member is offline

Avatar




Homepage PM


Posts: 1348
xx Re: BBC Basic for MAC
« Reply #1 on: Aug 13th, 2016, 2:09pm »

on Aug 12th, 2016, 8:07pm, CryptoMan wrote:
I think, it would be great to go back to basics and have a pretty decent LBB compatible LBB4MAC by simply adding the basic GUI elements such as NOTICE, PROMPT, FILEDIALOG, BUTTON, TEXTBOX, TEXTEDITOR, RADIOBUTTON, CHECKBOX, MENU, etc and without any stylebits or such frills using GUI library such as Qt or X-Windows or whatever.

You have tried BBC BASIC for Mac OS so you have already seen my attempt to emulate some of these GUI elements using plain BBC BASIC graphics. Are they functional enough for your purposes?

One major limitation of the simplistic approach I have adopted is that windows and dialog boxes are all modal and not movable. I suspect that would be unacceptable in many situations.

Carl has, I think, already gone much further in the alpha versions of LB5. So I doubt that there would be much interest in a Mac version of LBB based on what I have done for BBC BASIC. But I would be interested in other people's opinions.

Richard.
User IP Logged

CryptoMan
New Member
Image


member is offline

Avatar




PM

Gender: Male
Posts: 46
xx Re: BBC Basic for MAC
« Reply #2 on: Aug 15th, 2016, 5:39pm »

Yes, I have seen the FileDialog which gives the idea but requires some fine tuning.

What I meant was the standard GUI elements like LBB.

Don't we have a similar DLL like escape mechanism to MacOsX like the Win32 or Kernel functions on Macintosh?

Or, can you point to a 3rd party DLL supplier for a GUI which is callable from within BBC4MAC?

It must be hard if we look at Adobe Lightroom and Photoshop. I believe they made their own rudimentary GUI in C / C++ to make cross platform with the same look and feel.

I also thought of making a homemade GUI with BBC Basic graphics and maybe I can experiment with that if and when I can find some free time.

Anyway, I think, BBC4MAC is quite awesome.

Thanks....

User IP Logged

CryptoMan
New Member
Image


member is offline

Avatar




PM

Gender: Male
Posts: 46
xx Re: BBC Basic for MAC
« Reply #3 on: Aug 15th, 2016, 5:46pm »

I just got another idea.

Is it possible to add a Web Browser Control into BBC4MAC?

If that's possible maybe GUI maybe built with HTML or so much the better HTML5.

Have you seen NSBASIC?

It's been around for a long time since Palm Pilots and first Windows CEs with a dialect of Basic and the latest incarnation is I believed based on JavaScript and HTML5.

Would this give some ideas?

Probably, there are various open source Mozilla variants or better should be available.
User IP Logged

Mystic
Junior Member
ImageImage


member is offline

Avatar




PM

Gender: Male
Posts: 53
xx Re: BBC Basic for MAC
« Reply #4 on: Aug 16th, 2016, 2:07pm »

I didn't know there was a BBC4MAC (guess what I'm doing after I type this? smiley

Mac is my main machine, and would LOVE to see more development along the BASIC arena for MAC.

One thing that has started to annoy me, is how simple HTML is for making navigable screens for a user interface, and what a pain it is to do the same thing in LBB/LB.

Don't get me wrong, I realize they are two different animals, but I would really like to see something like an HTML type of system as an interface for my BASIC programs.

Things like making links using "a href" open and closing windows easily in a browser type system, etc...

a BASIC that can do browser type windows for color, navigation and layout would be awesome!

Sorry, I think I spun off into a different direction. smiley
User IP Logged

- Rick
Richard Russell
Administrator
ImageImageImageImageImage


member is offline

Avatar




Homepage PM


Posts: 1348
xx Re: BBC Basic for MAC
« Reply #5 on: Aug 16th, 2016, 5:36pm »

on Aug 16th, 2016, 2:07pm, Mystic wrote:
a BASIC that can do browser type windows for color, navigation and layout would be awesome!

Using ATL (Active Template Library) you can certainly have HTML windows in LB/LBB. For example this, adapted from one of Alyce's programs, illustrates color and layout achieved that way:

Code:
    nomainwin
 
    WindowWidth=400
    WindowHeight=300
    menu #main, "&File","E&xit", [quit]
 
    graphicbox #main.g, 0, 0, 100, 100
 
    open "Liberty Basic ATL Demo" For Window_nf As #main
    #main "TrapClose [quit]"
 
    Open "atl" For DLL As #atl
    CallDLL #atl, "AtlAxWinInit", Ret As long
 
    hWndViewer = hWnd(#main.g) 'Windows handle of graphicbox
    hMain = hWnd(#main)        'Windows handle of main window
 
    STRUCT Rect,_ 'struct for storing client area rectangle
        leftX as long,_     'upper left x
        upperY as long,_    'upper left y
        rightX as long,_    'lower right x
        lowerY as long      'lower right y
 
    calldll #user32,"GetClientRect",_
        hMain as ulong,_ 'window handle
        Rect as struct,_ 'name of struct
        r as long        'return
    cw = Rect.rightX.struct
    ch = Rect.lowerY.struct
 
    'resize graphicbox to fill client area of window
    #main.g "locate 0 0 ";cw+2;" ";ch+2
    #main "refresh"
 
    CallDLL #user32, "GetWindowLongA", _
        hWndViewer As ulong, _      'handle of graphicbox
        _GWL_HINSTANCE As long, _   'flag to get instance handle
        hInst As ulong              'returns instance handle of graphicbox
 
    style = _WS_CHILD or _WS_VISIBLE or _WS_VSCROLL
 
    'a minimal HTML document:
    html$ = "MSHTML:<html><head></head><body>" + _
            "This is an <font color=red>HTML</font> window!" + _
            "<p><center>This line is centered</center>" + _
            "</body></html>"
            
    CallDLL #user32, "CreateWindowExA", _
        _WS_EX_STATICEDGE As long, _    'extended type
        "AtlAxWin" As ptr, _            'class name
        html$ As ptr, _                 'URL, or progID or CLSID
        style As long, _                'window style
        0 As long, _                    'left x pos
        0 As long, _                    'top y pos
        cw As long, _                   'width
        ch As long, _                   'height
        hWndViewer As ulong, _          'handle of parent = graphicbox
        100 As long, _                  'handle to menu or child window ID
        hInst As ulong, _               'parent instance handle
        0 As long, _                    'window creation data
        hATL As ulong                   'handle of active template library control
    wait
 
[quit]
    Close #main
    close #atl    'close DLL after closing window
    end 

As far as navigation is concerned you can include links, but they will open a URL which may not be what you want.

It would be pretty easy to incorporate the above functionality as one of the predefined window types in LBB, i.e. something like:

Code:
    open "HTML demo" for html as #main 

(not that I have any plans to do so).

Richard.
« Last Edit: Aug 16th, 2016, 5:49pm by Richard Russell » User IP Logged

CryptoMan
New Member
Image


member is offline

Avatar




PM

Gender: Male
Posts: 46
xx Re: BBC Basic for MAC
« Reply #6 on: Aug 16th, 2016, 9:24pm »

Yes.

Exactly like this but an example for the same with BBC4MAC.

Can't we make similar system calls with MAC OS-X?

Anyway, I think BBC for MAC is awesome and I like to see system calls similar to this ATL Browser example for Win32.
User IP Logged

Mystic
Junior Member
ImageImage


member is offline

Avatar




PM

Gender: Male
Posts: 53
xx Re: BBC Basic for MAC
« Reply #7 on: Aug 16th, 2016, 11:11pm »

Thank you Richard!

I'll have to play with the ATL. smiley
User IP Logged

- Rick
Mystic
Junior Member
ImageImage


member is offline

Avatar




PM

Gender: Male
Posts: 53
xx Re: BBC Basic for MAC
« Reply #8 on: Aug 16th, 2016, 11:22pm »

on Aug 16th, 2016, 5:36pm, Richard Russell wrote:
Code:
    open "HTML demo" for html as #main 



This would be awesome!

Currently I am creating HTML files with my LBB programs so that my folks can navigate them as web pages (My work will not allow me to use a web server to serve PHP pages).

So, I am trying to create the "web experience" they are used to, without actually running a web server. Just static web pages created from LBB.

It works pretty good, but it would be nice if I could have my program running in the HTML window, since now it's a bit awkward doing it the way I am.

RUNBASIC is close to what I would like to see, but even it is creating a server to serve the pages.

I'm looking more for something I can send out as just a executable that "feels" like a web page in how it functions for the users.
User IP Logged

- Rick
Richard Russell
Administrator
ImageImageImageImageImage


member is offline

Avatar




Homepage PM


Posts: 1348
xx Re: BBC Basic for MAC
« Reply #9 on: Aug 16th, 2016, 11:45pm »

on Aug 16th, 2016, 9:24pm, CryptoMan wrote:
Can't we make similar system calls with MAC OS-X?

Of course you can make system calls, but I have no idea whether the Mac exposes an embeddable browser or HTML control in any way similar to ATL. You would need to ask an OS-X expert about that.

Richard.
User IP Logged

Richard Russell
Administrator
ImageImageImageImageImage


member is offline

Avatar




Homepage PM


Posts: 1348
xx Re: BBC Basic for MAC
« Reply #10 on: Aug 17th, 2016, 12:09am »

on Aug 16th, 2016, 11:22pm, Mystic wrote:
I'm looking more for something I can send out as just a executable that "feels" like a web page in how it functions for the users.

Why don't you simply bundle the pages with your application as straight .html files (LBB would allow you to embed them in the EXE file of course) and then point the local browser at them? Most, if not all, popular browsers support the file:// protocol I think (I've just tried Edge, FireFox and Chrome and they all seem to) so you shouldn't need an HTTP server like Run Basic.

Somewhat to my surprise even the ATL embedded browser control seems to understand the file:// syntax, although for some reason it was awfully slow at fetching the page across my home network.

Richard.
User IP Logged

Mystic
Junior Member
ImageImage


member is offline

Avatar




PM

Gender: Male
Posts: 53
xx Re: BBC Basic for MAC
« Reply #11 on: Aug 17th, 2016, 12:51am »

on Aug 17th, 2016, 12:09am, Richard Russell wrote:
...for some reason it was awfully slow at fetching the page across my home network.


Yep, one of the drawbacks for the file option. It works, but is painfully slow.

My HTML files are dynamic based on the program output. It's not like I am just accessing a bunch of static HTML files because they look pretty.

I would rather my program have input boxes on the HTML window (like a real form entry), then redraw the HTML page based on the database results, etc...

So essentially it would resemble typical HTML functionality, but being interpreted from the engine of LBB and not a server.
User IP Logged

- Rick
Richard Russell
Administrator
ImageImageImageImageImage


member is offline

Avatar




Homepage PM


Posts: 1348
xx Re: BBC Basic for MAC
« Reply #12 on: Aug 17th, 2016, 08:46am »

on Aug 17th, 2016, 12:51am, Mystic wrote:
So essentially it would resemble typical HTML functionality, but being interpreted from the engine of LBB and not a server.

I would suggest you check out Microsoft's IWebBrowser2 control to see if it has the capabilities you need. Because it uses an Object Oriented (COM) interface you would need to use the CallMethod function I wrote in order to access it from LB/LBB:

Code:
function CallMethod(object, method, parm$)
code$=chr$(139)+"D$"+chr$(4)+chr$(139)+"T$"+chr$(8)+chr$(139)+"L$" _
+ chr$(16)+"VW"+chr$(139)+"t$"+chr$(20)+chr$(43)+chr$(225)+chr$(139) _
+ chr$(252)+chr$(243)+chr$(164)+chr$(80)+chr$(139)+chr$(0)+chr$(255) _
+ chr$(20)+chr$(144)+chr$(95)+chr$(94)+chr$(194)+chr$(16)+chr$(0)

p$=parm$
n=len(p$)
calldll #user32, "CallWindowProcA", code$ as ptr, object as long,_
  method as long, p$ as ptr, n as long, CallMethod as long
end function
 

Richard.
User IP Logged

Mystic
Junior Member
ImageImage


member is offline

Avatar




PM

Gender: Male
Posts: 53
xx Re: BBC Basic for MAC
« Reply #13 on: Aug 17th, 2016, 3:08pm »

Thanks! I'll check that out as well.
User IP Logged

- Rick
Pages: 1  Notify Send Topic Print
« Previous Topic | Next Topic »

| |

This forum powered for FREE by Conforums ©
Terms of Service | Privacy Policy | Conforums Support | Parental Controls