#1 02.08.2011 14:59:35

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

#2 03.08.2011 16:33:21

zenon
Administrator
Зарегистрирован: 04.05.2010
Сообщений: 8 784
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

xwicked, поддержу чем могу.

#3 04.08.2011 13:37:13

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

Продолжаем знакомиться с исходником. Профессиональный кроссворд, версии 0.1.4 - это объединение двух предыдущих: создателя и отгадывателя, с последующей доработкой.
Изменения:
- Добавлена возможность автоматического создания сетки кроссворда(бета-версия).
- Добавлена возможность автоматического составления кроссворда(выбор слов из словаря). Первая бета-версия.
- Присутствуют обе возможности(создание и отгадывыание).

Отмечу, что выбор слов происходит в один проход и могут быть пропуски слов в сетке, после составления кроссворда.

Исходный код + сборки(0.1.4) Отдельный проект на SourceForge.net - Клёст-кроссворд

В Клёст-кроссворде нет возможности сохранять пароль, в то время как в Crossword editor эта возможность есть. Проекты были разделены для большего удобства разработки.

P.S. Профессиональный кроссворд 0.1.7 = Клёст-кроссворд 0.1.7 smile

#4 06.08.2011 09:05:18

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

Следующая версия программы - 0.1.5. Исходный код + сборки.

Изменилась функция составления кроссворда, которая теперь позволяет заполнить всю сетку кроссворда словами.

#5 06.08.2011 10:14:00

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

Структура файла - динамическая. Когда писал программы на Delphi - использовал статику - расходовалось лишнее дисковое пространство .

может просто использовать базу данных?

#6 06.08.2011 10:33:50

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

Структура файла - динамическая. Когда писал программы на Delphi - использовал статику - расходовалось лишнее дисковое пространство .

может просто использовать базу данных?
База данных используется для словаря. Для простого файла кроссворда это будет лишним. Особенно это заметно будет при множественном выборе с экспортом(сохранением) в файл. SQLite возможно дольше будет работать в пределах разных транзакций(/ открытий закрытий файла базы данных).

А в Delphi я использовал запись и не знал, как сделать запись с изменяемыми размерами полей.

#7 06.08.2011 14:40:43

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

SQLite возможно дольше будет работать в пределах разных транзакций(/ открытий закрытий файла базы данных).


да, вы видимо правы.
А в Delphi я использовал запись и не знал, как сделать запись с изменяемыми размерами полей.

в смысле в БД?

#8 06.08.2011 18:00:34

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

...в смысле в БД?
Нет, я не уточнил smile . В Delphi я с БД не работал. Я имел в виду структура record.

#9 06.08.2011 20:19:26

voral
Administrator
Зарегистрирован: 23.02.2010
Сообщений: 1 964
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

Несколько мыслей косметического характера:
1. Может есть смысл сделать список последних открывавшихся файлов? (Готовое решение можно подсмотреть в Qt4: Программирование GUI на с++)
2. crossword.cpp slotUserManual()


UserManual->start("/usr/games/xwcphelp ru");

Жестко на русский привязано

3. slotAboutProgram()
Для какой ОС сборка можно подставить проанализировав Q_WS_*

4. Жестко прописан путь
 int CrosswordPro::SaveCurrentLanguage(QString Language)
       {
            QFile file("/tmp/xwcp/settings.xws");
....
  QFile file("/tmp/xwcp/settings.xws");

                if(file.open(QIODevice::ReadOnly))




4. И почему для хранения настроек не использовали QSettings? Все уже готово. К тому же (если специально не попросить) класс хранит файл настроек в нативном для системы расположении, а так же отрабатывает если нет доступа в один каталог, пробует в другой и т.п. В асистенте это расписано....

5. Форматирование кода у мнея как то местами непонятно идет..... Вроде тот же блок, а отступ больше. Чтение кода затрдняется чуток.....
6. CrosswordToData(uchar State)

    if(State == 0)
                {
                }

            if(State == 1)
                {
                }

            if(State == 2)
                {
                }

State вроде не меняется внутри блоков. Зачем ее тогда три раза проверять? Делайте либо else if либо switch
Кроме того числовые константы зло - используйте enum (имхо) .

7. вообще у вас все пути жестко прописаны от root -плохо

8. Со строками, имхо, лучше немного по другому работать
У вас примерно так

 str1 = QString("INSERT INTO %1 (Number) VALUES(%2);").arg(CurrentTable).arg(strNumber);

#10 07.08.2011 17:46:18

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

...
1. Может есть смысл сделать список последних открывавшихся файлов? (Готовое решение можно подсмотреть в Qt4: Программирование GUI на с++)...

Это будет сделано, возможно в ближайших 3-х релизах. 10 последних открытых файлов.
...
2. crossword.cpp slotUserManual()

UserManual->start("/usr/games/xwcphelp ru");

Жестко на русский привязано...
Да, есть такое. Так как нет в архиве с исходником файла с английским руководством. Это я начал практиковать для сборки deb и rpm пакетов для будущих версий:
//Открытие руководства пользователя
       void KlestCrossword::slotUserManual()
       {
        #if defined(Q_WS_WIN)
            UserManual->start(QApplication::applicationDirPath() + "/help.exe");

        #elif defined(Q_WS_X11)
            if(actionRussian->isChecked() == true)
                UserManual->start("/opt/klest-crossword/klest-help ru");

            if(actionEnglish->isChecked() == true)
                UserManual->start("/opt/klest-crossword/klest-help en");

        #endif
       }
Поэтому обязательно я это сделаю и для остальных сборок.
...
3. slotAboutProgram()
Для какой ОС сборка можно подставить проанализировав Q_WS_*
...
Я уже решил отказаться от этой возможности, так как не считаю необходимым сообщать пользователю, в какой он системе работает. Пусть и дальше думает, что у него Google Android :lol:
...
4. Жестко прописан путь
 int CrosswordPro::SaveCurrentLanguage(QString Language)
       {
            QFile file("/tmp/xwcp/settings.xws");
....
  QFile file("/tmp/xwcp/settings.xws");

                if(file.open(QIODevice::ReadOnly))


4. И почему для хранения настроек не использовали QSettings? Все уже готово. К тому же (если специально не попросить) класс хранит файл настроек в нативном для системы расположении, а так же отрабатывает если нет доступа в один каталог, пробует в другой и т.п. В асистенте это расписано....
Посмотрел на QSettings - постараюсь применить его уже в версии 0.3.1. Раньше я его разглядывал - решил, что слишком много лишнего. Сейчас же вижу, что есть там то, что мне особенно необходимо :)
...
5. Форматирование кода у мнея как то местами непонятно идет..... Вроде тот же блок, а отступ больше. Чтение кода затрдняется чуток.....
Радуйтесь, что Вы не видели оригинал :D - код форматируется после нескольких релизов - и большое значение этому не уделяется - последняя версия 0.2.9 - около 6000 строк. Одному это тяжело и времени много у меня нету.
...
6. CrosswordToData(uchar State)

    if(State == 0)
                {
                }

            if(State == 1)
                {
                }

            if(State == 2)
                {
                }

State вроде не меняется внутри блоков. Зачем ее тогда три раза проверять? Делайте либо else if либо switch
Кроме того числовые константы зло - используйте enum (имхо) . ...
Согласен - спешка была smile Про константы - так, думаю, будет нагляднее.
...
7. вообще у вас все пути жестко прописаны от root -плохо...
С применением QSettings - должно всё нормализоваться.
...
8. Со строками, имхо, лучше немного по другому работать
У вас примерно так

 str1 = QString("INSERT INTO %1 (Number) VALUES(%2);").arg(CurrentTable).arg(strNumber);
Я посчитал этот способ неособо наглядным.

Благодарю за советы. Плюсанул.

#11 07.08.2011 17:56:52

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

В новой версии 0.1.6 - исходник + сборки, добавлен экспорт кроссворда в изображения следующих растровых графических форматов: JPG, JPEG, BMP, TIFF, PNG, XPM, XBM, PPM + несколько других исправлений.

#12 08.08.2011 15:11:15

voral
Administrator
Зарегистрирован: 23.02.2010
Сообщений: 1 964
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

Разговоры про отступы и QtCreator поехали в разговоры http://linuxforum.ru/viewtopic.php?id=15699

#13 08.08.2011 16:21:44

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

А вот и новая версия 0.1.7. Изучаем сборки + код.

Что изменено:

- Временное название "Профессиональный кроссворд" изменено на "Клёст-кроссворд".
- При вводе слова в кроссворд, производится проверка на количество введённых букв в поле "Введите слово".
- В свойствах таблицы кроссворда отключена возможность ввода букв, непосредственно в ячейку, минуя поле "Введите слово".
- Изменены цветовые стили некоторых компонентов.
- В строку состояния добавлен компонент, отображающий количество букв.
- Добавлена проверка состояния сохранения изменений, произведённые в кроссворде, при выходе, используя меню "Кроссворд->Выход".

#14 08.08.2011 17:32:46

voral
Administrator
Зарегистрирован: 23.02.2010
Сообщений: 1 964
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода


- Добавлена проверка состояния сохранения изменений, произведённые в кроссворде, при выходе, используя меню "Кроссворд->Выход".


Видимо вы сделали для этого специальный флаг. Между тем у QMainWindow есть интересные методы

bool    isWindowModified () const
void    setWindowModified ( bool )


А если вы заголовок зададите примерно так

setWindowTitle(tr("Кроссворд: [*] - %1").arg(filename));


То когда будете ставить setWindowModified (true); в заголовке будет видна звездочка, если в false - то она будет автоматом оттуда исчезать

#15 09.08.2011 17:36:48

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

...Видимо вы сделали для этого специальный флаг. Между тем у QMainWindow есть интересные методы

bool    isWindowModified () const
void    setWindowModified ( bool )


А если вы заголовок зададите примерно так

setWindowTitle(tr("Кроссворд: [*] - %1").arg(filename));


То когда будете ставить setWindowModified (true); в заголовке будет видна звездочка, если в false - то она будет автоматом оттуда исчезать
Думаю, что это не будет использоваться:
            connect(TableCrosswordPro, SIGNAL(cellChanged(int,int)), SLOT(slotCellChanged()));
       bool SaveStateCross,//Состояние сохранения кроссворда
            SaveStateTemplate,//Состояние сохранения шаблона
            SaveStateTemporary,//Состояние сохранения отгаданных слов

//При изменении сетки
       void CrosswordPro::slotCellChanged()
       {
           if(gRegimeViewing == false)
               {
                   SaveStateCross = false;
                   SaveStateTemplate = false;
               }
           else SaveStateTemporary = false;
       }
Важно только изменение сетки(таблицы) кроссворда.

#16 09.08.2011 19:35:53

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

Если у кого-нибудь будет желание свою изменённую версию кроссворда далее распространять, то для этой цели я подготовил спекфайл для сборки программы в дистрибутиве ОС Linux, основанного на RPM-пакетах.
Также прошу найти в нём ошибки:

Summary: Qt program for professional creating and easy guessing the classic crossword puzzles.

Summary(ru): Qt программа для профессионального создания редактирования и лёгкого отгадывания классических кроссвордов

%define version 0.1.7

Group: Games/Puzzles

Name: klest-crossword

BuildRequires: gcc-c++, libqt4-sql-sqlite >= 4.4.3, libqtgui4 >= 4.4.3, libqt4-core >= 4.4.3

BuildArch: %ix86

Provides: klest-crossword

Release: alt1

Source: klest-crossword-%{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 guessing the classic crossword puzzles.
Supported features: - Create a crossword puzzle; - Editing a crossword puzzle; - Guessing crossword puzzle; - Check correctness of guessing a crossword puzzle; - Save state incompletely guessed crossword puzzle; - Automatic creation of crossword puzzle grid (beta) - Automatic selection of words from the dictionary (Beta 2); - Adding / removing words from the dictionary; - Conservation created a crossword puzzle grid, as a template for the new; - Editing the font crossword; - Editing the size of the grid cell crossword puzzle; - Export crossword in the image.

%description -l ru
Qt программа для профессионального создания редактирования и лёгкого отгадывания классических кроссвордов
Поддерживаемые функции: - Создание кроссворда; - Редактирование кроссворда; - Отгадывание кроссворда; - Проверка правильности отгадывания кроссворда; - Сохранение состояния неполностью отгаданного кроссворда; - Автоматическое создание сетки кроссворда(бета); - Автоматический выбор слов из словаря(бета 2); - Добавление/удаление слов из словаря; - Сохранение созданной сетки кроссворда, как шаблон для нового; - Редактирование шрифта кроссворда; - Редактирование размера ячейки сетки кроссворда; - Экспорт кроссворда в изображение.

%prep

%setup -q

%build
%make_build

%install

cp -Rv klest/ %buildroot/

%clean

rm -rf $RPM_BUILD_ROOT

%files

/usr/games/*
/usr/share/*

%post

test -e /usr/bin/klest-crossword-0.1.7 || ln -s /usr/games/klest-crossword-0.1.7 /usr/bin/klest-crossword-0.1.7
test -e $HOME/Desktop/klest-crossword.desktop || cp -r /usr/share/applications/klest-crossword.desktop $HOME/Desktop/klest-crossword.desktop

%postun

test -L /usr/bin/klest-crossword-0.1.7 && rm -r /usr/bin/klest-crossword-0.1.7
test -e $HOME/Desktop/klest-crossword.desktop && rm -r $HOME/Desktop/klest-crossword.desktop
Специальный архив версии 0.1.7.
Устанавливаем дополнительный пакет rpm-build и собираем командой в консоли:
$rpmbuild -bb /home/username/RPM/SPECS/klest-crossword-0.1.7-alt.spec

#17 14.08.2011 17:17:32

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

Продолжение: 0.1.8. Исходный код + сборки.

Изменения:

- Изменился алгоритм выбора слов из словаря(бета 3), с небольшой оптимизацией;
- Исправлена ошибка при экспорте кроссворда в изображение;
- Изменилось автоматическое переключение между направлением слов, на ручное - щелчком правой кнопки мыши.

#18 15.08.2011 03:14:34

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

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

Хочу порадовать Вас тем, что я сделал дополнительный архив исходного кода, для сборки программы в ОС GNU / Linux Debian( / Ubuntu).
Для сборки deb-пакета необходимо наличие установленных пакетов: autotools-dev, dh-make, fakeroot, cdbs, dpkg, dpkg-dev и другие.
Команда сборки:

user@pc:/klest-crossword-0.1.9-deb$ dpkg-buildpackage -rfakeroot

Для проверки правильности соответствия стандартам дистрибутива Debian, используйте пакет Lintian.

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

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

#19 17.08.2011 18:22:33

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

Следующая версия = 0.2.0.

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

Важное изменение: добавление значков Oxygen. Ещё добавлены 2-а новых словаря: русский на 31 000 слов и английский на 41 000 слов. Теперь программа выглядит вот так -


Произведённые изменения:

- Добавлены значки "Oxygen", распространяемые по лицензии GNU GPL;
- Исправлена ошибка экспорта кроссворда в изображение форматов JPG, JPEG, TIFF;
- Добавлена возможность выбора словаря для составления кроссворда. Возможные варианты: русский и английский;
- Изменена стандартная панель - добавлены несколько новых действий, исправлены ошибки;
- Изменён формат файла свойств программы, в сторону более простого добавления в него будущих свойств.

#20 17.08.2011 21:11:00

voral
Administrator
Зарегистрирован: 23.02.2010
Сообщений: 1 964
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

#21 17.08.2011 21:14:13

voral
Administrator
Зарегистрирован: 23.02.2010
Сообщений: 1 964
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

Компилируем - запускаем:
[console]
Object::connect: No such slot KlestCrossword::ListEditRow()
Object::connect: (sender name: 'ListQuestions')
Object::connect: (receiver name: 'KlestCrossword')
[/console]

#22 17.08.2011 21:26:02

voral
Administrator
Зарегистрирован: 23.02.2010
Сообщений: 1 964
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

О программе переделали... гуд. Но где ж дейстующие ссылки? Юзайте html, все странички отправьте ресурсы, а на форме оставьте вместо четырех полей один QWebView. B загружай нужный в соответствии с вкладкой. А дальше:


browser->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);
connect(browser,SIGNAL(linkClicked(QUrl)),this,SLOT(openLink(QUrl)));
......

void About::openLink(const QUrl & url )
{
    QDesktopServices::openUrl(url);
}

#23 17.08.2011 21:31:57

voral
Administrator
Зарегистрирован: 23.02.2010
Сообщений: 1 964
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

Расширения стандартных файлов приложения прописаны живьем по всему проекту. То же не гуд. Работа с файлом настроек раскидана по проекту......

"Ты только не обижайся, но я тебе один умный вещь скажу" (с) Мимно

Не гоните сейчас версии трех разных программ. Притормозите и приведите проекты в порядок.

#24 18.08.2011 09:17:56

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

voral, со всем в принципе я согласен. Прокомментирую некоторые моменты:
- Свойства, цифры, смешение и main.cpp - нужно чуть изменить и сделать в одном месте загрузку, в другом сохранение.
- коннект ListEditRow() тоже удалю
- Использовать QWebView ради кликабельных ссылок глупо. Должен быть другой способ. Чтобы не добавлять пока новых библиотек к Win и Mac версиям в сборки.
- Живые расширения можно закопать в константы, будет небольшая экономия

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

Текущая дата 18.08.2011. Данные Cahngelog'ов:
Тест - Версия 0.4.4 (10.05.2011);
Кроссворд - Версия 0.2.9 (18.02.2011);
Библиотека - Версия 0.1.9 (02.01.2011);
-------------------------
Это уже большуууууууший тормоз. Для этого я и пришёл на форум. Потом все комменты соберу - будет новый хороший релиз каждой программы.

Благодарю за советы :)

#25 18.08.2011 09:49:18

voral
Administrator
Зарегистрирован: 23.02.2010
Сообщений: 1 964
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

- Использовать QWebView ради кликабельных ссылок глупо. Должен быть другой способ. Чтобы не добавлять пока новых библиотек к Win и Mac версиям в сборки.


    QTextBrowser *br = new QTextBrowser(this);
    br->document()->setHtml("<a href=\"ya.ru\">ya</a><br><a href=\"http://google.ru\">google</a>");
    br->setOpenExternalLinks(true);

;)

#26 25.08.2011 14:55:13

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

- Использовать QWebView ради кликабельных ссылок глупо. Должен быть другой способ. Чтобы не добавлять пока новых библиотек к Win и Mac версиям в сборки.


    QTextBrowser *br = new QTextBrowser(this);
    br->document()->setHtml("<a href=\"ya.ru\">ya</a><br><a href=\"http://google.ru\">google</a>");
    br->setOpenExternalLinks(true);

;)

Этот способ пока что не пойдёт.
-----------------------------------------------
Программа доведена до стабильности. Релиз 0.2.1. Исходник + сборки.

Все изменения:
- Исправлена фатальная ошибка, возникающая при повторном автоматическом выборе слов, после автоматического создания сетки;
- Исправлена ошибка алгоритма выбора слов из словаря;
- Исправлена ошибка автоматической вставки слов в сетку кроссворда;
- Исправлена ошибка неправильного ввода слова в сетку кроссворда, при повторных нажатиях на кнопку "ОК";
- Исправлена ошибка экспорта в изображения, при ручном создании кроссворда;
- Исправлена ошибка передачи текущего шрифта в диалог выбора шрифта, при его открытии;
- Оптимизирован алгоритм автоматического создания сетки кроссворда;
- Оптимизирован алгоритм автоматического выбора слов из словаря;
- Оптимизированы алгоритмы: создания, изменения, сохранения, открытия, закрытия кроссворда;
- Изменён формат файла кроссворда и формат файла сохранения состояния неполностью отгаданного кроссворда;
- Для повышения интереса к игровому процессу, после проверки правильности отгадывания, кроссворд закрывается.

#27 03.09.2011 19:53:52

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

А в новой версии 0.2.2 я реализовал импорт кроссворда из текстового формата AcrossLite первой версии. Вторая версия будет загружаться, но за исключением дополнительной головоломки.

Что нового:

- Появилась возможность импортировать кроссворд, из текстового формата AcrossLite;
- Исправлена фатальная ошибка, не позволяющая создавать кроссворды больше чем 18х18;
- В меню "Помощь" добавились пункты: "Пожертвовать" и "Получить исходный код";
- Сохранение состояния неполностью отгаданного кроссворда AcrossLite(TXT) имеет своё расширение, при оставленной той же структуре файла;
- В окне о программе все ссылки изменили свой цвет на синий, для удобства поиска;
- Появилась возможность вводить слово в сетку кроссворда, нажатием на клавишу "Ввод".
Дабы быть уверенным в том, что файлы не побились, при закачке, я добавил текстовик с md5-контрольными суммами.
Git-репозиторий:
git://klest-crossword.git.sourceforge.net/gitroot/klest-crossword/klest-crossword (read-only)

#28 07.11.2011 22:36:05

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

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

- Добавлена возможность полуавтоматического ввода слов из словаря;
- Добавлена возможность печати кроссворда;
- Добавлены горячие клавишы;
- Увеличен максимальный размер кроссворда до 999х999х999(столбцы/строки/размер ячейки);
- Во избежании ошибки, теперь после отмены выбора слов нельзя сделать экспорт в изображение;
- После отладки, возвращено автоматическое определение направления слов при выделении, убранное в версии 0.1.8;
- Добавлена возможность ввода имени игрока;
- Добавлена статистика;
- Исправлена ошибка неисчезновения пунктов меню автоматизации, в режиме просмотра;
- Исправлена ошибка, при ручном вводе слов в кроссворд;
- Добавлен пункт меню "Получить техподдержку";
- Некоторые окна теперь не разворачиваются на весь экран по-умолчанию. Изменились также размеры нескольких окон.
В новой версии 0.2.7 Появилась возможность печати кроссворда. Хочу обратить особое внимание на тестирование этой функции, так как у меня дома нету принтера. Очень интересно, как ведёт себя печать на разных принтерах под всеми ОС.
Полуавтоматический ввод слов позволит создавать тематические кроссворды и задавать различную сложность, при составлении.

P.S. Ещё один очень важный момент: версии 0.2.7, 0.2.8 - сборки являются минимальными. То есть, чтобы посмотреть на все функции, необходимо программу собрать из исходника . Это делалось для проверки аудитории пользователей на заинтересованность в программе, путем отправки мне запроса на получение исходного кода. Что было не очень удачной идеей и, с версии 0.2.9, сборки программы уже снова полнофункциональны. Прошу извинить меня за данное неудобство :o .

#29 26.11.2011 20:57:49

xwicked
Administrator
Зарегистрирован: 02.08.2011
Сообщений: 114
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

В версии 0.2.8 я добавил функции горизонтального и вертикального отражения кроссворда как изображения. Так же добавил инверсию цветов ячеек сетки кроссворда. Но... я не смог быстро придумать функцию обрезания сетки кроссворда, если он, например, получился меньше созданных рамок. Интересует самое простое решение данного вопроса. Благодарю!

Ещё изменения:

- Добавлена возможность рисования сетки, как карандашом;
- Добавлена функция автоматического создания, сохранения и экспорта неограниченного числа кроссвордов из одного шаблона по нажатии одной клавиши, предварительно установив соотвествующие настройки;
- Добавлены функции очистки слов, сетки и всего кроссворда;
- Добавилось окно "Параметры";
- Выбор словаря перенесён в окно "Параметры";
- Добавлена возможность выбора папки, из которой будут показываться шаблоны, для последующего их использования;
- Добавлена возможность задания пути для экспортируемого изображения в окне "Параметры";
- Добавлена возможность задания папки для экспорта вопросов и ответов в окне "Параметры";

#30 26.11.2011 21:27:02

voral
Administrator
Зарегистрирован: 23.02.2010
Сообщений: 1 964
IP-адрес

Программа для создания кроссвордов, Обсуждение программы и кода

Но... я не смог быстро придумать функцию обрезания сетки кроссворда, если он, например, получился меньше созданных рамок. Интересует самое простое решение данного вопроса. Благодарю!

Это про отражение? Вы надеюсь используете QGraphicsScene и компанию? (там вроде как и задумываться не надо)
А си про сам кроссворд - зачем обрезать? Либо масштабировать - либо прорутку делать.

Board footer