Just another wish list

Working on new editor enhancements?
User avatar
Flype
Addict
Addict
Posts: 1542
Joined: Tue Jul 22, 2003 5:02 pm
Location: In a long distant galaxy

Just another wish list

Post by Flype »

Hello PB team,

I've some wishes for the future of the official IDE :

1/
Hexa Viewer : Add some search features.

2/
Constants explorer : Add the possibility to find a constant by its value (reverse mode).

3/
Record / Play macros for repetitive modifications.

4/
A new DIFF feature like this one (PSPAD) :
Image

5/
Right Panel : Add a monitor for counting variables/arrays/linkedlist/functions occurences like this one (PSPAD) :
Image

6/
Editor : A fullscreen view (no toolbar, no panel, just the editor and the menu) to increase visibility in some case.

7/
Code Templates: Add the ability to share the 'template file' between more than one computer. I mean that if i add a template on my session/computer, other people (LAN connected) in my company can also access them for better productivity.

8/
Like the existing ASCII table, but an UNICODE one.

9/
Color Picker : Add an option for pasting RRGGBBAA color format (Alpha)

10/
Compiler : Add an option for auto-declaring functions.

11/
Menu > File > New : A project wizard like the one in DevC++ in which the user can specify the type of project : Console/Application/DLL/Wrapper. Thus, the editor can open an appropriate template for a painless and standard start.

Pfffff...
Hope you'll think these ideas are really usefull and not too hard to implement. :roll:

And a great thank you for all the hard work you did on the IDE.
No programming language is perfect. There is not even a single best language.
There are only languages well suited or perhaps poorly suited for particular purposes. Herbert Mayer
User avatar
langinagel
Enthusiast
Enthusiast
Posts: 131
Joined: Fri Jan 28, 2005 11:53 pm
Location: Germany
Contact:

Re: Just another wish list

Post by langinagel »

At least 1+ for a diff function.
https://www.doerpsoft.org

Boost. Work. Efficiency.
User avatar
majikeyric
Enthusiast
Enthusiast
Posts: 179
Joined: Mon Oct 21, 2013 5:21 pm
Location: France
Contact:

Re: Just another wish list

Post by majikeyric »

11 years later ?!!! OMG !!!!! :)
User avatar
Josh
Addict
Addict
Posts: 1183
Joined: Sat Feb 13, 2010 3:45 pm

Re: Just another wish list

Post by Josh »

majikeyric wrote:11 years later ?!!! OMG !!!!! :)
:mrgreen: :mrgreen: :mrgreen:
langinagel wrote:At least 1+ for a diff function.
Tools > Compare Files/Folders :lol:
sorry for my bad english
User avatar
Zebuddi123
Enthusiast
Enthusiast
Posts: 794
Joined: Wed Feb 01, 2012 3:30 pm
Location: Nottinghamshire UK
Contact:

Re: Just another wish list

Post by Zebuddi123 »

Hi Well here`s a constant viewer with reverse look up via number also double rmb click to search the net at the current constant. Constant.txt file is for pb v5.60.

Does that make two lol :). constant.txt list to large. https://www.dropbox.com/s/mgwhp1s1qng59 ... s.txt?dl=0

zebuddi.

Image

Code: Select all

EnableExplicit


CompilerIf #PB_Compiler_Thread = 0
	MessageRequester("Compiler Options", "Please CheckMark (Create Thread Safe) in the Compiler Options")
	End
CompilerEndIf


;{- Enumerations / DataSections
;{ Windows
Enumeration
	#Window_Main
EndEnumeration
;}
;{ Gadgets
Enumeration
	#ListIcon_procs
	#String_Search
	#StatusBar_Window
	#ListIcon
	#checkbox
EndEnumeration
;}
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Structure nslist
	name.s
	value.s
	List procs.s()
EndStructure

Structure condata
	constant.s
	List procs.s()
EndStructure

Global NewList fileString.s()
Global NewList condata.condata()

Global NewList  nslist.nslist() ; track from  file on disk NSList.txt
Global title$ = "Pure Constant Finder"

Procedure Do_AssoProcData(List fileString.s(), List condata.condata())
	Protected a$ 
	If ReadFile(0, "constants.txt")
		While Not Eof(0)
			a$ = ReadString(0 ,#PB_Ascii)
			If Left(a$, 10) = "Migration_"
				a$ = "Possibly Depricated or Changed - See Current PureBasic Manual For Latest Info"
			EndIf	
			AddElement(fileString())
			fileString() = a$
		Wend	
		CloseFile(0)
	EndIf
	
	With condata()
		ForEach fileString()
			If Left(fileString(), 4) = "#PB_"
				AddElement(condata())
				\constant = fileString()
			Else
				AddElement(condata())
				AddElement(\procs())
				\procs() = fileString()
			EndIf
		Next
	EndWith 	
EndProcedure

Procedure.s _FormatNumber(number.i)
	Protected s.s=Str(number), i
	i=Len(s)
	While i>3
		i-3
		s=InsertString(s,",",i+1)
	Wend
	ProcedureReturn s
EndProcedure

Procedure  do_list() ;  parse file names.txt and fill nslist structured linkedlist
	Protected a$, p
	
	If ReadFile(0,"C:\Users\Dufus\AppData\Roaming\PureBasic\tools\Constants.txt")
;  		MessageRequester("",GetCurrentDirectory()+"Constants.txt")
		With nslist()
			While Eof(0)=0
				a$=ReadString(0,ReadStringFormat(0))
				p=FindString(a$," = ")
				AddElement(nslist())
				\name=Left(a$,p-1)
				\value=Right(a$,(Len(a$)-(p+2)))
			Wend
		EndWith
		CloseFile(0)
	EndIf
EndProcedure

Procedure OpenWindow_Main()
	If OpenWindow(#Window_Main, 450, 32, 497, 573, title$, #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
		If CreateStatusBar(#StatusBar_Window, WindowID(#Window_Main))
			AddStatusBarField(350)
			AddStatusBarField(147)
		EndIf

		ListIconGadget(#ListIcon, 0, 0, 497, 325, "Nb", 60, #PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
		AddGadgetColumn(#ListIcon,2,"Constant",237)
		AddGadgetColumn(#ListIcon,3,"value",230)
		GadgetToolTip(#ListIcon,"Double Right Click For Web Search")
		SetGadgetColor(#ListIcon,  #PB_Gadget_LineColor, $D3D3D3 )
		ListIconGadget(#ListIcon_procs, 0, 346, 497, 180, "Nb",60, #PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
		AddGadgetColumn(#ListIcon_procs,1,"PB Associated Procedures",437)
		GadgetToolTip(#ListIcon_procs,"Double left Click For Web Search")
		SetGadgetColor(#ListIcon_procs,  #PB_Gadget_LineColor, $D3D3D3 )
		CheckBoxGadget(#checkbox, 420, 326, 70, 20,"#PB Only")
		StringGadget(#String_Search, 0, 525, 497, 25, "")
		SetActiveGadget(#String_Search)
		SetGadgetColor(#ListIcon,#PB_Gadget_BackColor,$80FFFF)
		SetGadgetColor(#ListIcon_procs,#PB_Gadget_BackColor,$80FFFF)
		SetGadgetColor(#String_Search,#PB_Gadget_BackColor, $1FF6F5)
		StickyWindow(#Window_Main , #True)
	EndIf
EndProcedure

Procedure.b IsNumeric(string.s)
	If Val(String) > 0
		ProcedureReturn #True
	Else
		ProcedureReturn #False
	EndIf
EndProcedure

Procedure check(aaa) ; threaded auto update routine 
	Protected check$, match_counter,ag, initgadget=0, oldcheck$, st.i, checkbox_state.b
	checkbox_state = GetGadgetState(#checkbox)
	Debug "in"
	Repeat
		oldcheck$=GetGadgetText(#String_Search)
		Delay(575)
		If oldcheck$<>GetGadgetText(#String_Search)  Or GetGadgetState(#checkbox) <> checkbox_state ;If changed
			checkbox_state = GetGadgetState(#checkbox)
			ClearGadgetItems(#ListIcon_procs)
			ClearGadgetItems(#ListIcon)
			check$=GetGadgetText(#String_Search)
			If check$>""
				ForEach nslist()
					If FindString(LCase(nslist()\name),LCase(check$)) Or FindString(LCase(nslist()\value),LCase(check$)) ; match in either name or value definition in the linkedlist
						
						If IsNumeric(check$)
							If Val(check$) = Val(nslist()\value)
								If GetGadgetState(#checkbox) = #PB_Checkbox_Checked 
									If Left(nslist()\name, 4) = "#PB_" 
										match_counter+1 
										AddGadgetItem(#ListIcon,-1, Str(match_counter) + ".  "+Chr(10) + nslist()\name +Chr(10)+nslist()\value)
									EndIf
								Else
									match_counter+1 
									AddGadgetItem(#ListIcon,-1, Str(match_counter) + ".  "+Chr(10) + nslist()\name +Chr(10)+nslist()\value)
								EndIf
							EndIf
						Else
							If GetGadgetState(#checkbox) = #PB_Checkbox_Checked 
								If Left(nslist()\name, 4) = "#PB_" 
									match_counter+1 
									AddGadgetItem(#ListIcon,-1, Str(match_counter) + ".  "+Chr(10) + nslist()\name +Chr(10)+nslist()\value)
								EndIf
							Else
								match_counter+1 
								AddGadgetItem(#ListIcon,-1, Str(match_counter) + ".  "+Chr(10) + nslist()\name +Chr(10)+nslist()\value)
							EndIf
						EndIf
						
						If GetGadgetText(#String_Search)<>check$ ; check if user altered search term if true abandon current search
							Break
						EndIf
					EndIf
				Next
				
				If match_counter=0
					AddGadgetItem(#ListIcon,-1,Chr(10)+"No Match`s Found")
				EndIf
				StatusBarText(#StatusBar_Window,0,"Found "+_FormatNumber(match_counter)+" Matches")
			EndIf
			If GetGadgetText(#String_Search)="" ; search term is empty clear listview
				match_counter=0
				ClearGadgetItems(#ListIcon)
				StatusBarText(#StatusBar_Window,0,"No Search Term")
			EndIf
			
		EndIf
		st=0
		match_counter=0
		SetActiveGadget(#String_Search)
	ForEver
EndProcedure

Procedure showprocs()
	Protected listpos, selectedtext.s, counter = 0
	ClearGadgetItems(#ListIcon_procs)
	listpos = GetGadgetState(#ListIcon)
	selectedtext = GetGadgetItemText(#ListIcon, listpos, 1)
	With condata()
		ForEach condata()
			If \constant = selectedtext
				ForEach \procs()
					counter + 1
					AddGadgetItem(#ListIcon_procs, -1, Str(counter) + Chr(10) + \procs()+"()")
					Debug "at: " + Str(ListIndex(condata())) + " " + \procs()
				Next 
			EndIf
		Next
	EndWith
EndProcedure

Procedure showbrowser()
	Protected selectedtext.s
	selectedtext = GetGadgetItemText(#ListIcon, GetGadgetState(#ListIcon), 1)
	If Left(selectedtext, 4) = "#PB_"
		RunProgram("https://www.google.co.uk/search?q=site:http://www.purebasic.fr/english+&gws_rd=cr,ssl&ei=pGIxVtKbJMz-aZHev4AO#q=%23"+selectedtext)
	Else
		RunProgram("http://social.msdn.microsoft.com/search/en-us/windows/desktop?query="+RemoveString(selectedtext, Chr(35))+Chr(38)+"Function Refinement=181")
	EndIf
EndProcedure

Procedure showassociatedprocs()
	Protected selectedtext.s = GetGadgetItemText(#ListIcon_procs, GetGadgetState(#ListIcon_procs), 1)
	RunProgram("https://www.google.co.uk/search?q=site:http://www.purebasic.fr/english+&gws_rd=cr,ssl&ei=pGIxVtKbJMz-aZHev4AO#q=%23"+Left(selectedtext, Len(selectedtext)-1))
EndProcedure



do_list()
Do_AssoProcData(fileString(), condata())
OpenWindow_Main()

SetWindowTitle(#Window_Main,title$ + "                 " + _FormatNumber(ListSize(nslist()))+" Constants Found ")

Define selectedtext.s, listpos, s$

BindGadgetEvent(#ListIcon, @showprocs(),   #PB_EventType_LeftClick)
BindGadgetEvent(#ListIcon, @showbrowser(), #PB_EventType_RightDoubleClick)
BindGadgetEvent(#ListIcon_procs, @showassociatedprocs(), #PB_EventType_RightDoubleClick )

Define mythread=CreateThread(@check(),0)
;{- Event loop
Repeat
	Event = WaitWindowEvent()
	Select Event
		Case #PB_Event_CloseWindow
			EventWindow = EventWindow()
			If EventWindow = #Window_Main
				FreeList(nslist())
				CloseWindow(#Window_Main)
				Break
			EndIf
	EndSelect
ForEver
;
;}
malleo, caput, bang. Ego, comprehendunt in tempore
ozzie
Enthusiast
Enthusiast
Posts: 429
Joined: Sun Apr 06, 2008 12:54 pm
Location: Brisbane, Qld, Australia
Contact:

Re: Just another wish list

Post by ozzie »

+1 for "Compiler : Add an option for auto-declaring functions".

Also a request of my own: in 'Find in Files' add a 'copy to clipboard' button. Often I have many results from 'Find in Files' and it would be useful to copy the results into a text editor so I can search within those results.
Post Reply