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

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

Страниц: 1 ... 5 6 [7] 8 9 10   Вниз
  Печать  
Автор Тема: Допиливаем Qt Creator  (Прочитано 106427 раз)
b-s-a
Гость
« Ответ #90 : Июль 16, 2012, 15:06 »

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

Теперь у меня возник вопрос как это грамотно сделать в джите?
git checkout (для смены ветки) или git reset --hard (для отката назад внутри ветки) тебе поможет. Рекомендую сразу работать относительно 2.5.х, а не откатывать мастер (так как 2.5 включает ряд поздних изменений).

И не надо все изменения в одно место сваливать. Я про "русский в todo", "табы", "миниатюры" и пр. Их нужно делать раздельно (в разных ветках). Легче будет включить в основное дерево проекта.
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #91 : Июль 16, 2012, 17:59 »

git checkout (для смены ветки) или git reset --hard (для отката назад внутри ветки) тебе поможет. Рекомендую сразу работать относительно 2.5.х, а не откатывать мастер (так как 2.5 включает ряд поздних изменений).
Ну так я и делаю. Переключился на ветку 2.5 и наши коммиты туда вбросил.

И не надо все изменения в одно место сваливать. Я про "русский в todo", "табы", "миниатюры" и пр. Их нужно делать раздельно (в разных ветках). Легче будет включить в основное дерево проекта.
Если функционал размазать по веткам, то как потом пользоваться? И поддерживать N веток гораздо сложнее чем одну. Может есть какой-то способ группировать коммиты, чтобы потом быстро найти нужный ряд коммитов и что-то с ним сделать.? Тэги подойдут?
Записан

Гугль в помощь
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #92 : Июль 16, 2012, 20:45 »

Цитировать
Тэги подойдут?
Нет.

Цитировать
Если функционал размазать по веткам, то как потом пользоваться?
Для минимапа и табов сделать два отдельных плагина и пользоваться.
Плагины пока можно сделать отдельными проектами, а в будущем, когда они дойдут до кондиции,
то их можно вмержить в текущий Git креатора и представить на Gerrit.
В чем проблема?

Для остальных фич, фиксы сгруппировать по функциональности и сделать отдельные ветки для них,
и аналогично, когда дойдут до кондиции то в Gerrit хлопцам показать.

Приаттачиваю набросок плагина с минимапом, а также картинки, что получилось (предварительно).


Записан

ArchLinux x86_64 / Win10 64 bit
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #93 : Июль 16, 2012, 20:48 »

Вот еще
Записан

ArchLinux x86_64 / Win10 64 bit
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #94 : Июль 16, 2012, 23:04 »

kuzulis, может на gitorious зальешь? Наша группа в шапке указана )
Записан

Гугль в помощь
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #95 : Июль 17, 2012, 10:51 »

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

Аналогично исходникам плагина минимапа можно сделать и плагин табов, где просто размещать виджеты редактора в табах, т.е. подсовывать в качестве центрального виджета таббар. Тем самым можно реализовать фичу типа drag&drop, когда мы мышой можем зацепить любую вкладку и переместив ее куда нить, создать отдельное окно. Улыбающийся

В принципе, шаблон табов у меня тоже есть, но он самый самый простой, ничего не делает еще...  Строит глазки
Записан

ArchLinux x86_64 / Win10 64 bit
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #96 : Июль 17, 2012, 11:52 »

Не, ты ж там рулишь - вот и залей исходники, я для этого и выложил их на форум. Или добавь меня в группу чтобы я там создал проект плагина.
Добавил в группу )

https://gitorious.org/+progorg-developers

Аналогично исходникам плагина минимапа можно сделать и плагин табов, где просто размещать виджеты редактора в табах, т.е. подсовывать в качестве центрального виджета таббар. Тем самым можно реализовать фичу типа drag&drop, когда мы мышой можем зацепить любую вкладку и переместив ее куда нить, создать отдельное окно. Улыбающийся

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

А я сейчас пока пытаюсь в gerrit протолкнуть свой коммит.
Записан

Гугль в помощь
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #97 : Июль 17, 2012, 13:24 »

Все, добавил проект Минимапы https://gitorious.org/qt-creator-minimap-plugin
Записан

ArchLinux x86_64 / Win10 64 bit
VPS
Гость
« Ответ #98 : Июль 20, 2012, 19:23 »

Здравствуйте, решил немного допилить креатор под себя.
Задача заключалась в том, чтобы при закрытии проекта также закрывались открытые документы, являющиеся его частью... Хотел оформить решение в виде отдельного плагина, но пока не могу понять как...
Вместо этого нашёл в исходниках самого креатора место (файл "projectexplorer.cpp"), где внес небольшое изменение.
А именно:
Код:
void ProjectExplorerPlugin::unloadProject()
{
    if (debug)
        qDebug() << "ProjectExplorerPlugin::unloadProject";

    if (buildManager()->isBuilding(d->m_currentProject)) {
        QMessageBox box;
        QPushButton *closeAnyway = box.addButton(tr("Cancel Build && Unload"), QMessageBox::AcceptRole);
        QPushButton *cancelClose = box.addButton(tr("Do Not Unload"), QMessageBox::RejectRole);
        box.setDefaultButton(cancelClose);
        box.setWindowTitle(tr("Unload Project %1?").arg(d->m_currentProject->displayName()));
        box.setText(tr("The project %1 is currently being built.").arg(d->m_currentProject->displayName()));
        box.setInformativeText(tr("Do you want to cancel the build process and unload the project anyway?"));
        box.exec();
        if (box.clickedButton() != closeAnyway)
            return;
        buildManager()->cancel();
    }

    Core::IDocument *document = d->m_currentProject->document();

    if (!document || document->fileName().isEmpty()) //nothing to save?
        return;

    QList<Core::IDocument*> documentsToSave;
    documentsToSave << document;
    bool success = false;
    if (document->isFileReadOnly())
        success = Core::DocumentManager::saveModifiedDocuments(documentsToSave).isEmpty();
    else
        success = Core::DocumentManager::saveModifiedDocumentsSilently(documentsToSave).isEmpty();

    if (!success)
        return;

    addToRecentProjects(document->fileName(), d->m_currentProject->displayName());

    //========================= НАЧАЛО КОДА ================================

    //почему-то при вызове Core::ICore::editorManager()->closeEditors(editors)
    //меняется текущий проект.
    //поэтому данный вызов приходится делать здесь, а не ниже

    QStringList filesList(currentProject()->files(Project::AllFiles));

    //========================= КОНЕЦ КОДА =================================

    d->m_session->removeProject(d->m_currentProject);
    updateActions();

    //========================= НАЧАЛО КОДА ================================

    QList<Core::IEditor*> editors;

    foreach(QString file, filesList)
    {
        editors << Core::ICore::editorManager()->editorsForFileName(file);
    }

    if(!Core::ICore::editorManager()->closeEditors(editors))
        return; // Action has been cancelled

    //========================= КОНЕЦ КОДА =================================
}


П.С.: изменения находятся между комментариями "НАЧАЛО КОДА" и "КОНЕЦ КОДА"

Сам считаю, что внесение изменений в код самого креатора - не очень хороший тон. Может кто-нибудь подскаажет, как можно реализовать данную задачу с использованием отдельного плагина?
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #99 : Июль 20, 2012, 19:36 »

Ну для плагина здесь как-то маловато смысла, да и кроме как патчем здесь ничем не обойтись.

Тут главное, чтобы это была опциональная штука (в настройках можно было бы включать и выключать).

Допили опцию в диалог настройки и я включу твой патч к нам.
« Последнее редактирование: Июль 20, 2012, 19:38 от navrocky » Записан

Гугль в помощь
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #100 : Июль 20, 2012, 19:57 »

Первый win: https://codereview.qt-project.org/#change,30572  Веселый

Поздравляю Сергея!
Записан

Гугль в помощь
b-s-a
Гость
« Ответ #101 : Июль 20, 2012, 20:46 »

Тут главное, чтобы это была опциональная штука (в настройках можно было бы включать и выключать).
Настройку предлагаю следующего вида: При закрытии проекта закрывать открытые документы: Никогда, Спросить, Всегда.
Записан
VPS
Гость
« Ответ #102 : Июль 22, 2012, 00:17 »

Ну для плагина здесь как-то маловато смысла, да и кроме как патчем здесь ничем не обойтись.

Тут главное, чтобы это была опциональная штука (в настройках можно было бы включать и выключать).

Допили опцию в диалог настройки и я включу твой патч к нам.

Всё-таки получилось вынести функциональность в отдельный плагин, т.е. не надо менять исходники креатора... Веселый
На счёт настроек: Вы имеете в виду вынос настройки в Core::IOptionsPage?
Записан
b-s-a
Гость
« Ответ #103 : Июль 22, 2012, 22:48 »

Лично я не уверен в необходимости делать из этого отдельный плагин. Не стоит оно того. А про опции ты правильно понял. Думаю, в общем разделе ей самое место
Записан
VPS
Гость
« Ответ #104 : Июль 23, 2012, 02:22 »

Лично я не уверен в необходимости делать из этого отдельный плагин. Не стоит оно того.

Уже сделал в виде плагина (что и планировал)...
Настройку поместил  в меню: "Tools" -> "Project Files" и уже в нём чекбокс с возможностью выбора вкл/откл опции...

Варианты работы:
а. если все файлы сохранены, то  при закрытии проекта все они закрываются.
б. если есть не сохранённые файлы, то при закрытии проекта будет стандартное меню с вопросом о сохранении (Сохранить,  Не сохранять, Отмена). При выборе "Сохранить" или "Не сохранять" все файлы закроются (с сохранением или нет). При выборе "Отмена" - файлы останутся открытыми.

П.С.: крайняя версия исходников плагина доступна на bitbucket.org вот здесь.

« Последнее редактирование: Февраль 27, 2014, 12:18 от vps » Записан
Страниц: 1 ... 5 6 [7] 8 9 10   Вверх
  Печать  
 
Перейти в:  


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