Russian Qt Forum
Ноябрь 23, 2024, 04:06 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3 4 5   Вниз
  Печать  
Автор Тема: Программа для создания электронных книг[Обсуждение исходника]  (Прочитано 43363 раз)
xwicked
Гость
« Ответ #15 : Июль 29, 2011, 22:03 »

Здравствуйте!

В этой версии я сделал одно важное изменение, на которое хотел бы обратить Ваше особое внимание. Это функция "int slotChangeFont()". Там я копирую в переменную QString sText всё выделение:
Код
C++ (Qt)
sText = TextBook->textCursor().selection().toHtml();
 
Потом заменяю все вхождения модификаторов шрифта: "font-family:", "font-size:", "font-style:", "font-weight:" на значения из диалога шрифта.

Так вот, там должен быть способ в одну единственную строчку. Я даже нашёл его - записал в свою амбарную тетрадь, а сейчас найти не могу Грустный . Прошу помочь в нахождении этого способа, так как "int slotChangeFont()" занимает не много не мало, аж 195 строк(!). Буду благодарен.

Исходный код + сборки.

Что изменилось:
Цитировать
- Добавлены значки "Oxygen", распространяемые по лицензии GNU GPL;
- При редактировании шрифта, он изменяется теперь, не для всего текста страницы, а по частям(словам, предложениям, абзацами и т. д.);
- Улучшен импорт HTML-документов, включая копирование изображений, которые преобразуются в формат PNG;
- Изменена стандартная панель - добавлены несколько новых действий;
- Добавлена панель редактирования, в которой продублированы действия из меню "Редактирование", для более удобной работы.
- Счётчик страниц переместился со стандартной панели в строку состояния.
« Последнее редактирование: Август 02, 2011, 19:30 от xwicked » Записан
xwicked
Гость
« Ответ #16 : Август 12, 2011, 21:04 »

Здравствуйте! Вот новая версия 0.1.1 - исходный код + сборки.

Внешний вид:


Одно из добавлений - это функция поиска текста по книге:
Код:
           while(iNumberPage < ListPages.count())
               {
                 lFind:
                    if(TextBook->find(sFindText) == false)
                        {
                            slotNextPage(); //iNumberPage++

                                if(iNumberPage == ListPages.count() - 1) break;

                            goto lFind;
                        }
                    else break;
               }

QString sFindText - искомый текст;
int iNumberPage - текущая страница
QStringList ListPages - список страниц с текстом.

Для поиска используется "TextBook->find(sFindText)" - будет ли выгода, если использовать функцию поиска в QString непосредственно или использовать контейнер для ускорения? Предполагаю, что сейчас тратится дополнительное время для прорисовки QTextEdit TextBook.

Все новинки:
Цитировать
- Добавлена возможность импорта / экспорта простого кодированного текста в формате utf-8;
- Добавлена функция поиска слов по книге;
- Добавлена возможность расширенного редактирования вставленного простого текста;
- Исправлена ошибка, при ответе "Отмена", вопроса о сохранении, при выходе;
- Добавлена панель поиска, с дубликатами команд из меню "Поиск";
- Исправлено несколько ошибок с кнопками панелей;
- Исправлены несколько ошибок при импорте файлов.
Записан
SeverusSnape
Гость
« Ответ #17 : Август 15, 2011, 14:00 »

Не совсем ясно зачем в принципе нужна такая программа, но хотел бы заметить кое-что.
Во-первых слишком мало поддерживаемых сторонних форматов (внутренний, html и txt - это даже не смешно). Добавить поддержку ms word doc (хотя бы под вин с использованием ActiveQt, под лин antidoc(или как он там)...) и OpenOffice odt - труда не должно составить.

Во-вторых, при импорте из html неплохо было бы и кодировочку определять входного файла (читать тег либо использовать внешние библиотеки, ту же enca, например)

Добавить возможности изменения позиции изображений в тексте.

Да и вообще целесообразнее было бы написать визуальный редактор книг в формате fb2 (FictionBook).
Записан
SeverusSnape
Гость
« Ответ #18 : Август 15, 2011, 14:03 »

А так в целом, очередной текстовый редактор
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #19 : Август 26, 2011, 01:04 »

Честно говоря интерфейс абсолютно не интуитивный.
Эта переключалка режимов абсолютно ни к селу ни к городу.
Еще раз говорю мне бы за такой софт просто руки отстрелили..
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
xwicked
Гость
« Ответ #20 : Август 27, 2011, 20:23 »

...
Так вот, там должен быть способ в одну единственную строчку. Я даже нашёл его ...
Вот он:
Код:
         QFont TextFont;
         TextFont = QFontDialog::getFont(&Accept, TextFont);
         QTextCharFormat tcf;
         tcf.setFont(TextFont);
         TextBook->textCursor().setCharFormat(tcf);
--------------------------
В версии 0.1.2, была реализована возможность добавления в базу данных библиотеки произвольной информации, в виде ссылок на отдельные файлы. Что представляет собой достаточно хорошее улучшение, так как преподавателю можно будет совершать меньше движений, при создании учебника.

Эта возможность позволит не только сократить время создания учебника, но и послужит отличным расширением возможностей программы, при использовании материалов, содержащихся в отдельных ссылках на файлы, как дополнение к создаваемому учебнику. Например, к книге о художнике, можно будет хранить галерею с изображениями(его работами) в разделе "Фотографии".

Все изменения:
Цитировать
- Появилась возможность добавления дополнительной информации произвольного содержания, в виде ссылок на отдельные файлы;
- Добавлена возможность выбора пользователем варианта сохранения книги с паролем или без него;
- Добавлена защита режима редактирования программы отдельным паролем, с возможностью его будущего изменения;
- Добавлена возможность сохранения состояния показа инструментальных панелей после выхода из программы;
- Исправлена ошибка отсутствия изображений, при импорте книги из формата XWB;
- Исправлена ошибка неэкспортирования в форматы XWB, HTML, импортированной книги;
- Исправлена ошибка отсутствия расширения .txt, когда оно явно не указано, при экспорте в текстовый формат.
Исходник + сборки. Дабы быть уверенным в том, что файлы не побились, при закачке, я добавил текстовик с md5-контрольными суммами.
Git-репозиторий:
Цитировать
git://klen-library.git.sourceforge.net/gitroot/klen-library/klen-library (read-only)
Записан
xwicked
Гость
« Ответ #21 : Октябрь 16, 2011, 12:14 »

Здравствуйте! Версия 0.1.3 содержит добавление защиты документов дополнительной информации от случайного изменения в режиме просмотра:
Код:
              connect(ListAdditionallyWidget, SIGNAL(doubleClicked(QModelIndex)), SLOT(slotRunFile()));
       
          void ListAdditionally::slotRunFile()
          {
              if(*sItem == tr("Documents") && gRegime == true)
                  {
                      QString sTmp;
                      sTmp = ListAdditionallyWidget->item(ListAdditionallyWidget->currentRow())->text();
                      int ipos = sTmp.lastIndexOf("/") + 1;
                      sTmp.remove(0, ipos);
                      QFile ifile(ListAdditionallyWidget->item(ListAdditionallyWidget->currentRow())->text());
                      QDataStream idata(&ifile);
                      QByteArray bfile;
                      ifile.open(QIODevice::ReadOnly);
                      bfile = ifile.readAll();
                      QFile ofile("/tmp/xwel/tempfile/" + sTmp);
                      QDataStream odata(&ofile);
                      ofile.open(QIODevice::WriteOnly);
                      ofile.write(bfile);
                      ifile.close();
                      ofile.close();
                      QDesktopServices::openUrl(QUrl::fromLocalFile("/tmp/xwel/tempfile/" + sTmp));//Открытие копии документа
                  }
               else
      //Открытие оригинала документа
               QDesktopServices::openUrl(QUrl::fromLocalFile(ListAdditionallyWidget->item(ListAdditionallyWidget->currentRow())->text()));
          }
То бишь, происходит простое копирование во временный файл документа и его запуск. Но, есть одно небольшое ограничение, при использовании такого подхода(bfile = ifile.readAll()Подмигивающий - файл читается в переменную полностью и он не должен быть слишком большим. А все изменения выглядят вот так:
Цитировать
- Исправлена ошибка возможной потери пароля, при экспорте;
- Добавлена защита документов дополнительной информации в режиме просмотра от случайного изменения;
- Появилась функция экспорта всех книг;
- Исправлена ошибка неполного показа длинных названий книг или издательств в списке книг;
- В окне "О программе" все ссылки, для удобного поиска, изменили цвет на синий;
- Исправлена ошибка возможности редактирования списка книг в режиме просмотра;
- В таблицу списка книг добавлены пункты: "Категория", "Подкатегория";
- Исправлена ошибка неудаления книги из базы, при удалении её из списка книг;
- В меню "Помощь" добавились пункты: "Пожертвовать" и "Получить исходный код".
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #22 : Октябрь 16, 2011, 17:39 »

нарвался недавно:
http://code.google.com/p/sigil/
Sigil is a multi-platform WYSIWYG ebook editor. It is designed to edit books in ePub format.
прикольная вещуха...
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
xwicked
Гость
« Ответ #23 : Октябрь 17, 2011, 10:18 »

panAlexey, первый раз видел давно. Из изменений:
- возможно был изменён компонент на webkit(из-за этого  появление некоторых функциональных ограничений);
- добавлено несколько возможностей;
Из недостатков:
- немножко не интуитивный интерфейс;
- "Now what does it have to offer" -
Цитировать
... # Native C++ application
# Bugs Улыбающийся
# And a lot more...
- про bugs  Шокированный особенно убийственная тема;
- плохая отладка;
- код ООП - использовать не смогу, так как я новичок в этом деле и не смогу разобраться с форматом ePub(пока Подмигивающий )
- совсем другая направленность;
- главное, что кнопочка donate есть на сайте - остальное не важно  Веселый
Вопрос: что сказать-то хотел?Непонимающий
ЗЫ: Яплакал...  Смеющийся
« Последнее редактирование: Октябрь 17, 2011, 17:34 от xwicked » Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #24 : Октябрь 18, 2011, 22:44 »

panAlexey, первый раз видел давно. Из изменений:
- возможно был изменён компонент на webkit(из-за этого  появление некоторых функциональных ограничений);
зафигач лучше нормальный html редактор.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
xwicked
Гость
« Ответ #25 : Ноябрь 20, 2011, 19:27 »

В версии 0.1.4 добавилась функция печати:
Код
C++ (Qt)
void ElectronicLibrary::slotPrint()
{
   QPrinter printer;
   QPrintDialog *pPrintDialog = new QPrintDialog(&printer);
 
   if(pPrintDialog->exec() == QDialog::Accepted)
   {
       QPainter painter(&printer);
       QRect r(painter.viewport());
 
       if(ListPages.count() > 0)
       {
 
           for(int i = 0; i < ListPages.count(); i++)
           {
               TextBook->setHtml(ListPages.at(i));
               painter.drawText(r, TextBook->toPlainText());
               printer.newPage();
           }
 
           painter.end();
       }
 
       TextBook->setHtml(ListPages.at(0));
       sbNumberPage.setValue(1);
   }
 
   delete pPrintDialog;
}
Такой вариант печатает простой текст, без форматирования и изображений.

Все изменения:
Цитировать
- Добавлен модуль тестирования "LabFreeTech Тест", для проверки знаний;
- Добавлена функция печати книги;
- Добавлена возможность выравнивания и изменения регистра текста.
Записан
andrew.k
Гость
« Ответ #26 : Ноябрь 20, 2011, 20:00 »

Мне любопытно,сколько активных пользователей у этой программы?
Тоже не пойму, зачем нужна эта программа?
Так как тема для комментов, добавлю.
Там на скринах было вроде как окошко добавления новой книги или чего-то, там были поля для категории добавляемой книги.
Было бы логично сделать их комбобоксами. Понятно почему.
Записан
xwicked
Гость
« Ответ #27 : Ноябрь 20, 2011, 21:11 »

Мне любопытно,сколько активных пользователей у этой программы?
...
Версия 0.1.4. Чисто теоретически - это 14% от запланированного кода. Москва тоже не сразу строилась...  Строит глазки
Записан
andrew.k
Гость
« Ответ #28 : Ноябрь 20, 2011, 21:24 »

Мне любопытно,сколько активных пользователей у этой программы?
...
Версия 0.1.4. Чисто теоретически - это 14% от запланированного кода. Москва тоже не сразу строилась...  Строит глазки
Москва строится до сих пор. Но в ней уже живут люди. И не с версии 0.1.4) А с основания.
Я к тому, нужна ли кому-то программа? Может все зря?
Я так понимаю это курсач или диплом)
Записан
xwicked
Гость
« Ответ #29 : Ноябрь 20, 2011, 21:36 »

... Может все зря?
А когда начнут пользоваться - будете кричать: "Я же говорил, что зря, надо было бросать!!!" Я не вижу завтра потопа -> буду пилить дальше. Код же открыт. Подключатся другие - и всё будет путём. А подобные вопросы я теперь полностью буду игнорировать Подмигивающий
Записан
Страниц: 1 [2] 3 4 5   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.095 секунд. Запросов: 23.