Модераторы: Snowy, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программа для создания электронных книг, Обсуждение исходника 
:(
    Опции темы
xwicked
  Дата 20.11.2011, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 9.4.2010
Где: Старый Оскол

Репутация: нет
Всего: 1



В версии 0.1.4 добавилась функция печати: 
Код
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 Тест", для проверки знаний;
- Добавлена функция печати книги;
- Добавлена возможность выравнивания и изменения регистра текста. 

PM MAIL WWW ICQ   Вверх
xwicked
  Дата 31.1.2012, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 9.4.2010
Где: Старый Оскол

Репутация: нет
Всего: 1



Здравствуйте! Версия 0.1.8
Код
//Изменение таблицы
void KlenLibrary::slotResizeTable()
{
    if(gRegimeViewing == true) return;

    InputParametrTable FormInputParametrTable;
    FormInputParametrTable.setWindowTitle(tr("Change table parametrs"));

    if(FormInputParametrTable.exec() == QDialog::Accepted)
    {
        if(FormInputParametrTable.SpinColumnCount->value() > 0
                && FormInputParametrTable.SpinColumnCount->value() > 0)
        {
            TextBook->textCursor().currentTable()->resize(FormInputParametrTable.SpinRowCount->value(),
                                                          FormInputParametrTable.SpinColumnCount->value());
        }
    }
}
currentTable() позволяет работать с таблицей, по текущей позиции курсора в тексте.
Все изменения:
Цитата
- Добавилась возможность создания и редактирования таблиц;
- Исправлена ошибка, не позволяющая сохранять дополнительную информацию, при редактировании;
- Добавлена возможность ввода имени пользователя;
- Добавлен учёт времени работы пользователя с книгой;
- Добавились горячие клавиши;
- Модуль "LabFreeTech Тест" изменил своё название на "Шёлковый тест" и обновился до версии 0.4.1;
- Добавился пункт меню "Сервис", в котором теперь находятся элементы: "Статистика", "Дополнительно", "Тест";
Хочу сообщить о том, что начиная с версии >1.0.0, 30% работы будет сосредоточено на оптимизацию под ООП стандарты smile для лучшей поддержки другими программистами.

P.S. Ещё один очень важный момент: версии 0.1.8 и 0.1.9 - сборки являются минимальными. То есть, чтобы посмотреть на все функции, необходимо программу собрать из исходника . Это делалось для проверки аудитории пользователей на заинтересованность в программе, путем отправки мне запроса на получение исходного кода. Что было не очень удачной идеей и, с версии 0.2.5, сборки программы уже снова полнофункциональны. Прошу извинить меня за данное неудобство  smile  .
PM MAIL WWW ICQ   Вверх
xwicked
  Дата 11.2.2012, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 9.4.2010
Где: Старый Оскол

Репутация: нет
Всего: 1



В версии 0.1.9 добавлена работа с несколькими библиотеками-базами(как и в тесте   smile  ) и возможность резервировать со сжатием:
Код
void KlenLibrary::slotBackupLibrary()
{
    QString sNameBackupLibrary = QFileDialog::getSaveFileName(0, tr("Backup library"), "", "*.xwlbz");

    if(sNameBackupLibrary == "") return;
    if(sNameBackupLibrary.indexOf(".xwlbz") == -1) sNameBackupLibrary += ".xwlbz";

    QFile ifile(sNameLibrary);
    ifile.open(QIODevice::ReadOnly);
    QByteArray baExport;
    baExport = ifile.readAll();
    ifile.close();
    baExport = qCompress(baExport, 9);//Сжатие данных - 9-ая степень
    QFile ofile(sNameBackupLibrary);
    ofile.open(QIODevice::WriteOnly);
    ofile.write(baExport);
    ofile.close();
}

void KlenLibrary::slotRestoreLibrary()
{
    QString sNameBackupLibrary = QFileDialog::getOpenFileName(0, tr("Open backup"), "", "*.xwlbz");

    if(sNameBackupLibrary == "") return;

    QFile ifile(sNameBackupLibrary);
    ifile.open(QIODevice::ReadOnly);
    QByteArray baImport;
    baImport = ifile.readAll();
    ifile.close();
    baImport = qUncompress(baImport);//Извлечение данных из архива

    sNameBackupLibrary = QFileDialog::getSaveFileName(0, tr("Restore library"), "", "*.xwlb");

    if(sNameBackupLibrary.indexOf(".xwlb") == -1) sNameBackupLibrary += ".xwlb";
    if(sNameBackupLibrary == "") return;

    QFile ofile(sNameBackupLibrary);
    ofile.open(QIODevice::WriteOnly);
    ofile.write(baImport);
    ofile.close();
}
Несколько изменений:
Цитата
  - Добавилась возможность резервировать базу данных библиотеки(со сжатием до 5-ти раз(!));
  - Добавлена возможность работы с несколькими библиотеками;
  - Добавлена поддержка полного форматирования текста при печати книги;
  - Добавлено cжатие(до 5-ти раз(!)) импортированной книги в формате xwb.
  - Изменились несколько элементов меню;
Скачать
PM MAIL WWW ICQ   Вверх
xwicked
  Дата 17.2.2012, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 9.4.2010
Где: Старый Оскол

Репутация: нет
Всего: 1



Здравствуйте! Оптимизирована функция изменения шрифта:
Код
        bool Accept;
        QFont TextFont;
        TextFont = TextQuestion->textCursor().charFormat().font();
        TextFont = QFontDialog::getFont(&Accept, TextFont);

        if(Accept)
        {
            QTextCharFormat tcf;
            tcf.setFont(TextFont);
            TextQuestion->textCursor().setCharFormat(tcf);
            cbFont.setCurrentFont(TextFont);
        }
        else return 1;
 и другие изменения.
Скачать
Это последняя версия. В Git создана ветка current теперь, все свежие изменения будут там.
PM MAIL WWW ICQ   Вверх
xwicked
  Дата 3.4.2012, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 9.4.2010
Где: Старый Оскол

Репутация: нет
Всего: 1



Здравствуйте! Новый код. Версия 1.0.0 - это первая версия, в которой можно нормально работать с изображениями. Их количество теперь будет ровно таким, каким и должно быть, не больше. 
Повышена безопасность программы перемещением некоторых переменных в секцию private: Теперь доступ к ним осуществляется из методов:
Код
...

int TTextBook::isCountPages() const
{
    return ListPages.count();
}

int TTextBook::isNumberBook() const
{
    return i_NumberBook;
}

void TTextBook::setNumberBook(int iNumberBook)
{
    i_NumberBook = iNumberBook;
}

int TTextBook::isYear() const
{
    return i_Year;
}

void TTextBook::setYear(int iYear)
{
    i_Year = iYear;
    sYear.setNum(iYear);
}

int TTextBook::isCurrentPage() const
{
    return i_CurrentPage;
}

void TTextBook::setCurrentPage(int iCurrentPage)
{
    i_CurrentPage = iCurrentPage;
}

int TTextBook::isModeWork() const
{
    return b_ModeWork;
}

void TTextBook::setModeWork(bool bModeWork)
{
    b_ModeWork = bModeWork;
}

QByteArray TTextBook::isPassword() const
{
    return ba_Password;
}

void TTextBook::setPassword(QByteArray baPassword)
{
    ba_Password = baPassword;
}
...

//Исправлена печать - печатается весь текст :)
void TTextBook::slotPrint()
{
    QPrinter printer;
    QPrintDialog *pPrintDialog = new QPrintDialog(&printer);
    QTextDocument *textDoc = new QTextDocument;
    QString sPrint;

    if(pPrintDialog->exec() == QDialog::Accepted)
    {
        sPrint = makeOneHTML();

        QImage textImage;

        for (int i = 0; i < ListImages.count(); i++)
        {
            textImage.loadFromData(ListImages.at(i));
            textDoc->addResource(QTextDocument::ImageResource, QUrl(slNumberImages.at(i)), textImage);
        }

        textDoc->setHtml(sPrint);
        textDoc->print(&printer);
    }

    delete textDoc;
    delete pPrintDialog;
}
Цитата
- Оптимизирована скорость загрузки книги до 10 раз;
- Исправлена невозможность нормальной работы с изображениями в книге;
- Добавлен экспорт книги в PDF, PostScript, RTF;
- Исправлена печать книги, теперь печатается весь текст;
- Добавлено шифрование файла книги в формате xwb;
- Модуль Шёлковый тест обновился до версии 1.0.0;
- Добавлена возможность проверки наличия новой версии через интернет
Всего 27 изменений. Скачать:
Теперь исходник одним файлом. Вся информация по сборке rpm и deb-пакетов находится внутри.
PM MAIL WWW ICQ   Вверх
xwicked
  Дата 2.2.2013, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 9.4.2010
Где: Старый Оскол

Репутация: нет
Всего: 1



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

Новая версия. 1.0.5. Тут прошу особо протестировать Mac- и Linux-установщики, так как Linux-пакетов больше нет. Скачать
Цитата("Изменения")
- Исправлена ошибка исчезновения всех изображений, при вставке новой страницы;
- Исправлена ошибка когда, при повторном открытии книги, страницы книг объединялись;
- Исправлена ошибка невозможности создания новой книги из списка книг;
- Добавлен пакетный импорт всех книг из указанной папки в базу библиотеки;
- Добавлено сохранение положений панелей инструментов при выходе из программы;
- Удалена совместимость с базами библиотеки версий 0.1.9 и 0.2.5;
- Из сборки удалён модуль «Шёлковый тест». Его теперь нужно скачивать отдельно;

Благодарю!
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Совместные проекты/поиск партнёров"
Snowy
Poseidon

Внимание:
В этом форуме обсуждаются вопросы только по совместным проектам, когда Вы хотите найти партнёров или стать участником проекта.
Запрещается размещение заказов на написание программ, поиск работников (для этого есть раздел "Работа") и реклама своих сетевых ресурсов.

Этот раздел только для проектов в которых Вы будете выступать в качестве исполнителя!

Темы и сообщения, не удовлетворяющие данным правилам, будут удаляться на основании пункта 3 Правил форума!

  • Человек, создающий тему, становится руководителем проекта. Все вопросы о разработке решаются с его согласия.
  • Публикация предложения к сотрудничеству считается защищённым авторскими правами и не может разрабатываться без согласия с руководителем проекта.
  • Конечный продукт должен содержать указание на всех участников и Vingrad.

  • Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, Poseidon

     
    0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
    0 Пользователей:
    « Предыдущая тема | Совместные проекты/поиск партнёров | Следующая тема »


     




    [ Время генерации скрипта: 0.1142 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


    Реклама на сайте     Информационное спонсорство

     
    По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
    Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.