Программа для создания электронных книг, Обсуждение программы и кода |
Здравствуйте, гость ( Вход | Регистрация )
Программа для создания электронных книг, Обсуждение программы и кода |
xwicked |
8.8.2011, 20:36
Сообщение
#1
|
Студент Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте! Вот вторая моя программа, написанная на C++(Qt). Выношу на обсуждение её и исходник - 0.0.7.
Ссылка на SourceForge.net. Код под GNU GPL v2 - OpenSource. Она предназначена для создания электронных книг, с централизованным хранением в базе данных SQLite3. Этот код публикуется впервые. Его не было нигде, включая репозиторий программ Sisyphus от дистрибутива AltLinux. Там был только Клёст-кроссворд(0.1.9, 0.2.0). Комментируем Windows-версия. Описание: Страница книги представляет собой одну переменную QString Page. Текст книги отображается в компоненте QTextEdit TextBook. Текст в компоненте TextBook имеет форматирование документа HTML. Поэтому редактирование текста страницы осуществляется редактированием html-кода. Стандартное сохранение идёт в базу данных. Но есть и возможность экспорта в файл. Изображения хранятся, как в обычной html-странице - отдельно от текста в папке "temp". В тексте указывается путь. При загрузке книги - во всех страницах происходит перезапись тегов изображения "<img src=": Это актуально для переносимой версии. В этом случае необходимо будет поменять строку: на Пароль книги хранится в открытом виде в переменной QString Password.Список страниц хранится в списке строк QStringList ListPages. Изображения хранятся в массиве QByteArray ListImages[255]. Здесь видно, что изображений на всю книгу 255. Сохранение в базу происходит обычными SQL-запросами:
|
|
|
Алексей1153 |
8.8.2011, 21:32
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
лично я просел на фразе "Этот код публикуется впервые"
Цитата Изображения хранятся в массиве QByteArray ListImages[255]. лучше примени контейнер |
|
|
xwicked |
9.8.2011, 22:27
Сообщение
#3
|
Студент Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
xwicked |
10.8.2011, 9:00
Сообщение
#4
|
Студент Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: 0 |
Вот спекфайл, по которому можно собрать rpm-пакет для дистрибутива AltLinux или своего, основанного на rpm:
Цитата Summary: Qt program for creating and reading electronic books. И вот архив, подготовленный для сборки. Он включает несколько изменений в оформлении кода: ссылка. Этот спекфайл находится внутри архива. Для сборки необходим пакет rpm-build, Команда для сборки двоичного пакета: Summary(ru): Qt программа для создания и чтения электронных книг. %define version 0.0.7 Group: Education Name: klen-library BuildRequires: gcc-c++, libqt4-sql-sqlite >= 4.4.3, libqtgui4 >= 4.4.3, libqt4-core >= 4.4.3 BuildArch: %ix86 Provides: klen-library Release: alt1 Source: klen-library-%{version}.tar.gz Url: http://labfreetech.org/index_e.html Version: %{version} License: GPLv2 Packager: LabFreeTech.org admin@labfreetech.org %description Qt program for creating and reading electronic books. Supported features: - Creation of a textbook; - Editing of the textbook; - Reading the textbook; - Adding / removing books from the database; - Editing the font of the textbook; - Export and import of books in the file. %description -l ru Qt программа для создания и чтения электронных книг. Поддерживаемые функции: - Создание учебника; - Редактирование учебника; - Чтение учебника; - Добавление/удаление учебников из базы данных; - Редактирование шрифта учебника; - Экспорт и импорт учебников в файл. %prep %setup -q %build %make_build #cp -f klen-library debian/klen/opt/klen-library/ %install cp -Rv klen/ %buildroot/ #rm -rf $RPM_BUILD_ROOT %clean rm -rf $RPM_BUILD_ROOT %files /usr/bin/* /usr/share/* %post test -e /usr/bin/xwel-0.0.7 || ln -s /usr/bin/xwel-0.0.7 /usr/bin/klen-library-0.0.7 test -e $HOME/Desktop/xwel.desktop || cp -r /usr/share/applications/xwel.desktop $HOME/Desktop/klen-library.desktop %postun test -L /usr/bin/klen-library-0.0.7 && rm -r /usr/bin/klen-library-0.0.7 test -e $HOME/Desktop/klen-library.desktop && rm -r $HOME/Desktop/klen-library.desktop Цитата $rpmbuild -bb /home/username/RPM/SPECS/xwel-0.0.7-alt.spec Оставляем комментарии, ищем ошибки.
|
|
|
xwicked |
12.8.2011, 21:11
Сообщение
#5
|
Студент Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте!
Следующая версия программы 0.0.8. Исходник + сборки. Её ключевой особенностью является импорт html-файла. Вот функция: Она производит разбивку на страницы, подсчитывая условное значение количества строк располагаемых на странице, формата A4. Была ещё задумка подсчитать количество символов в строке но, пока решил остановиться на таком варианте.Разбивая страницы, она переносит всю таблицу на одну страницу до конца, даже, если таблица физически должна быть на 2-х или более страницах. Импортируются пока только html-страницы, созданные в OpenOffice. Это делалось для того, чтобы преподаватели, у которых имеются методички в формате MSWord(*.doc) могли наиболее быстро перегнать своё пособие в мою программу. Как Вам эта функция и есть ли возможность всё это максимально упростить? Благодарю за ответ. |
|
|
xwicked |
15.8.2011, 6:31
Сообщение
#6
|
Студент Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: 0 |
Теперь и счастливым обладателям дистрибутивов GNU / Linux Debian и его производным(Ubuntu), предоставилась возможность попробовать себя в качестве разработчиков ПО.
Новая версия электронной библиотеки 0.0.9. Исходник + сборки. Серьёзным изменением в данной версии является ускорение загрузки книги из базы данных. Это связано с выгрузкой изображений из базы на диск в папку. Сначала я не знал, как сделать лучше, поэтому сделал выгрузку по одному байту, что занимало большой промежуток времени. При использовании объекта QImage - этот процесс уcкорился на моей тестовой машине раз в 20(!). Код ниже:
Для сборки deb-пакета необходимо наличие установленных пакетов: autotools-dev, dh-make, fakeroot и другие. Команда сборки: Цитата user@pc:/klen-library-0.0.9-deb$ dpkg-buildpackage -rfakeroot
|
|
|
xwicked |
17.8.2011, 21:42
Сообщение
#7
|
Студент Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте!
В этой версии я сделал одно важное изменение, на которое хотел бы обратить Ваше особое внимание. Это функция "int slotChangeFont()". Там я копирую в переменную QString sText всё выделение: Потом заменяю все вхождения модификаторов шрифта: "font-family:", "font-size:", "font-style:", "font-weight:" на значения из диалога шрифта.Так вот, там должен быть способ в одну единственную строчку. Я даже нашёл его - записал в свою амбарную тетрадь, а сейчас найти не могу sad.gif . Прошу помочь в нахождении этого способа, так как "int slotChangeFont()" занимает не много не мало, аж 195 строк(!). Буду благодарен. Исходный код + сборки. Что изменилось: Цитата - Добавлены значки "Oxygen", распространяемые по лицензии GNU GPL;
- При редактировании шрифта, он изменяется теперь, не для всего текста страницы, а по частям(словам, предложениям, абзацами и т. д.); - Улучшен импорт HTML-документов, включая копирование изображений, которые преобразуются в формат PNG; - Изменена стандартная панель - добавлены несколько новых действий; - Добавлена панель редактирования, в которой продублированы действия из меню "Редактирование", для более удобной работы. - Счётчик страниц переместился со стандартной панели в строку состояния. |
|
|
xwicked |
18.8.2011, 21:08
Сообщение
#8
|
Студент Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте! Вот новая версия 0.1.1 - исходный код + сборки.
Внешний вид: Одно из добавлений - это функция поиска текста по книге:
QString sFindText - искомый текст; int iNumberPage - текущая страница QStringList ListPages - список страниц с текстом. Для поиска используется "TextBook->find(sFindText)" - будет ли выгода, если использовать функцию поиска в QString непосредственно или использовать контейнер для ускорения? Предполагаю, что сейчас тратится дополнительное время для прорисовки QTextEdit TextBook. Все новинки: Цитата - Добавлена возможность импорта / экспорта простого кодированного текста в формате utf-8;
- Добавлена функция поиска слов по книге; - Добавлена возможность расширенного редактирования вставленного простого текста; - Исправлена ошибка, при ответе "Отмена", вопроса о сохранении, при выходе; - Добавлена панель поиска, с дубликатами команд из меню "Поиск"; - Исправлено несколько ошибок с кнопками панелей; - Исправлены несколько ошибок при импорте файлов. |
|
|
xwicked |
27.8.2011, 20:49
Сообщение
#9
|
Студент Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: 0 |
... Вот он:Так вот, там должен быть способ в одну единственную строчку. Я даже нашёл его ... --------------------------В версии 0.1.2, была реализована возможность добавления в базу данных библиотеки произвольной информации, в виде ссылок на отдельные файлы. Что представляет собой достаточно хорошее улучшение, так как преподавателю можно будет совершать меньше движений, при создании учебника. Эта возможность позволит не только сократить время создания учебника, но и послужит отличным расширением возможностей программы, при использовании материалов, содержащихся в отдельных ссылках на файлы, как дополнение к создаваемому учебнику. Например, к книге о художнике, можно будет хранить галерею с изображениями(его работами) в разделе "Фотографии". Все изменения: Цитата - Появилась возможность добавления дополнительной информации произвольного содержания, в виде ссылок на отдельные файлы; Исходник + сборки. Дабы быть уверенным в том, что файлы не побились, при закачке, я добавил текстовик с md5-контрольными суммами.- Добавлена возможность выбора пользователем варианта сохранения книги с паролем или без него; - Добавлена защита режима редактирования программы отдельным паролем, с возможностью его будущего изменения; - Добавлена возможность сохранения состояния показа инструментальных панелей после выхода из программы; - Исправлена ошибка отсутствия изображений, при импорте книги из формата XWB; - Исправлена ошибка неэкспортирования в форматы XWB, HTML, импортированной книги; - Исправлена ошибка отсутствия расширения .txt, когда оно явно не указано, при экспорте в текстовый формат. Git-репозиторий: Цитата git://klen-library.git.sourceforge.net/gitroot/klen-library/klen-library (read-only)
|
|
|
xwicked |
16.10.2011, 12:14
Сообщение
#10
|
Студент Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте! Версия 0.1.3 содержит добавление защиты документов дополнительной информации от случайного изменения в режиме просмотра:
То бишь, происходит простое копирование во временный файл документа и его запуск. Но, есть одно небольшое ограничение, при использовании такого подхода(bfile = ifile.readAll() - файл читается в переменную полностью и он не должен быть слишком большим. А все изменения выглядят вот так:Цитата - Исправлена ошибка возможной потери пароля, при экспорте;
- Добавлена защита документов дополнительной информации в режиме просмотра от случайного изменения; - Появилась функция экспорта всех книг; - Исправлена ошибка неполного показа длинных названий книг или издательств в списке книг; - В окне "О программе" все ссылки, для удобного поиска, изменили цвет на синий; - Исправлена ошибка возможности редактирования списка книг в режиме просмотра; - В таблицу списка книг добавлены пункты: "Категория", "Подкатегория"; - Исправлена ошибка неудаления книги из базы, при удалении её из списка книг; - В меню "Помощь" добавились пункты: "Пожертвовать" и "Получить исходный код". |
|
|
Текстовая версия | Сейчас: 27.11.2024, 9:57 |