drWinFBE_Tools

Windows specific questions.
UEZ
Posts: 623
Joined: May 05, 2017 19:59
Location: Germany

Re: drWinFBE_Tools

Postby UEZ » May 11, 2020 22:09

deltarho[1859] wrote:@UEZ

Ah, I am with you now.

The cPaths window, on Windows 10, is not wide enough to accommodate a title and a minimize button and so on.

I have two monitors - I could be coding on one monitor and checking out an API at MSDN on another.

Anyway, why don't you just close cPaths? You can always open it again - there is no information to lose and it opens quickly.

I could add a function to toggle between topmost and not topmost - would that be any good?

Why do you have cPaths positioned so high? It gets in the way of the Find window.

Well, as I said, the best option would be to have it integrated into WinFBE. If not then the minimize icon in the windows title would be enough to minimize the window when not needed as the fastest solution. Optional a toggle option for topmost attribute would be nice, too.
The position of Cpaths was just to take a screenshot.
Maybe you can set the Cpaths window as a child of WinFBE GUI if it makes sense...
deltarho[1859]
Posts: 2611
Joined: Jan 02, 2017 0:34
Location: UK

Re: drWinFBE_Tools

Postby deltarho[1859] » May 11, 2020 22:26

Richt click on cPaths' title bar - there is a 'minimise' there - I had forgotten that.
deltarho[1859]
Posts: 2611
Joined: Jan 02, 2017 0:34
Location: UK

Re: drWinFBE_Tools

Postby deltarho[1859] » May 18, 2020 12:45

@UEZ

I wasn't going to do this but changed my mind.

@PaulSquires

How does this look on your 4K monitor? I am a bit concerned about the toggle bitmap.

The following actually unzips to SetCompilerPathsII.exe. Make a copy of your existing exe.

Vertical 'pin' => TopMost, Horizontal 'pin' => Not TopMost.

ToggleSCPII
UEZ
Posts: 623
Joined: May 05, 2017 19:59
Location: Germany

Re: drWinFBE_Tools

Postby UEZ » May 18, 2020 18:31

@Δρ: Thanks for you update.

What about the idea to create the GUI as a child GUI in WinFBE? The GUI will stay on top of WinFBE GUI and will minimize automatically when WinFBE minimizes.

Example:

Code: Select all

'Coded by UEZ
#Include "windows.bi"
#include "win\tlhelp32.bi"
#Include "win\commctrl.bi"

Declare Function WndProc(hWnd As HWND,uMsg As UINT,wParam As WPARAM,lParam As LPARAM) As Integer

Function _WinAPI_GetParentProcess() As Integer
   Dim As DWORD pid = GetCurrentProcessId(), pid_parent = 0
   Dim As HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
   Dim As PROCESSENTRY32 tPROCESSENTRY32
   tPROCESSENTRY32.dwSize = Sizeof(tPROCESSENTRY32)
   Process32First(hSnapshot, @tPROCESSENTRY32)
   While TRUE
      If tPROCESSENTRY32.th32ProcessID = pid Then
         pid_parent = tPROCESSENTRY32.th32ParentProcessID
         Exit While
      End If
      Process32Next(hSnapshot, @tPROCESSENTRY32)
   Wend
   CloseHandle(hSnapshot)
   Return pid_parent
End Function

Sub _WinAPI_GetProcessThreads(pid As DWORD, aThreads() As Integer)
   Dim As HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0)
   Dim As THREADENTRY32 tTHREADENTRY32
   tTHREADENTRY32.dwSize = Sizeof(tTHREADENTRY32)
   Thread32First(hSnapshot,  @tTHREADENTRY32)
   Dim As Ushort i = 1
   While TRUE
      If pid = tTHREADENTRY32.th32OwnerProcessID Then
         aThreads(i) = tTHREADENTRY32.th32ThreadID
         i += 1
      End If
      If Thread32Next(hSnapshot, @tTHREADENTRY32) = 0 Then Exit While
   Wend
   CloseHandle(hSnapshot)
   aThreads(0) = i - 1
End Sub

Function __WinAPI_EnumWindowsCallback(hWnd As HWND, lParam As LPARAM) As BOOL
   Dim as ZString * 4096 buffer
   GetClassName(hWnd, @buffer, 4096)
   If IsWindowVisible(hWnd) And buffer = "WinFBE_Class" Then
      Dim As Integer Ptr h = Cast(Integer Ptr, lParam)
      h[0] = Cast(Integer, hWnd)
   End If
   Return TRUE
End Function

Function _WinAPI_GetParentHWND(pid As DWORD) As HWND
   Dim As Integer aThreads(1000)
   _WinAPI_GetProcessThreads(pid, aThreads())
   Dim As HWND hWnd_Parent = 0
   For i As Ushort = 1 To aThreads(0)
      EnumThreadWindows(aThreads(i), Cast(WNDENUMPROC, @__WinAPI_EnumWindowsCallback), Cast(LPARAM, @hWnd_Parent))
   Next   
   Return hWnd_Parent   
End Function

'Function _WinAPI_IsProcessRunning(pid As DWORD) As BOOL
'   Dim As HANDLE process = OpenProcess(SYNCHRONIZE, FALSE, pid)
'    Dim As DWORD ret = WaitForSingleObject(process, 0)
'    CloseHandle(process)
'    Return ret = WAIT_TIMEOUT
'End Function

Function _WinAPI_IsProcessRunning(pid As DWORD) As BOOL
   Dim As Bool bExists = False
   Dim As PROCESSENTRY32 tPROCESSENTRY32
   tPROCESSENTRY32.dwSize = Sizeof(tPROCESSENTRY32)
   Dim As HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
   Process32First(hSnapshot, @tPROCESSENTRY32)
   While Process32Next(hSnapshot, @tPROCESSENTRY32)
      If tPROCESSENTRY32.th32ProcessID = pid Then
         bExists = True
         Exit While
      End If
   Wend
   CloseHandle(hSnapshot)
   Return bExists
End Function

Dim wc As WNDCLASSEX
Dim msg As MSG
Dim hHWND As HWND

Dim As String sTitle = "Cpath"
Dim Shared As ULong iW, iH
iW = 250
iH = 100

Dim Shared As DWORD parent_pid
parent_pid = _WinAPI_GetParentProcess()
Dim As HWND hParentHWND
hParentHWND = _WinAPI_GetParentHWND(parent_pid)
If hParentHWND = 0 Then End 0

With wc
   .style         = CS_HREDRAW Or CS_VREDRAW
   .lpfnWndProc   = @WndProc
   .cbClsExtra    = NULL
   .cbWndExtra    = NULL
   .hInstance     = GetModuleHandle(NULL)
   .hIcon         = LoadIcon(NULL, IDI_APPLICATION)
   .hCursor       = LoadCursor(NULL, IDC_ARROW)
   .hbrBackground = GetStockObject(WHITE_BRUSH)
   .lpszMenuName  = Null
   .lpszClassName = StrPtr("FB GUI")
   .cbSize         = SizeOf(WNDCLASSEX)
End With
 
RegisterClassEx(@wc)

Dim As RECT tPos
GetWindowRect(hParentHWND, @tPos)


hHWND = CreateWindowEx(WS_EX_TOOLWINDOW Or WS_EX_COMPOSITED, wc.lpszClassName, sTitle, _
                       WS_OVERLAPPEDWINDOW Or WS_VISIBLE , _
                       tPos.right - iW - 100, tPos.top + 50, _
                       iW, iH, _
                       hParentHWND, NULL, wc.hInstance, NULL)

While GetMessage(@msg, 0, 0, 0)
   TranslateMessage(@msg)
   DispatchMessage(@msg)
Wend


Function WndProc(hWnd As HWND,uMsg As UINT,wParam As WPARAM,lParam As LPARAM) As Integer
   Select Case uMsg
      Case WM_CLOSE
         PostQuitMessage(0)
      Case WM_CREATE
        SetTimer(hWnd, 1, 250, null )
      Case WM_TIMER
        If _WinAPI_IsProcessRunning(parent_pid) = 0 Then ' WinFBE is not running
         KillTimer(hWnd, 1)
         SendMessage(hWnd, WM_CLOSE, 0, 0)
        End If
      Case Else
         Return DefWindowProc(hWnd, uMsg, wParam, lParam)
   End Select
End Function


It looks like this here:
Image

I added the compiled test code as a tool within WinFBE and it starts when WinFBE runs.
Last edited by UEZ on May 18, 2020 20:04, edited 1 time in total.
deltarho[1859]
Posts: 2611
Joined: Jan 02, 2017 0:34
Location: UK

Re: drWinFBE_Tools

Postby deltarho[1859] » May 18, 2020 19:13

@UEZ

When you first mentioned that approach I thought that you meant for WinFBE to provide a child window which would be for Paul to do. I didn't realize you meant a child window injection.

That looks promising.

Finish it using a cpath.ini. Image
UEZ
Posts: 623
Joined: May 05, 2017 19:59
Location: Germany

Re: drWinFBE_Tools

Postby UEZ » May 18, 2020 19:21

deltarho[1859] wrote:@UEZ

When you first mentioned that approach I thought that you meant for WinFBE to provide a child window which would be for Paul to do. I didn't realize you meant a child window injection.

That looks promising.

Finish it using a cpath.ini. Image


Well, my first idea was that Paul integrates your idea, which is great, to WinFBE directly by adding a 2nd combobox. My idea is only a workaround.

Maybe there is a way to hook to ToolbarWindow32 control from WinFBE and inject a second combobox from outside...

Btw, my exit code doesn't work properly. When WinFBE closes then the additional GUI should exit, too but it works sometimes only. How did you do the check to close Cpath when WinFBE closes?
deltarho[1859]
Posts: 2611
Joined: Jan 02, 2017 0:34
Location: UK

Re: drWinFBE_Tools

Postby deltarho[1859] » May 18, 2020 19:43

UEZ wrote:How did you do the check to close Cpath when WinFBE closes?

Nothing clever - it is blinding simple. Using a timer was my idea and FindWindow was by José - my approach was a bit of a 'dog's dinner'.

Code: Select all

Case WM_CREATE
  SetTimer( hDlg, IDC_Timer, 250, null )
 
Case WM_TIMER
  If FindWindowW("WinFBE_Class", NULL) = NULL THEN ' WinFBE is not running
    KillTimer hDlg, IDC_Timer
    SendMessage(hDlg, WM_CLOSE, 0, 0)
    Exit Function
  End If

Pooling every 250ms gives a closure between almost immediately and 250ms with a statistical expectation of 125ms. My last update uses 100ms with a statistical expectation of 50ms - I was not aware of a faster pooling.
UEZ
Posts: 623
Joined: May 05, 2017 19:59
Location: Germany

Re: drWinFBE_Tools

Postby UEZ » May 18, 2020 20:03

deltarho[1859] wrote:
UEZ wrote:How did you do the check to close Cpath when WinFBE closes?

Nothing clever - it is blinding simple. Using a timer was my idea and FindWindow was by José - my approach was a bit of a 'dog's dinner'.

Code: Select all

Case WM_CREATE
  SetTimer( hDlg, IDC_Timer, 250, null )
 
Case WM_TIMER
  If FindWindowW("WinFBE_Class", NULL) = NULL THEN ' WinFBE is not running
    KillTimer hDlg, IDC_Timer
    SendMessage(hDlg, WM_CLOSE, 0, 0)
    Exit Function
  End If

Pooling every 250ms gives a closure between almost immediately and 250ms with a statistical expectation of 125ms. My last update uses 100ms with a statistical expectation of 50ms - I was not aware of a faster pooling.


Thanks. I thought too simple... ^^
deltarho[1859]
Posts: 2611
Joined: Jan 02, 2017 0:34
Location: UK

Re: drWinFBE_Tools

Postby deltarho[1859] » May 18, 2020 20:33

@UEZ

I agree with your idea of adding a 2nd combobox by Paul. However, he is currently concerned with fixing editor issues and further developing the designer. He may well take my view that few want more than one tool chain and Paul Doe, perhaps others, have problems with any later than gcc 5.2 - although I don't.

I thought that I was 'over the top' with my collection of tool chains but I see that you have gcc 10 and 11. I am sure that some members think us 'barking mad' but I think they are missing out - 8.3 is a 'cracker'. 8.3 and 9.2 are at Paul's GitHub pages but have not been mentioned since WinFBE V 1.9.4, and he is no rush to push them again.

A combobox with user switches would also be good. I would like to see both my SetCompiler* made redundant - maybe one day.
PaulSquires
Posts: 882
Joined: Jul 14, 2005 23:41

Re: drWinFBE_Tools

Postby PaulSquires » May 18, 2020 21:00

deltarho[1859] wrote:@PaulSquires
How does this look on your 4K monitor? I am a bit concerned about the toggle bitmap.


@deltarho[1859]
I have attached a screen shot. As you can see, the bitmap does not scale well and the background is not transparent. You might want to take Jose's advice and use his CXpButton class button with a transparent PNG image.

https://www.planetsquires.com/cpaths.jpg
deltarho[1859]
Posts: 2611
Joined: Jan 02, 2017 0:34
Location: UK

Re: drWinFBE_Tools

Postby deltarho[1859] » May 18, 2020 21:44

Paul wrote:, the bitmap does not scale well and the background is not transparent.

I figured as much.

It is probably a good idea to get into CXpButton in any event but not for the sake of a single button especially since I did not really buy into it's need. If another application opened on top of WinFBE and my SetCompiler* got in the way I would simply close them - it is the fastest remedy.

So, an interesting exercise but I shall not be pursuing the TopMost toggle any further. You may like to to put it into a bucket of water - it was designed to self-destruct in 24 hours - it needed further work as I had not looked at the larger forms via the 'L' filename appending. Image
UEZ
Posts: 623
Joined: May 05, 2017 19:59
Location: Germany

Re: drWinFBE_Tools

Postby UEZ » May 19, 2020 12:40

I was able to inject a combobox to the ToolbarWindow32 control. :-)

Image

Here the code I used so far:

Code: Select all

'Coded by UEZ
#Include "windows.bi"
#include "win\tlhelp32.bi"
#Include "win\commctrl.bi"
#Include "win\windowsx.bi"

Dim Shared As HWND hToolbar = 0, hCombobox, hParentHWND
Dim Shared As Integer iCtrlID
Const idTimer = -1

Declare Function WndProc(hWnd As HWND,uMsg As UINT,wParam As WPARAM,lParam As LPARAM) As Integer

Function _WinAPI_GetParentProcess() As Integer
   Dim As DWORD pid = GetCurrentProcessId(), pid_parent = 0
   Dim As HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
   Dim As PROCESSENTRY32 tPROCESSENTRY32
   tPROCESSENTRY32.dwSize = Sizeof(tPROCESSENTRY32)
   Process32First(hSnapshot, @tPROCESSENTRY32)
   While TRUE
      If tPROCESSENTRY32.th32ProcessID = pid Then
         pid_parent = tPROCESSENTRY32.th32ParentProcessID
         Exit While
      End If
      Process32Next(hSnapshot, @tPROCESSENTRY32)
   Wend
   CloseHandle(hSnapshot)
   Return pid_parent
End Function

Sub _WinAPI_GetProcessThreads(pid As DWORD, aThreads() As Integer)
   Dim As HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0)
   Dim As THREADENTRY32 tTHREADENTRY32
   tTHREADENTRY32.dwSize = Sizeof(tTHREADENTRY32)
   Thread32First(hSnapshot,  @tTHREADENTRY32)
   Dim As Ushort i = 0
   While TRUE
      If pid = tTHREADENTRY32.th32OwnerProcessID Then
         aThreads(i) = tTHREADENTRY32.th32ThreadID
         i += 1
      End If
      If Thread32Next(hSnapshot, @tTHREADENTRY32) = 0 Then Exit While
   Wend
   CloseHandle(hSnapshot)
   Redim Preserve aThreads(i - 1)
End Sub

Function __WinAPI_EnumWindowsCallback(hWnd As HWND, lParam As LPARAM) As BOOL
   Dim as ZString * 4096 buffer
   GetClassName(hWnd, @buffer, 4096)
   If IsWindowVisible(hWnd) Then 'And buffer = "WinFBE_Class" Then
      Dim As Integer Ptr h = Cast(Integer Ptr, lParam)
      h[0] = Cast(Integer, hWnd)
   End If
   Return TRUE
End Function

Function _WinAPI_GetParentHWND(pid As DWORD) As HWND
   Dim As Integer aThreads()
   Redim aThreads(1000)
   _WinAPI_GetProcessThreads(pid, aThreads())
   Dim As HWND hWnd_Parent = 0
   For i As Ushort = 0 To Ubound(aThreads)
      EnumThreadWindows(aThreads(i), Cast(WNDENUMPROC, @__WinAPI_EnumWindowsCallback), Cast(LPARAM, @hWnd_Parent))
   Next   
   Return hWnd_Parent   
End Function

'Function _WinAPI_ProcessExists(pid As DWORD) As BOOL
'   Dim As HANDLE process = OpenProcess(SYNCHRONIZE, FALSE, pid)
'    Dim As DWORD ret = WaitForSingleObject(process, 0)
'    CloseHandle(process)
'    Return ret = WAIT_TIMEOUT
'End Function

Function _WinAPI_ProcessExists(pid As DWORD) As BOOL
   Dim As Bool bExists = False
   Dim As PROCESSENTRY32 tPROCESSENTRY32
   tPROCESSENTRY32.dwSize = Sizeof(tPROCESSENTRY32)
   Dim As HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
   Process32First(hSnapshot, @tPROCESSENTRY32)
   While Process32Next(hSnapshot, @tPROCESSENTRY32)
      If tPROCESSENTRY32.th32ProcessID = pid Then
         bExists = True
         Exit While
      End If
   Wend
   CloseHandle(hSnapshot)
   Return bExists
End Function


Function __WinAPI_EnumChildProcCallback(hWnd As HWND, lParam As LPARAM) As BOOL
   Dim As ZString * 4096 StrBuffer
   If lParam Then
      GetClassName(hWnd, @StrBuffer, 4096)      
      If StrBuffer = "ToolbarWindow32" Then
         iCtrlID = GetDlgCtrlID(hWnd)
         hToolbar = hWnd
         '? "Class name: " & StrBuffer, "id: " & iCtrlID
      End If
      Return True
   Else
      GetWindowText(hWnd, @StrBuffer, 4096)
      '? "Window text: " & StrBuffer
      EnumChildWindows(hWnd, Cast(WNDENUMPROC, @__WinAPI_EnumChildProcCallback), 1)
   End If
   
End Function

Sub _WinAPI_EnumChildWindws(hWndParent As HWND)
   EnumChildWindows(hWndParent, Cast(WNDENUMPROC, @__WinAPI_EnumChildProcCallback), 0)
End Sub


Dim wc As WNDCLASSEX
Dim msg As MSG
Dim hHWND As HWND

Dim As String sTitle = "Cpath"
Dim Shared As ULong iW, iH
iW = 250
iH = 100

Dim Shared As DWORD parent_pid
parent_pid = _WinAPI_GetParentProcess()

hParentHWND = _WinAPI_GetParentHWND(parent_pid)
_WinAPI_EnumChildWindws(hParentHWND)

If hParentHWND = 0 Or hToolbar = 0 Then End 0

_WinAPI_EnumChildWindws(hParentHWND)

With wc
   .style         = CS_HREDRAW Or CS_VREDRAW
   .lpfnWndProc   = @WndProc
   .cbClsExtra    = NULL
   .cbWndExtra    = NULL
   .hInstance     = GetModuleHandle(NULL)
   .hIcon         = LoadIcon(NULL, IDI_APPLICATION)
   .hCursor       = LoadCursor(NULL, IDC_ARROW)
   .hbrBackground = GetStockObject(WHITE_BRUSH)
   .lpszMenuName  = Null
   .lpszClassName = StrPtr("FB GUI")
   .cbSize         = SizeOf(WNDCLASSEX)
End With
 
RegisterClassEx(@wc)

Dim As RECT tPos
GetWindowRect(hParentHWND, @tPos)
Dim As Integer ComboBoxId = 2000

hHWND = CreateWindowEx(WS_EX_TOOLWINDOW, wc.lpszClassName, sTitle, _
                       WS_OVERLAPPEDWINDOW Or WS_VISIBLE , _
                       tPos.right - iW - 100, tPos.top - 50, _
                       iW, iH, _
                       hParentHWND, Cast(HMENU, Cast(LONG_PTR, ComboBoxId)), wc.hInstance, NULL)
ShowWindow(hHWND, SW_SHOW)

hCombobox = CreateWindowEx(0, WC_COMBOBOX, NULL, _
                WS_VISIBLE Or  WS_CHILD Or  WS_TABSTOP Or  WS_VSCROLL Or WS_CLIPCHILDREN Or  WS_CLIPSIBLINGS Or  CBS_AUTOHSCROLL Or CBS_DROPDOWN, _
                1020, 8, 250, 24, hToolbar, Cast(HMENU, Cast(LONG_PTR, ComboBoxId)), GetModuleHandle(NULL), NULL)

ComboBox_AddString(hCombobox, StrPtr("FreeBASIC-1.08.0-gcc-10.0"))
ComboBox_AddString(hCombobox, StrPtr("FreeBASIC-1.08.0-gcc-11.0"))
SendMessage(hCombobox, CB_SETCURSEL, Cast(WPARAM, 0), 0)

While GetMessage(@msg, 0, 0, 0)
   TranslateMessage(@msg)
   DispatchMessage(@msg)
Wend


Function WndProc(hWnd As HWND,uMsg As UINT,wParam As WPARAM,lParam As LPARAM) As Integer
   Select Case uMsg
      Case WM_CLOSE, WM_DESTROY
         PostQuitMessage(0)
         Return 0
      Case WM_CREATE
         SetTimer(hWnd, 1, 250, Null)
      Case WM_TIMER
         If IsWindow(hParentHWND) = 0 Then ' WinFBE is not running
            KillTimer(hWnd, 1)
            SendMessage(hWnd, WM_CLOSE, 0, 0)
            DestroyWindow(hWnd)
         End If
      Case WM_ERASEBKGND
         RedrawWindow(hCombobox, NULL, NULL, RDW_UPDATENOW)
         Return DefWindowProc(hWnd, uMsg, wParam, lParam)
      Case WM_PAINT
         RedrawWindow(hCombobox, NULL, NULL, RDW_UPDATENOW)
         Return 0
      Case Else
         Return DefWindowProc(hWnd, uMsg, wParam, lParam)
   End Select
End Function


The exit code still doesn't work properly...
PaulSquires
Posts: 882
Joined: Jul 14, 2005 23:41

Re: drWinFBE_Tools

Postby PaulSquires » May 19, 2020 16:46

My quick initial thoughts on this (multiple toolchains).... As was surmised in an earlier post, I don't know how much interest there is for such a thing. I imagine that most people want to simply use FB out of the box as per the official releases. Of course, that's just my initial thoughts and I could be totally wrong. If the ability to easily add additional toolchains existed, then maybe such sentiment to use alternate toolchains would quickly change. Maybe a chicken/egg type of problem.

I have looked at this topic before and, for me, it comes down to how to best incorporate this functionality into the editor without it being too overwhelming for the user - especially a new user.

My thoughts on how to incorporate into the editor gui:

Have the current toolchain display in a panel in the bottom statusbar. Probably in the panel to the right of the file encoding panel. If the user clicks on that panel, then a popup menu will display showing all of the available toolchains (with a checkmark next to the currently selected one) along with an option to "add/edit toolchains" or maybe simply "configure toolchains". This way you could quickly toggle amongst toolchains and then only display a popup configuration dialog should that option be selected (with the benefit of hiding away all the clutter of the add, edit, delete of toolchains until it is specifically needed). The toolchain configuration dialog would also be accessible under the "Options" menu, immediately below the "Build Configurations..." menu option. I am not a fan of an additional combobox on the toolbar. The toolbar is already too wide and users with smaller monitors and displays would not benefit. Likewise, I am not a fan of an additional toolbar within the rebar, hence the reason I am talking about a statusbar panel approach.

What are your thoughts on this type of approach?
UEZ
Posts: 623
Joined: May 05, 2017 19:59
Location: Germany

Re: drWinFBE_Tools

Postby UEZ » May 19, 2020 17:55

For me it makes sense to have a fast access to different toolchains to make some test regarding speed and I like the idea to have this feature integrated into WinFBE. It's a pain in the a$$ to hook to WinFBE to add a combobox or whatever. I stumble from one problem to the next. :-(
PaulSquires wrote:My thoughts on how to incorporate into the editor gui:

If you can add this and we will see. :-) The combobox was just an option not a must have because it doesn't take too much space and it's easy to access without having a clicking orgy thru menus. As a separate child window of WinFBE can also be ok because when I minimize WinFBE it will minimize, too as it is now but without being a child window. That can be done also from external tool as I've posted above.

Off topic: if you can add a highlighter of current word thru the whole code to see where the word is used (maybe I've asked it already). ^^
PaulSquires
Posts: 882
Joined: Jul 14, 2005 23:41

Re: drWinFBE_Tools

Postby PaulSquires » May 20, 2020 3:37

UEZ wrote:Off topic: if you can add a highlighter of current word thru the whole code to see where the word is used (maybe I've asked it already). ^^

No problem. I have now added this feature. It is a feature that is present in editors like Visual Studio Code. As you move from word to word in the editor, matching words in the editor are highlighted. I believe that editor calls it "Occurrences Highlighting" so that is the terminology I used for the new feature.

Return to “Windows”

Who is online

Users browsing this forum: No registered users and 3 guests