https://ru.wikipedia.org/wiki/PureBasic
https://habr.com/ru/post/64457/
Форум (https://www.purebasic.fr/english/)
Рус. форум (https://purebasic.mybb.ru/)
Учебник (http://pure-basic.narod.ru/docs.html)
Установка в debian (https://forum.puppyrus.org/index.php?topic=23187.msg174850#msg174850)
Пакеты (https://www.purebasic.fr/english/viewtopic.php?p=551178#p551178), необходимые для установки.
PB_5_70_LTS_Rus (https://yadi.sk/d/tjGyfg2DEDT3XQ) - русификатор, выкладывает Пётр на русскоязычном форуме.
LinuxPB_API-Lib (http://www.chabba.de/LinuxApps.html) код-архив для Linux (GTK)
код-архив (https://yadi.sk/d/LStTTEP9lRImgA) (в основном Windows, но не только)
русская справка CHM (https://yadi.sk/d/YPJPDRwL-pGoRw) (с моей перепаковкой и стилями) и тут (https://yadi.sk/d/nsMHwTUbloJlJQ) отдельно доработка файла. Автор перевода sergey2400, в справке есть "от автора перевода". не открывается пока рус. буквы в названии файла не уберешь.
Инструменты
Использовать Wine, так как это Windows-проекты
IceDesign (https://www.purebasic.fr/english/viewtopic.php?f=27&t=74711), PureFORM (https://www.purebasic.fr/english/viewtopic.php?p=160178#p160178) - создание GUI, хотя для этого есть встроенный инструмент в самой IDE. Бесплатная версия IceDesign имеет ограничение 16 элементов.
pbOptimizer (https://www.purebasic.fr/english/viewtopic.php?p=540426#p540426) удаляет из кода неиспользуемые функции.
конфиг для Geany (https://yadi.sk/d/9VB1pbAFODDFrw) (подсветка).
тема подсветки (https://www.purebasic.fr/english/viewtopic.php?p=532987#p532987) кода в IDE (моя чёрная, там и другие).
Второстепенная вещь: чёрная тема (https://www.purebasic.fr/english/viewtopic.php?f=17&t=72284) для официального форума.
xchm-1.31-2008-sf01.pfs (http://mirror.yandex.ru/puppyrus/roll/2008/pfs/xchm-1.31-2008-sf01.pfs) - для чтения chm справки
---------------
Учим английский с французским акцентом и попутно purebasic
https://www.youtube.com/c/PureProgramming/about
---------------
purebasic-demo-p-5.73-sf01.pfs (http://mirror.yandex.ru/puppyrus/puppyrus-a/pra03/pfs-portable/purebasic-demo-p-5.73-sf01.pfs)
purebasic-demo-p-5.73_64-sf01.pfs (http://mirror.yandex.ru/puppyrus/puppyrus-a64/pfs-portable/purebasic-demo-p-5.73_64-sf01.pfs)
Бэйсик порадовал размером бинарника (по сравнению с паскалем). И еще в разы жмется upx
Примеры:
https://archlinux.org.ru/forum/topic/20448/?page=1#post-239111
Опакетил по простому (dir2pkg (https://wiki.puppyrus.org/puppyrus/pfs#dir2pkg_-_%D0%B7%D0%B0%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2%D0%B0%D1%82%D1%8C)) - в аттаче
Прога требует доработки.
Масштабирование окна не влияет на его содержимое
GUI_Qemu (https://www.purebasic.fr/english/viewtopic.php?f=27&t=76462) - быстро тестировать загрузчик или образы
SaveFolders (https://pastebin.com/JSscFTTE) - менюшка на панели задач позволяет открывать избранные папки, список можно формировать в ini-файле.
- запускается. Кто юзает Qemu (krasnyh)- полезная прога?
Запускается, но у меня посложней строка:
qemu-system-x86_64 -cpu host -smp 4,maxcpus=4,cores=4,threads=1,sockets=1 -enable-kvm -soundhw ac97 -m 1.5G -rtc base=localtime -M q35,accel=kvm -drive format=raw,media=cdrom,readonly,file=/mnt/sda3/iso/ddr01-21.01-i686.iso -boot d
На сайте демо версия, она компилит около 800 строк и не позволяет делать dll(so) и напрямую обращаться к системным вызовам.
# wc -l sfs-get
803 sfs-get
Я больше и не писал :D
Если у нас и удастся применить (кто-то освоит) вряд ли это будут грандиозные проекты. Скорее всего что-то типа того, что делаем на gtkdialog
Тут надо понять - что попроще
python - жирно. Си - сложно. Что еще есть
На мурге юзают https://bkhome.org/archive/bacon/
GTK2,GTK3,QT5. (в очень многих случаях один исходник без правок соберётся со всем перечисленным и ещё 32/64)
Круто
https://github.com/fantaisie-software/purebasic
т.е. скомпилить это и получим лицензионно чистый...?
Я удивлён интересом к purebasic
Почему?
Посмотрел код - не bash :'(
Вы не ответили
Для чего используете? Какие-то проги выложены? Для нашего проекта что-то полезное есть (готовы сделать)?
У меня тоже работает, но цифры не влезают в окна (снизу прокрутка - неудобно)
При увеличении окна его внутренности не изменяются - тогда в чем смысл не заблокиированного увеличения
Хорошо бы еще секундомер и все это в трей
Исходники выложены?
Ок, в ближайшее время буду Live-вариант OS использовать, чтобы потестировать и поэкспериментирую со шрифтами, посмотрю как лучше решать проблему, задавая конкретный шрифт/размер или всё же позволяя масштибировать окно, или в конфигурационном файле возможность задать размеры шрифта или окон, так, чтобы всё красиво смотрелось.
Исходники всех моих программ выложены обычно вместе с программой, для таймера есть папка Source в архиве.
На счёт GUI_Qemu код слишком простой, там нет каких-то сложных вычислений, просто на момент теста всяких ISO, флешек и основного загрузчика компа приходилось в блокноте изменять параметры ком-строки Qemu и копировать в терминал, всё это напрягает и сделал небольшую оболочку чтобы сократить телодвижения. Вот тема (https://usbtor.ru/viewtopic.php?p=82014#82014), но лень поддерживать весь функционал, что есть в выложенном варианте для Windows, только сделал нужное мне. Это маленькая вещь, но она удобна в редком случае.
WIN32,GTK2,GTK3
На самом деле совместимость только PureBasic, но не исходника, то есть нельзя что-то сделать красиво не прибегая к WinAPI, а используя только средствами PureBasic в чистом виде, соответственно почти ни одна прога не будет в легкую переделана под другую платформу, а значит придётся долго ковырять исходник чтобы добиться того же функционала.
Запускается, но у меня посложней строка
я недавно добавил в ini дополняющую ком строку, например надо добавить ключи которых нет в оболочке, но при этом сохраняется выбор устройств и т.д. вот тут прога не ограничивает возможности.
Сейчас ковыряю прогу по корректировке текста, аналог этого (https://azjio.ucoz.ru/load/vsjo_dlja_autoit3/skompilirovannye_skripty/textcorrection/4-1-0-17) (Windows) ну или аналог xneur, сейчас застрял с эмуляцией Ctrl+C
RunProgram("xdotool", "key ctrl+insert --clearmodifiers --delay 30", "")
RunProgram("xdotool", "key ctrl+c --clearmodifiers --delay 30", "")
RunProgram("xdotool", "key ctrl+0x0063 --clearmodifiers --delay 30", "")
RunProgram("xdotool", "key 0xffe3+0x0063 --clearmodifiers --delay 30", "")
RunProgram("xvkbd", "-xsendevent -text \[Control_L]\[insert]", "")
RunProgram("xbindkeys", "-text \[Control_L]\[insert]", "")
RunProgram("xbindkeys", "-text \[Control_L]\[C]", "")
исходник (https://pastebin.com/tZPZGBbT)
в Linux есть буфер выделенного текста, может есть возможность как то его прочитать с помощью GTK-функций?
то есть нельзя что-то сделать красиво не прибегая к WinAPI
Не во всех приложениях нужны красивости. Минимально необходимой набор контролов присутствует в кроссплатформенной библиотеке https://www.purebasic.com/documentation/gadget/index.html
https://www.purebasic.com/documentation/dialog/index.html
На канвасе разработан не один контрол и обычно они платформонезависимые.
соответственно почти ни одна прога не будет в легкую переделана под другую платформу
Количество платформозависимого кода обычно незначительно по сравнению с объемом кода программы.
нельзя делать оболочку, то есть тупо можно было бы на PureBasic написать библиотеку бесплатную и вызывать из неё все функции, которые содержаться в PureBasic, вот это нельзя, так как покупка PureBasic теряет смысл.
Нельзя писать обвертку над функциями. ProcedureDLL Open_Window(Window, x, y, InnerWidth, InnerHeight, Title$, Flags, ParentWindowID)
ProcedureReturn OpenWindow(Window, x, y, InnerWidth, InnerHeight, Title$, Flags, ParentWindowID)
EndProcedure
ProcedureDLL CloseWindow(Window)
ProcedureReturn CloseWindow(Window)
EndProcedure
придётся серьёзно перелапачивать код
Если в коде есть платформозависимый код. Библиотека PB кроссплатформенная.
Не такой в пб простой синтаксис. Если вообще не в теме пб- не проще ли будет изучить Си (без плюсов)...
В Си нет строк. Элементарные действия потребуют много усилий. PB хорош тем что изначально поддерживает строки, динамические и ассоциативные массивы, двусвязные списки и др. Их применение возможно в структурах. И все это без явного использования указателей. Для примера Сканирование папки компилятора и отображение древовидной структуры файлов.Structure FileList
N.s ; Имя файла
S.q ; Размер файла
EndStructure
Structure TreeFiles
DN.s ; Имя текущей папки.
List D.TreeFiles() ; Список вложенных папок текущей папки.
List F.FileList() ; Список файлов текущей папки.
EndStructure
EnableExplicit
Procedure ScanDisk(List Tree.TreeFiles(), Dir.s) ; Сохранение структуры указаной папки
Protected ID, Name.s
ID = ExamineDirectory(#PB_Any, Dir, "*.*")
If ID
While NextDirectoryEntry(ID)
If DirectoryEntryType(ID) = #PB_DirectoryEntry_File ; Файл
If AddElement(Tree()\F())
Tree()\F()\N = DirectoryEntryName(ID)
Tree()\F()\S = DirectoryEntrySize(ID)
EndIf
Else ; Папка
Name = DirectoryEntryName(ID)
If Name<>"." And Name<>".."
If AddElement(Tree()\D())
Tree()\D()\DN = Name
ScanDisk(Tree()\D(), Dir+Name+"/") ; Рекурсивный вызов процедуры
EndIf
EndIf
EndIf
Wend
FinishDirectory(ID)
EndIf
EndProcedure
Procedure SetTreeGadget(Gadget, List Tree.TreeFiles(), Depth)
If Tree()\DN<>""
AddGadgetItem(Gadget, -1, Tree()\DN, 0, Depth)
Depth+1
EndIf
ForEach Tree()\D()
SetTreeGadget(Gadget, Tree()\D(), Depth)
Next
ForEach Tree()\F()
AddGadgetItem(Gadget, -1, Tree()\F()\N+" ("+Tree()\F()\S+")", 0, Depth)
Next
EndProcedure
Define NewList Tree.TreeFiles()
AddElement(Tree())
ScanDisk(Tree(), #PB_Compiler_Home)
If OpenWindow(0, 0, 0, 500, 300, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TreeGadget(0, 0, 0, 500, 300)
SetTreeGadget(0, Tree(), 0)
ClearList(Tree()) ; Очистка списка с освобождением всех данных.
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Список D имеет тип структуры в которой расположен, а это значит что каждый элемент списка содержит аналогичный список D, т. е. возможна практически неограниченная вложенность. Это позволяет получить древовидную структуру хранения данных.
Надо максимально привлечь к нам тех, кто уже в теме пб
Сложность в том что почти все они и я в том числе пишут под винду.
Это из-за большей распространенности винды и сложности поиска информации по API Linux. Для винды несложно найти описание и примеры WinAPI, чего не скажешь про линукс...
Только вот оптимален ли pb для изучения по сравнению с другими языками для наших нужд (написание гуй к консольным утилитам)
Зависит от решаемых задач. Пример с GUI и многопоточностью рассчитывающий различные хеши. https://www.cyberforum.ru/beta-testing/thread1576230.html
как получить количество скачанных байт за сеанс работы
cat /sys/class/net/eth0/statistics/rx_bytes
2514282