Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: vaginoid2 от Январь 26, 2010, 18:23



Название: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: vaginoid2 от Январь 26, 2010, 18:23
Здравствуйте!
Пользуюсь Qt уже давно, и возник следующий вопрос: как увеличить размер окна дополнения кода в QtCreator (вызываемый по Ctrl+Space), а то он маловат - всего 10 строк.

С уважением, zdo.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: niXman от Январь 26, 2010, 19:16
кстати да, сам задавался таким вопросом.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: xokc от Январь 26, 2010, 21:20
Вариант найти в исходниках, исправить и пересобрать  - не предлагать?


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: vaginoid2 от Январь 26, 2010, 22:11
Если будете предлагать, будьте любезны, укажите {файл|функцию|переменную} в базе исходников, где необходимо копать  ;)
А то я не нашел.



Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: crackedmind от Январь 27, 2010, 04:26
Да было бы не плохо если б кто-то патч сделал, с выводом этого в настройки :) Затем отправить мерж реквест на гиториосе, глядишь в следующей мажорной версии этот патч и включат))


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: SABROG от Январь 27, 2010, 10:16
Полагаю здесь: $QTCREATOR/src/plugins/texteditor/texteditorplugin.cpp

Код
C++ (Qt)
#define NUMBER_OF_VISIBLE_ITEMS 10
 

Да было бы не плохо если б кто-то патч сделал, с выводом этого в настройки :) Затем отправить мерж реквест на гиториосе, глядишь в следующей мажорной версии этот патч и включат))

Это плагино-зависимые настройки, если плагин сам добавляет свою страницу настроек в "параметры", то есть смысл его изменить, а если элементы в "Редактор кода" жестко проставлены в creator'e, то нужно придумывать другой способ. Например как в Инструменты->Редактор форм->Настройки формы. Иначе при использовании стороннего плагина для редактирования кода настройка окажется бесполезной и вообще не к месту. Кроме того надо будет менять систему загрузки и сохранения параметров/конфигурации.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: crackedmind от Январь 27, 2010, 12:55
Цитировать
Это плагино-зависимые настройки, если плагин сам добавляет свою страницу настроек в "параметры", то есть смысл его изменить, а если элементы в "Редактор кода" жестко проставлены в creator'e, то нужно придумывать другой способ.

Добавляет конечно. Глянь пункт "Text editor" в настройках :)


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: SABROG от Январь 27, 2010, 13:59
Цитировать
Это плагино-зависимые настройки, если плагин сам добавляет свою страницу настроек в "параметры", то есть смысл его изменить, а если элементы в "Редактор кода" жестко проставлены в creator'e, то нужно придумывать другой способ.

Добавляет конечно. Глянь пункт "Text editor" в настройках :)

Она то там есть. Но если человек поставит свой плагин для редактирования кода останется ли она там (страница настроек редактора)?


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: crackedmind от Январь 27, 2010, 14:08
TextEditor базовый плагин для плагинов редакторов кода. И должны на нем основыватся.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: vaginoid2 от Январь 27, 2010, 17:19
Цитировать
Полагаю здесь: $QTCREATOR/src/plugins/texteditor/texteditorplugin.cpp
#define NUMBER_OF_VISIBLE_ITEMS 10

Спасибо! Сегодня вечером посмотрю.
Если это так, то можно сделать следующее:
Изменить
 #define NUMBER_OF_VISIBLE_ITEMS 10
на, например,
 uint_32 NUMBER_OF_VISIBLE_ITEMS = 10;
и найти функцию, которая использует данный параметр. В этой функции вместо просто жесткого подставления значения NUMBER_OF_VISIBLE_ITEMS дописать код, считывающий значение из файла (например, "%QTDIR%/vis_items_count") и сохраняющий его в эту переменную, а далее так как есть.
То есть, для того чтобы изменить число видимых элементов, надо изменить файл и перезапустить QtCreator.

Вечером посмотрю, возможно ли это сделать.

Я считаю, делать плагин - это хорошо, но, возможно, прийдется сделать ГОРАЗДО больше, чем я написал выше.
Лично мне все равно, где находятся настройки и как я их буду редактировать - на форме или в конфиге. Думаю, усложнять жизнь написанием плагинов не стоит, а сделать маленькую заплатку, позволяющую изменять искомый параметр - это правильный вариант.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: vaginoid2 от Январь 27, 2010, 19:27
Ура  :D, у меня получилось нечто:
(http://img251.imageshack.us/img251/6227/qt2.png)
(http://img638.imageshack.us/img638/3592/qt3.png)

Первый скрин - я добавил опцию - она выделена.
Второй - как это выглядит.

Измененные исходники: http://depositfiles.com/ru/files/j5sb5wabq

Там недоработано сохранение изменений после выхода - доработаю в последствие.
Слушаю ваши мнения.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: niXman от Январь 27, 2010, 19:31
супер!
доделай, и троллям высылай)


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: niXman от Январь 27, 2010, 19:33
vaginoid2, не могли бы вы перезалить архив куда-то типа rghost.ru ;)
а то на depositfiles.com меня забанили ;D


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: vaginoid2 от Январь 27, 2010, 19:46
Пожалуйста: http://rghost.net/898443 (http://rghost.net/898443).

Кто будет компилить, учтите - это сорцы для qt 4.6.
SABROG писал:
Цитировать
Полагаю здесь: $QTCREATOR/src/plugins/texteditor/texteditorplugin.cpp
#define NUMBER_OF_VISIBLE_ITEMS 10
Но это объявление было у меня в файле completionwidget.cpp. Скорее всего у SABROG другая версия qt.

Файлы из архива нужно скопировать в (по аналогии): /home/zdo/Download/qt-creator-1.3.1-src/src/plugins/texteditor.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: SABROG от Январь 27, 2010, 20:18
Но это объявление было у меня в файле completionwidget.cpp. Скорее всего у SABROG другая версия qt.

Да нет, та же версия. Просто у меня было одновременно открыто несколько исходников и я не туда посмотрел.

У меня другое предложение. Почему бы вместо этой настройки не добавить в этот CompletionWidget обычный QSizeGrip(), чтобы получилось как я делал здесь:

(http://wiki.crossplatform.ru/images/0/0f/Qsizegripml5.gif)

А уже измененный размер сохранять при выходе и загружать при входе в Creator.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: b-s-a от Январь 27, 2010, 21:25
vaginoid2, надеюсь ты не сделал NUMBER_OF_VISIBLE_ITEMS банально (глобальной) переменной? Просто в этом случае твои изменения будут отклонены троллями, так как стиль именования не соответствует требованиям.
Вариант SABROG тоже интересный, но не лишен потенциальных проблем. Что будет, например, если по каким-то причинам подсказка растянется так, что ухватить ее за угол. Поэтому было бы здорово, чтобы это было и настройкой, и можно было растягивать.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: vaginoid2 от Январь 27, 2010, 21:49
NUMBER_OF_VISIBLE_ITEMS и так была глобальной переменной (однако объявлена в cpp-файле)(точнее это я ее сделал ПЕРЕМЕННОЙ, раньше она была просто define'ом).
Я просто сделал статические паблик методы доступа для этой переменной из класса, который ее использует по прямому назначению - ComplectionWidget. Эти методы вызываются во время сохранения настроек при закрытии окна опций и один раз во время создания TabSettings (пришлось это сделать принудительно, а то настрока инициализировалась только после открытия-закрытия окна опций).
Я не помню уже, какие файлы изменял, поэтому выкладываю архив всей папки .../src/plugins/texteditor.
Также для тех, кто не хочет самостоятельно собирать QtCreator, я выкладываю два файла, которыми нужно заменить старые файлы: по пути (поменяйте по аналогии) /home/zdo/qtsdk-2010.01/lib/qtcreator/plugins/Nokia лежат два файла: libCppEditor.so и libTextEditor.so. Замените их файлами из архива и запустите QtCreator. Появится новая опция как на первом скрине - изменять ее.

Сейчас сижу под Линуксом, буду в винде - проверю как работает. Или проверьте кто-нибудь, заменив собранные мной библиотеки.

ZdoPatch_src.tar.gz - сжатая папка .../src/plugins/texteditor.
ZdoPatch_bin.tar.gz - два файла, которыми нужно заменить одноименные в папке %QTSDK%/lib/qtcreator/plugins/Nokia.

Отпишитесь, кто попробовал.

И еще: объясните пожалуйста, или киньте линк, как работает схема включения внешних исходников в главную ветку у Qt (если надумаю отправлять исходники в Qt)?

http://rghost.net/899150 - ZdoPatch_bin.tar.gz (425 KB)
http://rghost.net/899152 - ZdoPatch_src.tar.gz (5 MB)

2 SABROG:
Ваш вариант тоже интересен, однако я увидел, что ширина окошка автодополнения регулируется автоматически, причем по необходимости - то есть будет ширина под максимальную длину строки.
Я решил сделать иначе, чем у Вас на картинке, поскольку опция, которую я вывел в окно настроек, просто указывает _максимальную_ высоту окна автодополнения в строках. Я лично никогда не сталкивался с необходимостью изменять размер окна автодополнения с помощью sizegrip'а.
Хотя я попробовал реализовать Ваш вариант, сделав в свойствах окна автодополнения не Popup, а Window. Да, размер стало можно изменять, но слишком большой стала строка заголовка - загораживала код. Возможно, есть способ реализовать Вашу идею иначе и грамотнее, чем это сделал я, но я решил остановиться на своем варианте.

P.S. Кстати, спасибо niXman за ссылку на rghost.ru - я не знал  :).


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: niXman от Январь 27, 2010, 22:08
ubuntu-9.10, бинарник работает. спасибо.
неплохо бы еще в ширину изменять. а то при работе с boost мало что понятно)

Цитировать
P.S. Кстати, спасибо niXman за ссылку на rghost.ru - я не знал
всегда пожалуйста. раздаю только по блату ;D никакой рекламы. возможность создавать свои коллекции файлов. так же приватные файлы поддерживаются. объем одного файла до 200мб. суммарный объем коллекции неограничен(в пределах разумного конечно ;) )

Цитировать
однако я увидел, что ширина окошка автодополнения регулируется автоматически, причем по необходимости - то есть будет ширина под максимальную длину строки.
что-то у меня ничего не расширяется :(


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: vaginoid2 от Январь 27, 2010, 22:29
Цитировать
что-то у меня ничего не расширяется
Я имел ввиду, что обновление ширины окна автодополнения происходит при:
1. Нажатии ctrl+space;
2. Печатании букав при открытом окошке автодополнения (в этом случае список сокращается под набранный шаблон).

Если же нажать ctrl+space и  прокручивать список, например, колесиком, то тогда да, ширина не изменяется под максимум.
Если я правильно понял исходник, то Вы сделали так, как я написал в предыдущем предложении. Попробуйте сделать как во втором пункте.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: niXman от Январь 27, 2010, 22:35
да, и правда расширяется.
еще раз спасибо.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: vaginoid2 от Январь 27, 2010, 22:37
Пожалуйста. Сам сейчас пишу с помощью boost'а, поэтому немного удивился Вашей проблеме  :).


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: b-s-a от Январь 27, 2010, 22:47
NUMBER_OF_VISIBLE_ITEMS и так была глобальной переменной (однако объявлена в cpp-файле)(точнее это я ее сделал ПЕРЕМЕННОЙ, раньше она была просто define'ом).
Разницу между макросом и переменной знаешь? По стилю кодирования принятому в Qt они должны различаться. Переменная должна быть camelCase, а макрос большими буквами с подчеркиваниями.
Статические переменные это плохо. Поэтому лучше сделать этот параметр атрибутом класса. Я понимаю, что это сложней, но это правильно. И не будет в виде костыля.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: vaginoid2 от Январь 27, 2010, 22:56
Флаг Вам в руки.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: biz_0n от Февраль 15, 2010, 23:57
а возможно как-нибудь сделать авто дополнение кода не по нажатию Ctrl+Space, а автоматически?


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: b-s-a от Февраль 16, 2010, 17:10
а возможно как-нибудь сделать авто дополнение кода не по нажатию Ctrl+Space, а автоматически?
Конечно. Допиши штатное автодополнение и добавь галочку в настройки для включения автоматического режима.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: biz_0n от Февраль 16, 2010, 19:32
Почему-то я ждал такого ответа, ну ладно, наверное придётся рыться в коде. Может кто-то подскажет в каком направлении копать?


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: b-s-a от Февраль 16, 2010, 21:11
Может кто-то подскажет в каком направлении копать?
В направлении плагинов cppeditor и texteditor (completionsupport.*).


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: biz_0n от Февраль 16, 2010, 21:22
да, спасибо. Нашёл то, что нужно в файле /src/plugins/texteditor/texteditorplugin.cpp
там есть такие строки
Код:
// Make sure the shortcut still works when the completion widget is active
    completionShortcut->setContext(Qt::ApplicationShortcut);
    Core::Command *command = am->registerShortcut(completionShortcut, Constants::COMPLETE_THIS, context);
#ifndef Q_WS_MAC
    command->setDefaultKeySequence(QKeySequence(tr("Ctrl+Space")));
#else
    command->setDefaultKeySequence(QKeySequence(tr("Meta+Space")));
#endif
    connect(completionShortcut, SIGNAL(activated()), this, SLOT(invokeCompletion()));

идея примерно такая, нужно заменить QKeySequence(tr("Ctrl+Space")) на весь алфавит, но тут возникла другая проблема, при нажатии на клавиши вызывается окно авто дополнения, но сама буква не печатается. Как с этим бороться?


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: b-s-a от Февраль 17, 2010, 00:42
Думаю, не надо пытаться отлавливать буквы. Нужно активировать автодополнение, например, после набора 3-5 первых символов.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: biz_0n от Февраль 17, 2010, 02:06
ну может быть, хотя я как-то привык к мгновенно открывающемуся меню автодополнения, как-то быстрее пишется :)


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: b-s-a от Февраль 17, 2010, 11:50
ну тогда по первой букве (лучше повесить на настройку). Посмотри, как делается "дополнение" в случае нажатия набора точки или ->


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: biz_0n от Февраль 18, 2010, 00:57
мдяя, что-то сложновато мне разобраться в этом, ладно, может позже займусь.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: b-s-a от Февраль 18, 2010, 12:32
Запости (только сначала поищ) хотя бы предложение на багтрекере.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: biz_0n от Февраль 28, 2010, 02:22
Разобрался я с этим автодополнением, там оказалось всё не так сложно, полностью разобрался и реализовал всё за одну пару. Теперь можно включать/отключать автоматическое дополнение и изменять номер символа, после которого оно будет включаться. Завтра всё красиво оформлю, допишу настройку для увеличения окна дополнения кода и выложу исходники.

Сейчас думаю как сделать автодополнение регистронезависимым.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: b-s-a от Март 01, 2010, 00:04
Ты не код выкладывай, а MergeRequest сделай.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: biz_0n от Март 01, 2010, 00:36
Может я сейчас и туплю, но что это такое?


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: crackedmind от Март 01, 2010, 09:23
Запрос на внесение твоего кода в основную ветку Qt Creator на gitorious :)

Ну и кстати.
(http://rghost.ru/1074366/thumb.png) (http://rghost.ru/1074366.view)


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: b-s-a от Март 01, 2010, 14:04
Может я сейчас и туплю, но что это такое?
Вот тут (http://www.prog.org.ru/topic_10110_0.html) описано, что нужно для этого сделать. Кстати, рекомендую вносить изменения относительно ветки мастер, а не тех исходников, что есть у тебя.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: b-s-a от Март 17, 2010, 12:27
biz_0n, как успехи? Что-то я еще не встречал в Qt Creator результатов твоей работы. Думаю, многим бы она понадобилась. Если не можешь разобраться, как отправить изменения разработчикам, то пиши в ПМ, расскажу.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: niXman от Март 17, 2010, 13:58
прошу прощения за оффтоп.

скажите, помнится мне, где-то на форуме, выкладывали ссылку на инфу по написанию плагинов для криейтора. не ткнете носом? ;)


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: biz_0n от Март 19, 2010, 15:46
у меня просто не было времени отправить, да я сильно и не разбирался как там отправлять. В принципе нужно этим заняться. Постараюсь на выходных выложить. Там ещё пару строк подпилить нужно.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: skydion от Март 23, 2010, 15:01
Ну, а все таки идейку сделать окно выпадания с резайзом можно сделать?
А то попадаются класы в которых доплонение глючит, тоесть окрывается слишком узкое окно
в QPrinter вроде можно глянуть в чем проблема.

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


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: biz_0n от Март 24, 2010, 11:35
там с сохранением настроек проблем вроде никаких нету, там есть два метода initialize и shutdown. Такие методы есть во всех плагинах в файлах под названием *название плагина*plugin.h/.cpp. В них есть такие строки:
settings->setValue(QLatin1String("PartiallyComplete"), m_completion->isPartialCompletionEnabled()); - это сохранение параметров
m_completion->setPartialCompletionEnabled(settings->value(QLatin1String("PartiallyComplete"), true).toBool()); - это восстановление
 я нашёл такое в cpptools

P.S.
а может я сюда кину свою доработку, а кто-то опубликует их?

P.P.S
а дополнять и писать свои плагины прикольно, мы с одногрупником думали написать дерево классов туда, о пока забили =(


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: b-s-a от Март 24, 2010, 12:22
а может я сюда кину свою доработку, а кто-то опубликует их?
Можешь, если не претендуешь на авторство. Тролли отклоняют мержи, автор которых отличается от создателя мержа.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: biz_0n от Март 27, 2010, 01:41
гы, нашёл пару косяков, нужно будет исправить


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: zenden от Март 27, 2010, 11:32
вопрос: а зачем при открытии окна автодополнения пропадает курсор мыши в окне редактора??

меня это сильно бесит! не могу определить, где находится курсор мыши


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: b-s-a от Март 28, 2010, 15:34
zenden, у тебя какой-то глюк.


Название: Re: Как увеличить размер окно дополнения кода в QtCreator
Отправлено: KuZ от Март 28, 2010, 16:02
у меня тоже такое(курсор пропадает) бывает.