вторник, 12 мая 2015 г.

Дерево в окне.


Ссылки на скачивание в конце статьи.

Сделал себе программу, WINDOWS.
Зачем?
Мне её не хватало.
На поиски файлов уходили силы, которые
были нужны для другого.
Копание в директориях раздражало.
К ним добавились интернет и эллектронная почта.
В них тоже, надо было что-то постоянно искать.

Кто поумней, делал шорт-каты на экране.
У меня, вместо этого, была тетрадь, общая, 48 листов.
Вываливать на экран список своих интересов не хотелось.
В добавок, я oриентировался в ней,  быстрей, чем на диске.

Часто посещала мысль:
Почему Майкрософт сделал программу-таблицу, Excel,
а программу-дерево, не сделал.

Мало тебе Explorer ?
Однозначно, мало.
Explorer держит всё, поэтому без него нельзя, поэтому, он не удобен.
Стёр в эксплорере-стёр файл. Мои поздравления.
От эксплорера многие цепенеют, я тоже.

Но одно ясно: заменить его сможет только другое дерево,
если не тетрадь, конечно.
Компьютер, это всё-таки, иерархия.

Задача: дать юзеру-лоху, вроде меня, свою иерархическую структуру.
В каком виде её, матушку, хранить, как шифровать, как расшифровывать ?

Если уж делаешь пародию на эксплорер,
так спарадируй копирование элементa, для начала.
Слабо? Да, слабо.

Поиск: вверх, вниз.
В текст-файле, понятно, номер строки.
Больше-вниз, меньше-вверх.
А в структуре?
Номер 2 может быть на дне, номер 800 стоять вторым, после головного.
Explorer ищет вверх-вниз?
Нет.
Ищет только внутри.
B cоседнюю директорию не заглядывает,
только в ту, на которую наступили.
Поднимешься ступенькой выше, поле поиска
раздастся до горизонта. А деваться некуда.

Уже в бытность не программистом, а скорей, админом.
Пришёл ко мне один нач. отдела и спросил:

   -Eсть ли такая пофигень, дерево, которое показывает одним экраном,
как таблицы, связанны внешними ключами?
   -Есть такой экран, он рассказывает, про выбранную таблицу.
   -Тебя что спросили ? Все таблицы, не одна. Чтоб строение было понятно
с одого клика, а не с тысячи. 

Знаешь, сказал я , возьмём неделю.
Ты ищешь в интернете, я прикидываю программу, нa это дерево.
Через неделю, подведём итоги.

Через неделю, он пришёл и сказал: ничего такого, в сети, нет.
Я показал ему, корявый, но всё-таки, экран.
Можете проверить, это треннировачная база,
она приходит из Майкрософтa вместе с сервером.
Имена боевых баз, я потёр.




    -Это то, что надо. Забираю . Как инсталлировать?
    -Никак, говорю, вот, копирую тебе библиотеку программы на
флешку, с флешки снимешь на диск и запускай.
Hа чужой машине, можешь с флешки...

C этой задачи, я понял, что до дерева, походу, дорос.

То, что называют "постaновкой задачи",
этап проектирования будующей программы,
я проделал, от нечего делать, стоя на остановке.
Поздно вечером, под дождём.
Наутро, начал кодировать.
Постaновку держал в памяти, своей,  не компьютера,
и шёл по ней, как по нотам.

Строение программы кратко описанно в инструкции пользователя,
она находится в библиотеке  UserGuide.
Рекоммендую просмотреть комментарии после статьи,
возможно, это сэкомит ваше время в освоении программы.
------------------------------------------------------------------------------------------------------------------------
Фота с награждения на конкурсе программ, апрель 2013.
Слева направо.
Мэр Тель-Авива, Хульдаи,
Я,
Депутат кнессета, Михаэль Эйтан.


Видео-инструкция, на английском языке.
На русского диктора не хватило денег:



Есть альтернативный линк
на это же видео, если YouTube завис
https://vimeo.com/85730252

Вставлять фильм, живьём, не стал-сильно утежеляeт страницу.

Линк для скачки файла ZIP с программой.
Раззипте и запускайте:



Что запускать ?
Файл запуска программы с "птичкой".


Возможно, ваш компьютер покряхтит и спросит, уверенны ли вы в 
запуске чуждой ему программы.
Соглашайтесь, я не собираюсь травить вас вирусами.
Тем более, что Гугл всё проверил, ещё на складе.
-------------------------------------------------------------------------------------------------------------------------
Вот, решил присоединить, для примера,
картинки некоторых каталлогов,
сделанных, для запуска с СиДи или флешки.




-------------------------------------------------------------------------------------------------------------------------
А это, что называется, для души.
Его можно скачать, отсюда.



-------------------------------------------------------------------------------------------------------------------------


Те из вас, что заинтересуются моей попыткой
автоматического составления скриптов для
MS SQL SERVER
приглашаются в блог TABLE COMMAND.
http://srulbond1.blogspot.co.il/2015/07/blog-post.html
Кому интересна тема зависшего сервера SQL, как хотя бы приблизиться к развязке
этой ситуации.Приглашаются сюда:
https://sqlactiveprocess.blogspot.com
Для любителей внешних ключей, не к ночи будут помянуты:
http://srulbond2.blogspot.co.il/2015/12/table-depends.html
Это, типа, зависимость процедур, вью, функций внутри базы.
https://sysdepends.blogspot.com/
Попытка применить HOME CATALOG для построения школьного расписания.

http://treeschedule.blogspot.com

---------------------------------------------------------------------------------------------------------
Итак, для тех, кто добрался до сюда. Мой сын Хаим попросил усилить программу. Он изучает историю и даже получает за это какие-то деньги. Суть просьбы-добавить к свойствам эллемента понятие "категория". Усиленный HOME CATALOG я тестирую на примере кулинарного дневника. Снять его можно отсюда:

Окно, для ведения категорий открывается через меню: показ каталлога-категории и.т.д. Можно F10 .


Если Home_Catalog достаточно дебагирован,
то новая версия САТ_НОМЕ_САТАLOG , имеется ввиду категории, а не кошка,
стал устойчивым только 2 недели назад.
Сегодня 25 августа 2020 года.
Сказку про последний баг мы все учили в детстве.
На примере стартапа "Золотая Рыбка".
Станете работать разберётесь.
Мой супер-юзер потребовал ввести опцию массивного удаление целой ветви,
а не отдельно-бездетного айтема. Поэтому, приведённый для примера кулинар,
легко превращается во всё остальное, простым стиранием второго уровня. Ну ещё кое-какие мелочи, вобщем, правильные на мой взгляд.


15 комментариев:

  1. В следующих комментариях мне хотелось бы рассказать,
    что надо знать про
    Home Catalog.

    ОтветитьУдалить
  2. Начнём с картинок.
    Вам неохота с ними возится-есть 100 готовых,
    намертво зашитых в код программы.
    Каждая из них-шедевр компьютерной графики.
    От одного взгляда на них вам сразу захочется что-нибудь своё.
    Свои картинки вам придётся размещать в библиотеке
    catalog_picture
    это тоже несдвигаемое имя.
    Когда программа находит себя в режиме картинок пользователя,
    она идёт в catalog_picture и начинает считать:
    один, два, три ... с каждым новым числом ищет картинку с именем
    1.bmp, 2.bmp, 3.bmp и мобилизует их на великие дела.
    Я как-то сделал каталлог дорожных знаков-222 картинки.
    Полагаю, что это только начало.
    Уж если заговорили о числах, есть, также, веточка на 40 ступеней,
    но об этом, не сейчас.
    Итак, формат картинок bmp. Древний-цифровая картинка в чистом виде без всяких сжатий.
    Поэтому рекоммендую для поиска новых картинок пользовать
    Microsoft Internet Explorer.
    Только он даёт возможность снять картинку в формате bmp.
    Остальные браузеры-только jpeg. Это не страшно, можно
    открыть картинку в Window Painter и сохранить в формате bmp. Хлопотно.
    Есть 3 вида bmp программа работает со всеми.
    Не вздумайте просто переименовать jpg в bmp, программа вылетит и не найдёте концов.
    Когда начинал делать код, каким-то верхним чутьём понял, что работать надо с bmp. После, когда программа задышала, попытался перевисти её на jpg-более популярный формат. Начались неконтроллируемые вылеты, всякий раз в другом
    месте, пришлось бежать назад. Всё остальное, думаю, поймёте сами.

    ОтветитьУдалить
  3. Французский интерфейс.
    Мой сосед сказал, что он в жизни не запустит
    программу, если она не говорит по-французски.
    Пришлось специально для него мастерить ещё пяток экранов.
    Французский я не знаю, пришлось подключить Google Translate.
    В английском, впрочем, тоже-не очень, со всеми вытекающими...

    ОтветитьУдалить
  4. Древний интерфейс.
    Как-то раз, я попросил разместить Home Catalog
    на сайте бесплатных программ.
    Ответ был, примерно, такой:
    "Нам понравилась Ваша идея с коммандной строкой, но столь
    устаревший интерфейс...", ну, типа, нет мазы.
    Что сказать? Что современные интерфейсы мне не нравятся-долгая,
    бесполезная тема.
    Но то, что программа должна стартовать с флешки на первом встречном компьютере.
    И не факт, что на нём будут ди-элели и джава-добавки пяти последних лет.
    Я не могу терять из-за этой белиберды 30% рынка, в которых
    скрываются дорогие моему сердцу домо-хозяйки.
    В конце концов это Home Catalog.
    И он обязан состоять из базовых компонент Windows, чтобы всюду быть дома.

    ОтветитьУдалить
  5. Флажки. Весь мир называет их Check Box.
    Их можно показывать, можно не показывать.
    Если опция не нужна, то зачем засорять экран?
    При этом флажки помеченных элементов не забываются и возвращаются
    вместе с опцией.
    Когда программа находится в режиме флажков и вы наступили на
    элемент у которого есть подчинённые уровни, то в правом-клик меню
    появляется опция "проверка выставления флажков на подчинённых уровнях".
    Вы наступаете на головной элемент ветки, щёлкаете эту опцию.
    Программа останавливается на первом непомеченном под-элементом, а затем, гасит флажок на головном элементе, если там он включён.
    Если-же вся ветка помеченна флажками, то на головном тоже зажигается флажок.

    ОтветитьУдалить
  6. В следующих заметках, мне бы хотелось
    поговорить о понятии Current Library-Текущая Библиотека.
    Понятие, вроде, простое. Можно работать с программой,
    не зная про него ничего, но лучше знать, особенно,
    если вдруг ваше использование Home Catalog,
    в какой-то момент станет постоянным.

    ОтветитьУдалить
  7. Начнём с того, что Current Library или Current Directory,
    что в лоб, что по лбу, парамметр, который есть у
    каждой-абсолютно каждой Windows программы.
    Это символьная строка, в которой сидит полный
    дисковый маршрут к той библиотеке, откуда стартовала программа.
    Home catalog не исключение, у него тоже есть Текущая Библиотека.
    Как её открыть из HOME CATALOG ?
    Комманда простая: эксплорер-точка
    Explorer .
    Нелишняя весчь, уж поверьте.

    ОтветитьУдалить
  8. Но перед тем, как говорить о
    серьёзных вещах, хотелось бы поговорить
    о несерьёзных.
    Чтобы программа могла делать поиск вверх-вниз,
    она вынужденна поддерживать некую мат.модель.
    Кроме всяких там переносов/копирований и присвоения картинки элементу,
    есть ещё 3 комманды пользователя, которые эту модель разрушают и после
    них программа, просто, обязанна перегрузится.
    Итак, эти 3 комманды:
    создание нового элемента, удаление старого
    и изменение имени элемента.
    Есть ещё одно действие, которое требует перезагрузки.
    Это добавление новой картинки в библиотеку
    catalog_picture .
    Новая картинка появится в столбике картин для поиска,
    на главном экране, после первой же перезагрузки-можете вызвать её сами
    кнопкой "перезагрузка каталога".
    После добавления, удаления, изменения имени элемента,
    программа начинает следить за пользователем.
    Если он оставил её в покое на 35 секунд, включается перезагрузка.
    Если же, сразу, после одного из этих 3-х действий, пользователь
    запустит поиск, он, вместо поиска, получит, сперва, перезагрузку, а только
    потом сам поиск-всё на автомате.
    В принципе, перезагрузка не меняет фокус в дереве, он,
    фокус, возвращается к тому же элементу, с которого стартовала перезагрузка.

    ОтветитьУдалить
  9. Пришло время поговорить о
    Текущей Библиотеке.
    Итак, у вас два каталога на диске D:
    каталог носков в библиотеке
    d:\носки
    и каталог яхт в билиотеке
    d:\яхты
    Вы хотите вызвать каталог яхт из каталога носков.
    Комманда в каталоге носков должна прозвучать так:
    cmd /c d:\яхты\home_catalog.eхe
    Я сделаю всё, чтобы эта комманда никогда не сработала.
    Почему ?
    Каталог яхт, допустим, стартует, но он будет свято верить,
    что его Текущая Библиотека-носки, потому, что стартовали-то
    его оттуда. Малейшее изменение в каталоге яхт, и он идёт
    и давит tree_map.tхт где ? В каталоге носков. В результате-
    2 каталога яхт и ни одного каталога носков.
    Поэтому, есть отдельная кнопка для запуска другого каталога.
    Перед тем, как её нажать вы должны сделать ShortCut к
    home_catalog.eхe другого каталога.
    Составить коммандную строку запуска этого ShortCut
    cmd /eхе d:\яхты\home_catalog.lnk
    и тогда всё будет Oll Korrect.
    Потому, что запускаете-то вы ShortCut, а он достаточно
    интеллегентен, чтобы объяснить своему
    home_catalog.eхе
    где его Текущая Библиотека.
    Кстати, имя текущей библиотеки я вывожу на верхнюю рамку
    главного окна.

    ОтветитьУдалить
  10. Если, вдруг, каким-то чудом,
    вы помните номер нужного вам элемента,
    то для того, чтобы быстро перейти к нему,
    впишите номер в серое окошечко ,
    которое отображает номер текущего
    элемента и нажмите кнопку "отметить текущий элемент".

    ОтветитьУдалить
  11. Если мы с вами откроем окно добавления элемента
    или редактирования элемента, это, впрочем,
    одно и то же окно, то можно рядом с кнопками
    "полный маршрут к файлу", "относительный маршрут"
    заметить две кнопки без надписей, с символам директорий
    на фасаде. Что за звери ?
    Мой сын сказал, что ему нужны элементы,
    открывающие библиотеки.
    Комманда, сама по себе, простая
    explorer "маршрут к библиотеке"

    Но дело в том, что я не смог сделать функцию,
    считающую этот самый "маршрут к библиотеке".
    Если говорить о верхней жёлтой кнопке, то её можно смело
    замазать канцелярским лаком для устранения опечаток.
    Т.к. абсолютный маршрут к библиотеке спокойно берётся из
    Эксплорера, идентично с тем, как вы берёте оттуда интернет адрес, например.
    Что касается нижней кнопки-это уже расчёт относительного адреса, т.е.то, что, в настоящее время, кроме Home Catalog, никто не делает.
    Нажмите кнопку-получите окно файло-искателя, в том-то и проблемма, что файло, а не библо...
    Выйдите к искомой библиотеке, выберите любой, неважно какой
    файл-это нужно, чтобы файло-искатель вцепился в библиотеку,
    имя файла я всё равно отброшу-получите относительный маршрут к библиотеке.
    Как вам алгоритм?
    Отстой.
    Согласен, но, это уж, чем богаты...

    ОтветитьУдалить
  12. Home Catalog , когда закрывается, делает
    резервную копию файла tree_map.txt ,
    которая называется tree_map_last_version.txt .
    Если вы напортачили, а другой копии нет, то
    ни в коем случае, не закрывайте Home Catalog.
    Откройте tree_map_last_version.txt ,
    убедитесь, что это тот каталог, что нужен и
    сохраните его поверх tree_map.txt .
    Потом , нажмите кнопку "перезагрузка каталога".
    Вы вернётесь к началу сессии.

    ОтветитьУдалить
  13. Программа сделанна на языке PowerBuilder.
    В интернете его именем назван океан информации.
    Вряд ли, я что смогу добавить.
    Знатоки рынка могут сказать:
    "Стоп, красавчик ! PowerBuilder продукт платный,
    и без лицензии, ты не можешь распространять софт,
    сделанный с его помощью".
    Не будем тянуть резину, лицензия у меня есть.
    Она обошлась моей семье в 4.5 тысячи долларов США.
    Желающие проверить, обращайтесь в фирму NESS-PRO,
    которая продаёт PowerBuilder в Израиле.
    Спросите, кто такой Исраэль Бондарь, зарегестрирован под адресом
    srulbond@gmail.com
    как и этот блог. Так что, контрафакта здесь нет.

    ОтветитьУдалить
  14. Хотелось бы немного поговорить о номерах элементов.
    У каждого элемента есть номер, он показывается в маленьком
    сером окошке-правый верхний угол окна.
    Номер элемента уникален для данного каталога.
    Никакие переносы внутри каталлога этот номер не меняют.
    А копирование-копирование создаёт новые элементы.
    Номер нового элемента считается достаточно просто:
    максимальный из присутствующих плюс 1.
    Может ли номер стёртого элемента вернуться в каталог?
    Если мы построим блок схему этой задачи, то получим ответ
    "Если макисмальный номер из тех, что остались, меньше удалённого на 1,то да". Иными словами-вряд ли.
    В процессе функционирования появляются дыры в нумерации.
    Они чему-то мешают?
    Самой программе ничуть.
    Лично вам? Возможно.
    Как-то раз, я проверил алгоритм избавления от дыр.
    Скачивается свежий каталог.
    Свежий-это значит в нём 1 элемент и нет ещё файла tree_map.txt .
    Чуть-чуть меням 1 элемент-пробел в начале или точка в конце названия-появляется tree_map.txt .
    Возвращаемся в наш каталог, вспоминаем про опцию:
    "копирование в другой каталлог с коммандной строкой"
    и копируем в новорожденный каталлог элементы второго уровня
    сохраняя их очерёдность.
    Берём новый tree_map.txt , сохраняем поверх нашего старого,
    клавиша "перезагрузка"-дыр нет.
    Какой смысл от всего этого-только эстетика,
    исчезает раздутость номеров. Насколько это кому мешает, вопрос настроения.

    ОтветитьУдалить
  15. Не далеe как вчера, я выдернул нечаянно ногой, из компа,
    шнур электропитания.
    После перезапуска машины Home Catalog, на старте, выдал ошибку типа,
    Data Window Import Error
    что значит, что в опер.память программы не прочёлся
    текстовый файл.
    Не так-то много файлов создаёт, а потом, и читает Home Catalog.
    Вот их список:
    check_mode.txt
    language.txt
    now_default.txt
    picture_mode.txt
    search.txt
    tree_map.txt
    tree_map_last_version.txt

    Самый главный, разумеется
    tree_map.txt
    карта дерева, потом его резервная копия
    tree_map_last_version.txt
    Остальные файлы второстепенные,
    в том смысле, что легко восстанавливаются.
    Наверное, в какой-то файл, при внезапном отключении
    попала грязь. Возможно, в тот момент, каталог был в процессе
    автоматической перезагрузки. Короче, я стёр все вспомогательные
    файлы, a tree_map.txt восстановил из резервной копии.
    Программа открылась хоть и в дефолтном виде-с английским интерфейсом, со стандартными картинками, без флажков, но зато без писка.
    Дальше, кликами в главном меню, я привёл её в чувство, вот и всё.
    Смысл такой, что если программа дала фарш при запуске,
    сотрите, сперва вспомогательные текст файлы.
    Должно помочь. Если нет, тогда уже начинайтe с
    резевной копией tree_map.txt. Сразу за это не хватайтесь.


    ОтветитьУдалить