That isn't helpful what means "don't work"Knatterton wrote:That don't work in mint 19.2 64 with FB 1.0.6.
you get a compile error ?
you get a runtime error ?
you get nothing ?
Joshy
That isn't helpful what means "don't work"Knatterton wrote:That don't work in mint 19.2 64 with FB 1.0.6.
The above posted program shows dozens warnings and then dozens:D.J.Peters wrote:That isn't helpful what means "don't work"Knatterton wrote:That don't work in mint 19.2 64 with FB 1.0.6.
you get a compile error ?
you get a runtime error ?
you get nothing ?
Joshy
So then the solution is maybe to take a file-chooser replacement written in FB, again a draft:D.J.Peters wrote:The class Fl_File_Chooser isn't a widget class where you can set the the x,y position or move it around.
It's a dialog class and the window/desktop manager put the dialog on screen.
Code: Select all
' FL_FB_file_chooser.bas
' fb version of file-chooser
' after Fl_File_Chooser.cxx 10358 2014-10-05 11:56:06Z AlbrechtS
#include once "fltk-c.bi"
dim as Fl_ButtonEx ptr Btn, OkBtn, CancelBtn, favoritesBtn, favUpBtn, o
#ifdef __FB_WIN32__
const PATH = "$USERPROFILE"
#else
const PATH = "$HOME"
#endif
dim shared as zstring ptr UserPath
UserPath = callocate(FL_MAX_PATH)
flFilenameExpand(UserPath,FL_MAX_PATH,PATH)
sub favoritesBtnCB cdecl (byval self as FL_WIDGET ptr,byval CheckButton as any ptr)
print *Fl_WidgetGetLabel(self) & "[" & Fl_ButtonGetValue(CheckButton) & "]"
end sub
sub BrowserCB cdecl (byval self as FL_WIDGET ptr,byval filebrowser as any ptr)
var index = Fl_BrowserGetValue(filebrowser)
print *Fl_BrowserGetText(filebrowser,index)
end sub
sub previewCheckCB cdecl (byval self as FL_WIDGET ptr,byval CheckButton as any ptr)
print *Fl_WidgetGetLabel(self) & "[" & Fl_ButtonGetValue(CheckButton) & "]"
end sub
sub showhiddenCheckCB cdecl (byval self as FL_WIDGET ptr,byval CheckButton as any ptr)
print *Fl_WidgetGetLabel(self) & "[" & Fl_ButtonGetValue(CheckButton) & "]"
end sub
dim as Fl_Window ptr Win = Fl_WindowNew2(400,400,490, 380, "Choose File")
var showChoice = Fl_ChoiceNew(65, 10, 215, 25, "Show:")
favoritesBtn = Fl_ButtonExNew( 290, 10, 155, 25, "Favorites")
o = Fl_ButtonExNew(455, 10, 25, 25,"")
var fileList = Fl_File_BrowserNew(10, 45, 295, 225)
Fl_WidgetSetType fileList,FL_HOLDBROWSER
Fl_WidgetSetCallbackArg fileList,@BrowserCB,fileList
Fl_Browser_SetHasScrollbar fileList,FL_SCROLL_VERTICAL
Fl_File_BrowserLoad fileList,UserPath
var previewBox = Fl_BoxNew(305, 45, 175, 225, "?")
var previewButton = Fl_Check_ButtonNew(10, 275, 73, 20, "Preview")
Fl_WidgetSetCallbackArg previewButton,@previewCheckCB,previewButton
var showHiddenButton = Fl_Check_ButtonNew(115, 275, 165, 20, "Show hidden files")
Fl_WidgetSetCallbackArg showHiddenButton,@showHiddenCheckCB,showHiddenButton
var fileName = Fl_File_InputNew(115, 300, 365, 35)
dim as Fl_Box ptr p = Fl_BoxNew(10, 310, 105, 25, "Filename:")
OkBtn = Fl_ButtonExNew(313, 345, 85, 25, "OK")
CancelBtn = Fl_ButtonExNew(408, 345, 72, 25, "Cancel")
Fl_WindowShow Win
Fl_Run
Code: Select all
#include once "fltk-c.bi"
'
' main
'
#ifdef __FB_WIN32__
var pattern="fbc*.exe"
var defaultpath="\FreeBASIC\"
#else
var pattern="fbc"
var defaultpath="/usr/local/bin/"
#endif
sub Fl_File_ChooserShowCenter(byval fc as FL_File_Chooser ptr)
var win = cptr(FL_Double_Window ptr,Fl_WidgetWindow(Fl_File_ChooserNewButton(fc)))
var scrW=Fl_GetW() ' get screen width,height
var scrH=Fl_GetH()
var winW=Fl_WidgetGetW(win) ' get current win width,height
var winH=Fl_WidgetGetH(win)
var newX = scrW/2-winW/2 ' calculate new center position
var newY = scrH/2-winH/2
Fl_WidgetPosition(win,newX,newY)
Fl_Double_WindowShow(win)
Fl_File_ChooserRescanKeepFilename(fc)
end sub
'
' main
'
Fl_Register_Images() : Fl_File_IconLoadSystemIcons() ' <--- good idea in all programs
var fc = Fl_File_ChooserNew(defaultpath, pattern, FL_FILECHOOSER_SINGLE, "Select FreeBASIC")
Fl_File_ChooserSetPreview(fc,0)
Fl_File_ChooserShowCenter(fc)
'Fl_File_ChooserShow(fc)
while Fl_File_ChooserShown(fc) andalso Fl_Wait()=1
wend
var file = Fl_File_ChooserGetValue(fc)
if file then print "pathfile: " & *file
print "done ..."
sleep
Great, Joshy, works here on linux 64. ;-)D.J.Peters wrote:Only tested on windows, try it on your Linux box please.
The dialog should be centered shown on the desktop now.
Code: Select all
#include once "fltk-c.bi"
type Application
public:
declare constructor
declare destructor
' callbacks
declare static sub NewCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub OpenCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub SaveCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub SaveAsCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub PrintCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub QuitCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub UndoCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub CutCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub CopyCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub PasteCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub DeleteCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub ColorCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub FindCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub ReplaceCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub CompileCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub PrefCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub GtkCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub PlasticCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub GleamCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub NoneCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub DokuCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub AboutCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
' fltk widgets
as Fl_Window ptr mainWindow
as Fl_Menu_Bar ptr mainMenu
as Fl_Text_Editor ptr textEditor
as Fl_Text_Buffer ptr textBuffer
' vars
as boolean codeChanged
as string currentFile
as string compilerPath
as string tmpString
end type
' implement all callbacks here
sub Application.NewCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
beep
var app = *cptr(Application ptr,userData)
if app.codeChanged then
if app.currentFile="unnamed.bas" then
app.SaveAsCB(NULL,userData)
else
app.SaveCB(NULL,userData)
end if
end if
app.currentFile="unnamed.bas"
Fl_WindowCopyLabel(app.mainWindow,app.currentFile)
Fl_Text_BufferSetText(app.textBuffer,"")
end sub
sub Application.OpenCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.SaveCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.SaveAsCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.PrintCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.QuitCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.UndoCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.CutCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.CopyCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.PasteCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.DeleteCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.ColorCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.FindCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.ReplaceCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.CompileCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.PrefCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.GtkCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
Fl_SetScheme("gtk+") : Fl_ReDraw()
end sub
sub Application.PlasticCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
Fl_SetScheme("plastic") : Fl_ReDraw()
end sub
sub Application.GleamCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
Fl_SetScheme("gleam") : Fl_ReDraw()
end sub
sub Application.NoneCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
Fl_SetScheme("none")
Fl_Menu_SetTextFont(app.mainMenu,Fl_TIMES)
Fl_Background(143,183,175)
Fl_Foreground(230,250,254)
Fl_ReDraw()
end sub
sub Application.DokuCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.AboutCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
' de and constructor
destructor Application
if codeChanged then
' save file ...
end if
end destructor
constructor Application
#ifdef __FB_WIN32__
compilerPath = "/FreeBASIC/fbc.exe"
#else
compilerPath = "/usr/local/bin/"
#endif
codeChanged = false
currentFile = "unnamed.bas"
' init FLTK-C
Fl_Register_Images()
PlasticCB(NULL,@this)
' create the GUI
mainWindow = Fl_WindowNew(1024,768)
Fl_WindowCopyLabel(mainWindow,currentFile)
mainMenu = Fl_Menu_BarNew(0,0,Fl_WidgetGetW(mainWindow),30)
Fl_Menu_SetTextFont(mainMenu,Fl_TIMES)
textEditor = Fl_Text_EditorNew(10,Fl_WidgetGetH(mainMenu),Fl_WidgetGetW(mainWindow)-20,Fl_WidgetGetH(mainWindow)-Fl_WidgetGetH(mainMenu))
textBuffer = Fl_Text_BufferNew()
Fl_Text_DisplaySetBuffer(textEditor,textBuffer)
Fl_Text_DisplaySetLinenumberWidth(textEditor,40) ' 0 = line numbers off
' create the Menu
Fl_Menu_Add(mainMenu,"File/New" , FL_CTRL+asc("n"), @NewCB,@this)
Fl_Menu_Add(mainMenu,"File/Open..." , FL_CTRL+asc("o"), @OpenCB,@this)
Fl_Menu_Add(mainMenu,"File/Save" , FL_CTRL+asc("s"), @SaveCB,@this)
Fl_Menu_Add(mainMenu,"File/Save &As..." , FL_CTRL+asc("a"), @SaveAsCB,@this)
Fl_Menu_Add(mainMenu,"File/Print" , FL_CTRL+asc("p"), @PrintCB,@this)
Fl_Menu_Add(mainMenu,"File/Quit" , FL_CTRL+asc("q"), @QuitCB,@this)
Fl_Menu_Add(mainMenu,"Edit/Undo" , FL_CTRL+asc("z"), @UndoCB,@this)
Fl_Menu_Add(mainMenu,"Edit/Cut" , FL_CTRL+asc("x"), @CutCB,@this)
Fl_Menu_Add(mainMenu,"Edit/Copy" , FL_CTRL+asc("c"), @CopyCB,@this)
Fl_Menu_Add(mainMenu,"Edit/Paste" , FL_CTRL+asc("v"), @PasteCB,@this)
Fl_Menu_Add(mainMenu,"Edit/Delete" , , @DeleteCB,@this)
Fl_Menu_Add(mainMenu,"Edit/Search" , , @AboutCB,@this)
Fl_Menu_Add(mainMenu,"Edit/Colors" , , @ColorCB,@this)
Fl_Menu_Add(mainMenu,"Search/Find..." , , @FindCB,@this)
Fl_Menu_Add(mainMenu,"Search/Replace..." , , @ReplaceCB,@this)
Fl_Menu_Add(mainMenu,"Search/Extended" , , @AboutCB,@this)
Fl_Menu_Add(mainMenu,"Compile/Compile" , , @CompileCB,@this)
Fl_Menu_Add(mainMenu,"Compile/Preferences", , @PrefCB,@this)
Fl_Menu_Add(mainMenu,"View/Gtk+" , , @GtkCB,@this)
Fl_Menu_Add(mainMenu,"View/Plastic" , , @PlasticCB,@this)
Fl_Menu_Add(mainMenu,"View/Gleam" , , @GleamCB,@this)
Fl_Menu_Add(mainMenu,"View/None" , , @NoneCB,@this)
Fl_Menu_Add(mainMenu,"Help/Documentation" , , @DokuCB,@this)
Fl_Menu_Add(mainMenu,"Help/About" , , @AboutCB,@this)
Fl_GroupSetResizable(mainWindow,TextEditor)
Fl_WindowShow(mainWindow)
Fl_Run()
end constructor
'
' main
'
dim as Application ide
That may become handy one day.D.J.Peters wrote: NOTE: callbacks are simple subs so not only fltk-c can call this methods you are free to call this sub's also.
Code: Select all
#include once "fltk-c.bi"
#ifdef __FB_WIN32__
var pattern="fbc*.exe"
var defaultpath="\FreeBASIC\"
#else
var shared pattern = @"fbc"
var shared defaultpath = @"/usr/local/bin/"
var shared filename = @"FastLighter.bas"
var shared filepath = @"/home/fujitsu/Projekte/"
#endif
dim shared as Fl_Text_Buffer ptr buf
buf = Fl_Text_BufferNew()
type Application
public:
declare constructor
declare destructor
' callbacks
declare static sub NewCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub OpenCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub SaveCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub SaveAsCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub PrintCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub QuitCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub UndoCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub CutCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub CopyCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub PasteCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub DeleteCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub ColorCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub FindCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub ReplaceCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub CompileCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub PrefCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub GtkCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub PlasticCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub GleamCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub NoneCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub DokuCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
declare static sub AboutCB cdecl (byval self as FL_Widget ptr, byval userData as any ptr)
' fltk widgets
as Fl_Window ptr mainWindow
as Fl_Menu_Bar ptr mainMenu
as Fl_Text_Editor ptr textEditor
as Fl_Text_Buffer ptr textBuffer
' vars
as boolean codeChanged
as string currentFile
as string compilerPath
as string tmpString
end type
sub Fl_File_ChooserShowCenter(byval fc as FL_File_Chooser ptr)
var win = cptr(FL_Double_Window ptr,Fl_WidgetWindow(Fl_File_ChooserNewButton(fc)))
var scrW=Fl_GetW() ' get screen width,height
var scrH=Fl_GetH()
var winW=Fl_WidgetGetW(win) ' get current win width,height
var winH=Fl_WidgetGetH(win)
var newX = scrW/2-winW/2 ' calculate new center position
var newY = scrH/2-winH/2
Fl_WidgetPosition(win,newX,newY)
Fl_Double_WindowShow(win)
Fl_File_ChooserRescanKeepFilename(fc)
end sub
' implement all callbacks here
sub Application.NewCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
beep
var app = *cptr(Application ptr,userData)
if app.codeChanged then
if app.currentFile="unnamed.bas" then
app.SaveAsCB(NULL,userData)
else
app.SaveCB(NULL,userData)
end if
end if
app.currentFile="unnamed.bas"
Fl_WindowCopyLabel(app.mainWindow,app.currentFile)
Fl_Text_BufferSetText(app.textBuffer,"")
end sub
sub Application.OpenCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
flFileChooserOkLabel("Open")
var fc = Fl_File_ChooserNew(filepath, filename, FL_FILECHOOSER_SINGLE, "Select file")
Fl_File_ChooserSetPreview(fc,0)
Fl_File_ChooserShowCenter(fc)
while Fl_File_ChooserShown(fc) andalso Fl_Wait()=1
wend
var file = Fl_File_ChooserGetValue(fc)
if file then print "filename: " & *file
Fl_Text_BufferLoadFile(buf,file)
var app = *cptr(Application ptr,userData)
end sub
sub Application.SaveCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.SaveAsCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.PrintCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.QuitCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.UndoCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.CutCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.CopyCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.PasteCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.DeleteCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.ColorCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.FindCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.ReplaceCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.CompileCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.PrefCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.GtkCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
Fl_SetScheme("gtk+") : Fl_ReDraw()
end sub
sub Application.PlasticCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
Fl_SetScheme("plastic") : Fl_ReDraw()
end sub
sub Application.GleamCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
Fl_SetScheme("gleam") : Fl_ReDraw()
end sub
sub Application.NoneCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
Fl_SetScheme("none") : Fl_Background(143,183,175) : Fl_Foreground(230,250,254) : Fl_ReDraw()
end sub
sub Application.DokuCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
sub Application.AboutCB cdecl (byval self as Fl_Widget ptr, byval userData as any ptr)
var app = *cptr(Application ptr,userData)
end sub
' de and constructor
destructor Application
if codeChanged then
' save file ...
end if
end destructor
constructor Application
#ifdef __FB_WIN32__
compilerPath = "/FreeBASIC/fbc.exe"
#else
compilerPath = "/usr/local/bin/"
#endif
codeChanged = false
currentFile = "unnamed.bas"
' init FLTK-C
Fl_Register_Images()
PlasticCB(NULL,@this)
' create the GUI
mainWindow = Fl_WindowNew(1024,768)
Fl_WindowCopyLabel(mainWindow,currentFile)
mainMenu = Fl_Menu_BarNew(0,0,Fl_WidgetGetW(mainWindow),30)
Fl_Menu_SetTextFont(mainMenu,Fl_TIMES)
textEditor = Fl_Text_EditorNew(10,Fl_WidgetGetH(mainMenu),Fl_WidgetGetW(mainWindow)-20,Fl_WidgetGetH(mainWindow)-Fl_WidgetGetH(mainMenu))
textBuffer = Fl_Text_BufferNew()
Fl_Text_DisplaySetBuffer(textEditor,textBuffer)
Fl_Text_DisplaySetLinenumberWidth(textEditor,40) ' 0 = line numbers off
' create the Menu
Fl_Menu_Add(mainMenu,"File/New" , FL_CTRL+asc("n"), @NewCB,@this)
Fl_Menu_Add(mainMenu,"File/Open..." , FL_CTRL+asc("o"), @OpenCB,@this)
Fl_Menu_Add(mainMenu,"File/Save" , FL_CTRL+asc("s"), @SaveCB,@this)
Fl_Menu_Add(mainMenu,"File/Save &As..." , FL_CTRL+asc("a"), @SaveAsCB,@this)
Fl_Menu_Add(mainMenu,"File/Print" , FL_CTRL+asc("p"), @PrintCB,@this)
Fl_Menu_Add(mainMenu,"File/Quit" , FL_CTRL+asc("q"), @QuitCB,@this)
Fl_Menu_Add(mainMenu,"Edit/Undo" , FL_CTRL+asc("z"), @UndoCB,@this)
Fl_Menu_Add(mainMenu,"Edit/Cut" , FL_CTRL+asc("x"), @CutCB,@this)
Fl_Menu_Add(mainMenu,"Edit/Copy" , FL_CTRL+asc("c"), @CopyCB,@this)
Fl_Menu_Add(mainMenu,"Edit/Paste" , FL_CTRL+asc("v"), @PasteCB,@this)
Fl_Menu_Add(mainMenu,"Edit/Delete" , , @DeleteCB,@this)
Fl_Menu_Add(mainMenu,"Edit/Search" , , @AboutCB,@this)
Fl_Menu_Add(mainMenu,"Edit/Colors" , , @ColorCB,@this)
Fl_Menu_Add(mainMenu,"Search/Find..." , , @FindCB,@this)
Fl_Menu_Add(mainMenu,"Search/Replace..." , , @ReplaceCB,@this)
Fl_Menu_Add(mainMenu,"Search/Extended" , , @AboutCB,@this)
Fl_Menu_Add(mainMenu,"Compile/Compile" , , @CompileCB,@this)
Fl_Menu_Add(mainMenu,"Compile/Preferences", , @PrefCB,@this)
Fl_Menu_Add(mainMenu,"View/Gtk+" , , @GtkCB,@this)
Fl_Menu_Add(mainMenu,"View/Plastic" , , @PlasticCB,@this)
Fl_Menu_Add(mainMenu,"View/Gleam" , , @GleamCB,@this)
Fl_Menu_Add(mainMenu,"View/None" , , @NoneCB,@this)
Fl_Menu_Add(mainMenu,"Help/Documentation" , , @DokuCB,@this)
Fl_Menu_Add(mainMenu,"Help/About" , , @AboutCB,@this)
Fl_GroupSetResizable(mainWindow,TextEditor)
Fl_WindowShow(mainWindow)
Fl_Run()
end constructor
'
' main
'
dim as Application ide
Since global variables only lead to "spaghetti" code, they are generally discuraged.Knatterton wrote:But there is still a problem to access gobal variables from within a callback. I suppose you will use "userdata" for this?
Code: Select all
#include once "fltk-c.bi"
' test of:
' Fl_Window http://www.fltk.org/doc-1.3/classFl__Window.html
' Fl_Button http://www.fltk.org/doc-1.3/classFl__Button.html
sub ButtonCB cdecl (byval button as FL_WIDGET ptr)
static var Pushed=1
Fl_WidgetCopyLabel button,"push me:" & chr(10) & Pushed & " times pushed"
Pushed+=1
end sub
'
' main
'
var Win = Fl_WindowNew(320,200,"FL_BUTTON")
var Btn = Fl_ButtonNew(10,10,320-20,200-20,"push me:")
Fl_WidgetSetCallback0 Btn,@ButtonCB
Fl_WindowShow Win
Fl_Run
That isn't a problem.Knatterton wrote:My own style i would call goal-oriented.
This however, is a problem, because this approach may leadt to:Knatterton wrote:Means, what ever seems to be best and fastest to reach the goal.
Ok, but i personnally am not coding so much. For me it is mostly copying a few lines from another program. It's not that i need program parts over and over again.MrSwiss wrote:[
recoding the same thing many times over (no reusability of code).
(This is especially applicable to: shared variables!)
What I write about, has absolutely nothing to do with OOP.Knatterton wrote:Some people seem to believe, people are coming here to learn and practice programming in oop.