Проект Константы
Своего рода записная книжка.
С возможностью добавлять свои заметки и дальнейшее их редактирование.
Включает перечень
констант гаджетов и функций
PureBasic.
Добавлена функция подсветки синтаксиса (не совсем корректно работает).
Комментарии и примеры к
константам добавляем самостоятельно.
Спасибо за оказанную помощь:
Виталию Крячко
Петру Высочанскому
Скачать
архив
Код реализации для версии PB 4.40 :
;-------------------------------------Proekt_Konstanty-------------------------------------------
;
; PureBasic 4.40
;
; (c) 2010 - mirashic
;
;------------------------------------------------------------------------------------------------
UsePNGImageDecoder()
Enumeration
#Window_0
#Window_1
EndEnumeration
Enumeration
#ComboBoxGadget_0
#ListIconGadget_2
#PanelGadget_3
#TextGadget_1
#TextGadget_2
#StringGadget_1
#StringGadget_2
#StringGadget_3
#Save
#New_Entry
#Delete_1
#Agree
#img_0
#img_1
#img_2
#img_3
#Image_3
#Font_Editor_0
#Font_1
#Link
#Inf
EndEnumeration
IncludeFile "SyntaxhighlightingEditorGadget.pbi"
IncludeFile "con_fyn.pb"
CatchImage(#img_1, ?Im1, ?Im1End-?Im1)
CatchImage(#img_2, ?Im2, ?Im2End-?Im2)
Procedure IsMouseOver(wnd) ; Определяем находится ли курсор мышки в пределах данного окна (гаджета)
GetWindowRect_(wnd,re.RECT)
GetCursorPos_(pt.POINT)
ProcedureReturn PtInRect_(@re, pt\x|(pt\y<<32))
EndProcedure
;{-------------------Окно------------------------------------
OpenWindow (#Window_0, 78, 90, 940, 645, "PureConstants", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
;SetWindowColor(#Window_0,RGB(255, 255, 255))
ImageGadget(#img_3, 380, 5, 60, 47, ImageID(#img_1))
ImageGadget(#img_0, 845, 5, 60, 47, ImageID(#img_2))
ComboBoxGadget(#ComboBoxGadget_0, 5, 10, 275, 20)
ButtonGadget(#Delete_1, 340, 610, 130, 20, "Удалить запись")
ButtonGadget(#New_Entry,540, 610, 130, 20, "Новая запись")
ButtonGadget(#Save, 740, 610, 130, 20, "Сохранить изменения")
ListIconGadget(#ListIconGadget_2, 5, 35, 275, 585, "Темы:", 100, #PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
SendMessage_(GadgetID(#ListIconGadget_2), #LVM_SETCOLUMNWIDTH, 0, #LVSCW_AUTOSIZE_USEHEADER)
TextGadget (#TextGadget_1, 290, 56, 60, 15, "Имя темы :")
TextGadget (#TextGadget_2, 290, 77, 60, 15, "Описание :")
EditorGadget (#StringGadget_1, 285, 95, 650, 500)
SetGadgetFont(#StringGadget_1, LoadFont(#Font_Editor_0, "Courier", 10, 16))
CheckBoxGadget(#Font_1, 290, 33, 40 , 20, "Max")
SetGadgetState(#Font_1, 0)
HyperLinkGadget(#Link,50, 625,100,15,"http://purebasic.info",RGB(255,0,0))
HyperLinkGadget(#Inf, 925, 5, 10, 15, "?", RGB(255,0,0))
StringGadget (#StringGadget_2, 360, 54, 470, 20, "Имя отсутствует")
If CreatePopupMenu(1)
MenuItem(1,"Отменить")
MenuItem(2,"Повторить")
MenuBar ()
MenuItem(3,"Вырезать")
MenuItem(4,"Копировать")
MenuItem(5,"Вставить")
MenuBar ()
MenuItem(6,"Выделить всё")
EndIf
;}-----------------------------------------------------------
;{-----------Чтение Preferences------------------------------
Procedure AddConstant()
Result$ = GetGadgetText(#ComboBoxGadget_0)
ClearGadgetItems(#ListIconGadget_2)
OpenPreferences("constants.pcs")
PreferenceGroup(Result$)
If ExaminePreferenceKeys()
While NextPreferenceKey()>0
keyValue$ = PreferenceKeyValue()
AddGadgetItem(#ListIconGadget_2, 0,keyValue$)
Wend
EndIf
ClosePreferences()
EndProcedure
OpenPreferences("constants.pcs")
If ExaminePreferenceGroups()
While NextPreferenceGroup()>0
Group$ = PreferenceGroupName()
AddGadgetItem(#ComboBoxGadget_0, -1,Group$)
Wend
SetGadgetState(#ComboBoxGadget_0,0)
AddConstant()
EndIf
ClosePreferences()
;}--------------------------------------------------------
Repeat
Event= WaitWindowEvent()
If Event=#WM_RBUTTONUP
If IsMouseOver(GadgetID(#StringGadget_1))
DisplayPopupMenu(1,WindowID(0))
EndIf
EndIf
Window=EventWindow()
Gadget=EventGadget()
Syntax(#StringGadget_1)
Select Event
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
Select EventGadget()
Case #ListIconGadget_2
Fast$=GetGadgetText(#ListIconGadget_2)
SetGadgetText(#StringGadget_2,Fast$)
Name.s = GetGadgetText(#ListIconGadget_2)+".txt"
;-------------------------------------------------------
OpenFile(0, "files\"+Name) ;если файла нет, создаем новый
CloseFile(0)
;-------------------------------------------------------
If ReadFile(1,"files\"+Name)
Content$=""
Size=Lof(1)
If Size>0
Content$=Space(Size)
ReadData(1,@Content$,Size)
EndIf
CloseFile(1)
Else
MessageRequester("", "Файл не обноружен! В названии не допустимый знак! Удалить вручную запись из constants.pcs!", #MB_OK|#MB_ICONERROR)
End
EndIf
SetGadgetText(#StringGadget_1, Content$)
Case #Save
DeleteFile("files\"+Name)
OpenFile(0,"files\"+Name)
FileSeek(0, 0)
WriteStringN(0, GetGadgetText(#StringGadget_1))
CloseFile(0)
MessageRequester("Ok","Фаил сохранен")
Case #New_Entry
OpenWindow(#Window_1, 0, 0, 450, 70, "Набери новое имя записи", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
StringGadget(#StringGadget_3, 10, 10, 430, 20, "")
ButtonGadget(#Agree, 140, 40, 130, 20, "Согласны ?")
Case #Agree
AddGadgetItem(#ListIconGadget_2, 0,GetGadgetText(#StringGadget_3))
If OpenPreferences("constants.pcs")
WritePreferenceString(GetGadgetText(#StringGadget_3),GetGadgetText(#StringGadget_3) )
ClosePreferences()
EndIf
CloseWindow(#Window_1)
Case #ComboBoxGadget_0
AddConstant()
Case #Delete_1
If OpenPreferences("constants.pcs")
PreferenceGroup("Мои записи")
RemovePreferenceKey(GetGadgetText(#ListIconGadget_2))
ClosePreferences()
EndIf
DeleteFile("files\"+Name)
RemoveGadgetItem(#ListIconGadget_2, GetGadgetState(#ListIconGadget_2))
Case #Font_1
Toggle = Toggle ! 1
If Toggle
SetGadgetFont(#StringGadget_1, LoadFont(#Font_Editor_0, "Courier New", 10, 16))
Else
SetGadgetFont(#StringGadget_1, LoadFont(#Font_Editor_0, "Courier", 10, 16))
EndIf
Case #Link
RunProgram("http://purebasic.info")
Case #Inf
;{-----------------------------О программе-------------------------------------
CatchImage(69, ?Im3, ?Im3End-?Im3)
OpenWindow(59, 0, 0, 320, 320, "Информация о программе", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
SetWinBackgroundImage(WindowID(59), ImageID(69) )
TextGadget (70, 20, 295, 95, 15, "Сайт программы :")
HyperLinkGadget(71, 140, 295, 150,15,"http://www.mirashic.narod.ru",RGB(255, 4, 0))
TextGadget (72, 120, 124, 65, 15, "Версия : 1.0")
TextGadget (73, 30, 250, 165, 15, "Автор : Мирошниченко Олег")
TextGadget (74, 30, 144, 265, 15, "Проект Константы")
TextGadget (75, 30, 160, 265, 15, "Бесплатная версия")
TextGadget (76, 30, 176, 265, 15, "Сделано в программной среде : ")
HyperLinkGadget(77, 50, 200, 130, 30, "PureBasic",RGB(255, 4, 0))
SetGadgetFont (77, LoadFont(77, "Arial", 20, 16))
SetGadgetColor(77, #PB_Gadget_FrontColor,RGB(255, 81, 78))
SetGadgetColor(77, #PB_Gadget_BackColor, RGB(0, 0, 0))
For k=70 To 76
SetGadgetColor(k, #PB_Gadget_FrontColor,RGB(129, 129, 129))
SetGadgetColor(k, #PB_Gadget_BackColor, RGB(0, 0, 0))
Next k
;}-----------------------------------------------------------------------------
Case 71
RunProgram("http://www.mirashic.narod.ru/")
Case 77
RunProgram("http://purebasic.com/")
EndSelect
EndSelect
;{--------------------- Сохранить/вставить ---------------------------------------------
If Event=#PB_Event_Menu
Menu=EventMenu()
Select Menu
Case 1
SendMessage_(GadgetID(#StringGadget_1), #EM_UNDO, #Null, #Null)
Case 2
SendMessage_(GadgetID(#StringGadget_1), #EM_REDO, #Null, #Null)
Case 3, 4
SendMessage_(GadgetID(#StringGadget_1), #EM_GETSEL, @Min,@Max)
If Min<>Max
If Min