рд╢реБрд░реБрдЖрдд
рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЬреЛ рдЪреАрдЬ рдЪрд╛рд╣рд┐рдП, рд╡рд╣ рд╣реИ рдХреНрдпреВрдЯреАрдХреНрд░реЗрдЯрд░ рдХрд╛ рд╕реЛрд░реНрд╕ рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛, рдЖрдк рдпрд╣рд╛рдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм, рдЖрдкрдХреЛ рдкрд░рд┐рдгрд╛рдореА рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЕрдирдЬрд╝рд┐рдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ / src / plugins / folder рдореЗрдВ рдПрдХ рдирдпрд╛ рдЦрд╛рд▓реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред
рдПрдХ рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдПрдВ рдЬреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдореБрдЦреНрдп рд╡рд░реНрдЧ рд╣реЛрдЧрд╛; рдЗрд╕реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рдирд╕рд┐рд╕реНрдЯрдо :: IPlugin рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, .pro рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ:
рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ (../../ qtcreatorplugin.pri)
рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (../../ plugins / coreplugin / coreplugin.pri)
Coreplugin рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ, рдпрд╣ рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрдиреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЖрдкрдХреЛ рдирд┐рдореНрди рдкреНрд░рд╛рд░реВрдк рдореЗрдВ xml рдлрд╝рд╛рдЗрд▓ <рдкреНрд▓рдЧрдЗрди рдирд╛рдо> .pluginspec рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
<рдкреНрд▓рдЧрдЗрди рдХрд╛ рдирд╛рдо = "todo" рд╕рдВрд╕реНрдХрд░рдг = "0.0.1" рдХрдВрдкреЗрдЯрд╡рд░реНрд╕рди = "2.0.0">
<рд╡рд┐рдХреНрд░реЗрддрд╛> vsorokin </ рд╡рд┐рдХреНрд░реЗрддрд╛>
<рдХреЙрдкреАрд░рд╛рдЗрдЯ> рдЖрдкрдХрд╛ рдХреЙрдкреАрд░рд╛рдЗрдЯ </ рдХреЙрдкреАрд░рд╛рдЗрдЯ>
<рд▓рд╛рдЗрд╕реЗрдВрд╕> рдЖрдкрдХрд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ </ рд▓рд╛рдЗрд╕реЗрдВрд╕>
<рд╡рд┐рд╡рд░рдг> рдкреНрд▓рдЧрдЗрди рд╡рд┐рд╡рд░рдг </ рд╡рд░реНрдгрди>
<url> рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореБрдЦрдкреГрд╖реНрда </ url>
<DependencyList>
<рдирд┐рд░реНрднрд░рддрд╛ рдирд╛рдо = "рдХреЛрд░" рд╕рдВрд╕реНрдХрд░рдг = "2.0.0" />
</ DependencyList>
</ рдкреНрд▓рдЧрдЗрди>
рдЙрдирдХреЗ рдирд╛рдо рд╕реЗ рдЦреЗрддреЛрдВ рдХрд╛ рдЕрд░реНрде рд╕реНрдкрд╖реНрдЯ рд╣реЛрддрд╛ рд╣реИред
рддреЛ, рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╡рд░реНрдЧ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
#include <extensionystem / iplugin.h>
рд╡рд░реНрдЧ рдЯреЛрдбреЛрдкреНрд▓реБрдЬрд┐рди: рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рдкреНрд░рдгрд╛рд▓реА :: рдЖрдИрдкреАрд▓реБрдЧрд┐рди
{
Q_OBJECT
рдЬрдирддрд╛ :
рдЯреЛрдбреЛрдкреНрд▓реБрдЬрд┐рди ();
~ рдЯреЛрдбреЛрдкреНрд▓реБрдЬрд┐рди ();
рд╢реВрдиреНрдп рдПрдХреНрд╕рдЯреЗрдВрд╢рди
рдмреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ ( const QStringList & рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕, QString * errorString);
рд╢реВрдиреНрдп рдмрдВрдж ();
};
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реЗрдВрдЯреНрд░рд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рдкреНрд▓рдЧрдЗрди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╕рднреА рд╡рд┐рдзрд┐рдпрд╛рдВ рдЦрд╛рд▓реА рд╣реИрдВред
рдПрдХ рдирдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рдкреЗрди рдмрдирд╛рдПрдВ
рдореЗрд░реЗ рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП, рдПрдХ рдирдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреНрд╖реЗрддреНрд░ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдореМрдЬреВрджрд╛ рд╡рд╛рд▓реЗ рдХреЗ рдмрдЧрд▓ рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╕ рдХреЛрд░ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ : IOutputPane рдЗрдВрдЯрд░рдлрд╝реЗрд╕ , рдпрд╣рд╛рдВ рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рд╢реАрд░реНрд╖рдХ рд╣реИ:
#include <coreplugin / ioutputpane.h>
# рдЕрд▓рдЧ рдХрд░реЗрдВ <QObject>
#include <QListWidget>
рд╡рд░реНрдЧ рдЯреВрдбреВрдУрдЯрдкреНрдпреВрдЯреЗрди: рдкрдмреНрд▓рд┐рдХ рдХреЛрд░ :: IOutputPane
{
рдЬрдирддрд╛ :
рдЯреЛрдбреЛрдЙрдкреБрддрдкрд╛рдиреЗ (QObject * рдЬрдирдХ);
~ рдЯреЛрдбреЛрдУрдкреБрддрдкрд╛рдиреЗ ();
QWidget * outputWidget (QWidget * рдЬрдирдХ); // рдХреНрд▓рд╛рд╕ рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЬреЗрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдпрд╣рд╛рдБ рдпрд╣ QListWidget рд╣реИ
QList <QWidget *> toolBarWidgets () рдХрд╛рд╕реНрдЯ; // рдЯреВрд▓рдмрд╛рд░ рд╡рд┐рдЬреЗрдЯ рдХреА рд╕реВрдЪреА рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд╡реЗ рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ
QString рдирд╛рдо () рдХрд╛рд╕реНрдЯ ; // рдмрд╕ рдкреИрдирд▓ рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рдирд╛рдо
int рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдЗрдиреНрд╕реНрдЯреИрдЯрдмрд╕рд░ () рдХрд╛рд╕реНрдЯ ; // рдПрдХ рд╕реЗ рдПрдХ рд╕реМ рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рддрдиреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛, рдЙрддрдиреА рд╣реА рдЙрдЪреНрдЪ рд╕реНрдерд┐рддрд┐ рд╣рдорд╛рд░реА рдлрд▓рдХ
рд╢реВрдиреНрдп рд╕рдорд╛рд╢реЛрдзрди (); // рдореБрдЦреНрдп рд╡рд┐рдЬреЗрдЯ рдХреА рд╕рдлрд╛рдИ рдХрд░рддрд╛ рд╣реИ
рд╢реВрдиреНрдп рджреГрд╢реНрдпрддрд╛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд ( рдмреВрд▓ рджрд┐рдЦрд╛рдИ);
рд╢реВрдиреНрдп рд╕реЗрдЯрдлреЛрдХрд╕ ();
рдмреВрд▓ рд╣реИрдлреЛрдХрд╕ ();
рдмреВрд▓ рдХреИрдирдлреЛрдХрд╕ ();
рдмреВрд▓ рдХреИрдирд╡реЗрдЯ ();
рдмреВрд▓ рдХреИрдиреЗрдХреНрд╕реНрдЯ ();
рдмреВрд▓
рд╢реВрдиреНрдп goToNext ();
рд╢реВрдиреНрдп goToPrev ();
рд╢реВрдиреНрдп addItem (QString рдкрд╛рда, QString рдлрд╝рд╛рдЗрд▓, int rowNumber); // рд╡рд┐рдзрд┐ рдЬреЛ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдирдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреА рд╣реИ
QListWidget * getTodoList () рдХрд╛рд╕реНрдЯ; // рдПрдХ рд╕реВрдЪреА рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ
рдирд┐рдЬреА :
QListWidget * рдЯреВрдбрд▓рд┐рд╕реНрдЯ;
};
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЕрдм рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЕрдкрдиреЗ рдирдП рдмрдирд╛рдП рдЧрдП рдЯреВрдбреВрдкрди рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рдзрд┐ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
outPane = new TodoOutputPane ( рдпрд╣ );
addAutoReleasedObject (outPane);
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдЕрдм рд╣рдорд╛рд░рд╛ рдЖрдЙрдЯрдкреЗрди рдмрд╛рдХреА рдХреЗ рдмреАрдЪ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╣рдореЗрдВ рдЦреБрд▓реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рддреА рд╣реИ рдФрд░ рдЙрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЕрдм рдХреМрди рд╕реА рдлрд╝рд╛рдЗрд▓ рдЦреБрд▓реА рд╣реИ, рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕рдВрдкрд╛рджрдХ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ ...
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдЬреЛрдбрд╝реЗрдВ:
#include <coreplugin / editormanager / editormanager.h>
#include <coreplugin / editormanager / ieditor.h>
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдФрд░ рдЖрд░рдВрднрд┐рдХ рд╡рд┐рдзрд┐ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ:
рдХрдиреЗрдХреНрдЯ (рдХреЛрд░ :: EditorManager :: рдЙрджрд╛рд╣рд░рдг) (), SIGNAL (currentEditorChanged (рдХреЛрд░ :: IEditor *)), рдпрд╣ , SLOT (currentEditorChanged (рдХреЛрд░ :: IEditor *));
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕реНрд▓реЙрдЯ рдХреЛ рдЪрд╛рд▓реВ рдХрд░реЗрдВрдЕрдиреБрдХреВрд▓рд┐рдд рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ (рдХреЛрд░ :: IEditor *)
рд╣рд░ рдмрд╛рд░ рд╡рд░реНрддрдорд╛рди рд╕рдВрдкрд╛рджрдХ рдХреЗ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рдж рдЗрд╕ рд╕реНрд▓реЙрдЯ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╛рдиреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рд╛ / рдмрдВрдж рдХрд┐рдпрд╛, рдпрд╛ рдХрд┐рд╕реА рджреВрд╕рд░реЗ рдХреЛ рдЦреЛрд▓рд╛ рд╣реБрдЖ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ред
рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
рд╢реВрдиреНрдп рдЯреЛрдбрдкреНрд▓рдЧрд┐рди :: currentEditorChanged (рдХреЛрд░ :: IEditor * рд╕рдВрдкрд╛рджрдХ)
{
outPane-> clearContents (); // рд╕рд╛рдлрд╝
рдЕрдЧрд░ (рд╕рдВрдкрд╛рджрдХ) // рдЪреЗрдХ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╕рдВрдкрд╛рджрдХ рд╣реИ? рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░
{
рд╡рд╛рдкрд╕реА;
}
/ * рдкрддрд▓рд╛ рдмрд┐рдВрджреБ, рд╣рдо рд╡рд░реНрддрдорд╛рди рд╕рдВрдкрд╛рджрдХ рд╕реЗ рдЬреБрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡рд░реНрдЧ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд╕рдВрдХреЗрдд рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ Ctrl + S * / рджрдмрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝ рд╕рдХреЗрдВ
рдХрдиреЗрдХреНрдЯ (рд╕рдВрдкрд╛рджрдХ-> рдлрд╝рд╛рдЗрд▓ (), SIGNAL (рдкрд░рд┐рд╡рд░реНрддрд┐рдд) (), рдпрд╣ , SLOT (fileChanged ()));
QString fileName = editor-> file () -> fileName (); // рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
readFile (fileName); // рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВред
}
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХреЛ рдпрд╣рд╛рдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕рд░рд▓ рд╣реИ:
рд╢реВрдиреНрдп рдЯреЛрдбрдкреНрд▓рдЧрд┐рди :: readFile (QString рдлрд╝рд╛рдЗрд▓рдирд╛рдо)
{
QFile рдлрд╝рд╛рдЗрд▓ (fileName);
рдЕрдЧрд░ (file.open (QFile :: ReadOnly | QFile :: Text))
рд╡рд╛рдкрд╕реА;
int i = 1;
рдЬрдмрдХрд┐ (file.atEnd ())
{
QString currentLine = file.readLine ();
рдЕрдЧрд░ (currentLine.contains (QRegExp (patternString, Qt :: CaseInsensitive)))
{
outPane-> addItem (currentLine, fileName, i);
}
++ рдореИрдВ;
}
}
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЖрдкрдХреЛ рдПрдХ рдирдП рд╕реНрд▓реЙрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗ рдЬрд╛рдиреЗ рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ:
рд╢реВрдиреНрдп рдЯреЛрдбрдкреНрд▓реБрдЧрд┐рди :: рдлрд╝рд╛рдЗрд▓ рдкрд░рд┐рд╡рд░реНрддрд┐рдд ()
{
outPane-> clearContents ();
рдХреЛрд░ :: IFile * рдлрд╝рд╛рдЗрд▓ = (Core :: IFile *) рдкреНрд░реЗрд╖рдХ (); // рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ рдЧреИрд░-рд░реВрдврд╝рд┐рд╡рд╛рджреА рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рд╕рдВрдХреЗрдд рдЗрд╕ рд╕реНрд▓реЙрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред
рдЕрдЧрд░ (рдлрд╝рд╛рдЗрд▓)
{
readFile (рдлрд╝рд╛рдЗрд▓-> fileName ());
}
}
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝рдирд╛
рдЕрдм рдЖрдкрдХреЛ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рд╡рд┐рдзрд┐:
void TodoOutputPane :: addItem (QString рдЯреЗрдХреНрд╕реНрдЯ, QString рдлрд╝рд╛рдЗрд▓, int rowNumber)
{
QListWidgetItem * newItem = new QListWidgetItem (); // рдПрдХ рдирдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрдирд╛рдПрдБ
QRegExp todoExp ( "// \\ s * TODO (:ред \\ s)" , Qt :: CaseInsensitive); // рд░реЗрдЧреЗрдХреНрд╕ рддреИрдпрд╛рд░ рдХрд░реЗрдВ
QRegExp noteExp ( "// \\ s * NOTE (: | \\ s)" , Qt: CaseInsintitive);
QRegExp fixmeExp ( "// \\ s * FIXME ( : | \\ s)" , Qt :: CaseInsensitive);
QRegExp BugExp ( "// \\ s * BUG (: | \\ s)" , Qt :: CaseInsensitive);
QRegExp hackExp ( "// \\ s * HACK (: | \\ s)" , Qt :: CaseInsensitive);
text = text.replace ( "\ n" , "" );
text = text.replace ( "\ r" , "" );
newItem-> setTextColor (QColor ( "# 2F2F2F" ));
if (text.contains (todoExp)) // Regexps рдХреА рддрд▓рд╛рд╢ рдореЗрдВ
{
newItem-> setBackgroundColor (QColor ( "# BFFFC8" )); // рд░рд┐рдХреЙрд░реНрдб рд░рдВрдЧ рд╕реЗрдЯ рдХрд░реЗрдВ
text = text.replace (todoExp, "TODO :;); // рдмрджрд▓реЗрдВ "рд╕рдВрднрд╡рддрдГ рдХреБрдЯрд┐рд▓" рд▓реЗрдмрд▓ рдХреА рд╡рд░реНрддрдиреА рд╕рд╣реА рд╣реИ
newItem-> setIcon (QIcon ( ": / рдЪреЗрддрд╛рд╡рдиреА" )); // рдЖрдЗрдХрди рд╕реЗрдЯ рдХрд░реЗрдВ
}
рдФрд░ рдЕрдЧрд░ (text.contains (noteExp))
{
newItem-> setBackgroundColor (QColor ( "# E2DFFF" ));
text = text.replace (noteExp, тАЬNOTE :;);
newItem-> setIcon (QIcon ( ": / info" ));
}
рдФрд░ рдЕрдЧрд░ (text.contains (bugExp))
{
newItem-> setBackgroundColor (QColor ( "# FFFBFBF" ));
text = text.replace (BugExp, тАЬBUG :;);
newItem-> setIcon (QIcon ( ": / error" ));
}
рдФрд░ рдЕрдЧрд░ (text.contains (FixmeExp))
{
newItem-> setBackgroundColor (QColor ( "# FFFDFDF" ));
рдкрд╛рда = text.replace (FixmeExp, " FIXME:;);
newItem-> setIcon (QIcon ( ": / error" ));
}
рдФрд░ рдЕрдЧрд░ (text.contains (hackExp))
{
newItem-> setBackgroundColor (QColor ( "# FFFFAA" ));
рдкрд╛рда = text.replace (hackExp, "рд╣реИрдХ: place);
newItem-> setIcon (QIcon ( ": / info" ));
}
newItem-> setText (text.trimmed () + "(" + tr ( "рд▓рд╛рдЗрдитАЮ ) + QString :: рд╕рдВрдЦреНрдпрд╛ (rowNumber) + ")" ); // рд░рд┐рдХреЙрд░реНрдб рдкрд╛рда рд╕реЗрдЯ рдХрд░реЗрдВ
newItem-> setToolTip (рдлрд╝рд╛рдЗрд▓ + ":" + QString :: рд╕рдВрдЦреНрдпрд╛ (rowNumber)); // рдЯреВрд▓рдЯрд┐рдк рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдФрд░ рд▓рд╛рдЗрди рдирдВрдмрд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛, рдпрд╣ рд╕рд┐рд░реНрдл рдЙрд╕реА рддрд░рд╣ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдЖрдкрдХреЛ рдиреАрдЪреЗ рдмрддрд╛рдКрдВрдЧрд╛ред
todoList-> addItem (newItem); // рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝реЗрдВ
}
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд░рд┐рдХреЙрд░реНрдб рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рд▓рд╛рдЗрди рдкрд░ рдЬрд╛рдПрдВ
рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдмрдЪреА рд╣реИ рдЬреЛ рд╡рд╛рдВрдЫрд┐рдд рд░реЗрдЦрд╛ рдкрд░ рд╕рдВрдХреНрд░рдордг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдФрд░ рд╕реНрд▓реЙрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬрд┐рд╕реЗ рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреЗ рдЪрдпрди рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
рд╢реВрдиреНрдп рдЯреЛрдбрдкреНрд▓рдЧрд┐рди :: gotoToRowInFile (QListWidgetItem * рдЖрдЗрдЯрдо)
{
int рдкрдВрдХреНрддрд┐ = 0; // рд▓рд╛рдЗрди рдирдВрдмрд░
QString рдлрд╝рд╛рдЗрд▓ = "" ; // рдлрд╝рд╛рдЗрд▓ рдирд╛рдо
/ * рдкреНрд░реЙрдореНрдкреНрдЯ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ * /
QStringList tmpList = рдЖрдЗрдЯрдо-> рдЯреВрд▓рдЯрд┐рдк ()ред рд╕реНрдкреНрд▓рд┐рдЯ ( ":" );
рдЕрдЧрд░ (tmpList.size () == 2)
{
рдлрд╝рд╛рдЗрд▓ = tmpList.at (0);
рдмреВрд▓ рдареАрдХ;
row = tmpList.at (1) .toInt (& ok);
рдЕрдЧрд░ (рдареАрдХ рд╣реИ)
{
рдкрдВрдХреНрддрд┐ = 0;
}
}
рдЕрдЧрд░ (QFileInfo (рдлрд╝рд╛рдЗрд▓) .exists ()) // рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рд╣реИред
{
TextEditor :: BaseTextEditor :: openEditorAt (рдлрд╝рд╛рдЗрд▓, рдкрдВрдХреНрддрд┐); // рдкрдВрдХреНрддрд┐ рд╕рдВрдЦреНрдпрд╛ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХрд░реНрд╕рд░ рд░рдЦрдХрд░ рдЬрдмрд░рди рдлрд╝рд╛рдЗрд▓ рджрд┐рдЦрд╛рдПрдВред рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ TextEditor рдкреНрд▓рдЧрдЗрди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдФрд░ рдЙрдЪрд┐рдд рд╣реЗрдбрд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдХреЛрд░ :: EditorManager :: рдЙрджрд╛рд╣рд░рдг () -> рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВрдЯрд╛рдЗрдЬрд╝рд░рдореИрдиреЗрдЬрд░рд╡рд┐рдЬрд╝рди ();
}
}
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЦреИрд░, рдпрд╣ рд╕рдм, рдкреНрд▓рдЧрдЗрди рддреИрдпрд╛рд░ рд╣реИ, рдЗрд╕реЗ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЖрдк рдпрд╣рд╛рдБ рд╕реЗ рдкреНрд▓рдЧрдЗрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред