рдХреНрдпреВрдЯреАред рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рдирд╛

рдЕрдЪреНрдЫреЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдирдорд╕реНрдХрд╛рд░ред
рдЗрд╕ рд╢реАрд░реНрд╖рдХ рдХреЛ рдкрдврд╝рддреЗ рд╕рдордп, рдкрд╛рдардХ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ: рдХрдВрд╕реЛрд▓ рдФрд░ рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреНрдпреЛрдВ рдорд┐рд▓рд╛рдПрдБ - GUI рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрдВрд╕реЛрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдирд╣реАрдВ, рдореИрдВ рдХрд╣рдиреЗ рдХреА рд╣рд┐рдореНрдордд рдХрд░рддрд╛ рд╣реВрдВред рдХрднреА-рдХрднреА, рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдФрд░ рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗ рдкреВрд░реЗ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХрдВрд╕реЛрд▓ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдФрд░ рдбреЗрдЯрд╛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд░реЗрдбрд┐рд╕ рдлрд╛рд╕реНрдЯ рдХреА-рд╡реИрд▓реНрдпреВ рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдлрд┐рд▓рд╣рд╛рд▓ рд░реЗрдбрд┐рд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рджреЗрдЦрдиреЗ, рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╢рд╛рд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднреА рдбреЗрд╕реНрдХрдЯреЙрдк рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓реАрдХреЗрд╢рди рдирд╣реАрдВ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдХрдВрд╕реЛрд▓ рд╣реИ, рд░реЗрдбрд┐рд╕ рдПрдбрдорд┐рди рдпреВрдЖрдИ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдЬрд┐рд╕реЗ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП .NET рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбрд░рд╛ рд░рд╣рд╛ рд╣реИ) рдФрд░ рд░реВрдмреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ, рдпрд╣ рдЬрд▓реНрджрдмрд╛рдЬреА рдореЗрдВ, рдШреБрдЯрдиреЗ рдкрд░ рд▓рдЧрддрд╛ рд╣реИред
рдореИрдВ рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рддреЗрдЬрд╝ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬреИрд╕реЗ рдХрд┐ рд░реЗрдбрд┐рд╕ рдбреЗрдЯрд╛рдмреЗрд╕ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рднрд░рдиреЗ рдФрд░ рдРрд╕рд╛ рдЙрдкрдХрд░рдг рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЬрдм рд╕реЗ рдЖрдкрдХреЛ рддреЗрдЬреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рддрдм рд╕реА ++, рдЬрдм рд╕реЗ рдЖрдкрдХреЛ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рддрдм рдХреНрдпреВрдЯреАред

RedisConsole

рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЖрдк рд╕рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рд╣рд░ рджрд┐рди рдирдП рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдПрдХ рдХрдВрд╕реЛрд▓ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред Qt рдореЗрдВ рдХрд┐рд╕ рд╡рд┐рдЬреЗрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕реЗ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдХреИрд╕реЗ, рдФрд░ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред


рдЕрдзрд░реНрдо рд╕реЗ рд▓реЗрдХрд░ рдХреБрд▓ рдирд┐рдпрдВрддреНрд░рдг рддрдХ



рдмреЗрд╕ рдХрдВрд╕реЛрд▓ рд╡рд┐рдЬреЗрдЯ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ QPlainTextEdit рдХреЛ рдЪреБрдирд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдореЗрдВ рдЙрдиреНрдирдд рдкрд╛рда рд╕рдВрдкрд╛рджрди рдХреНрд╖рдорддрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдпрд╣ рдЖрдкрдХреЛ рд╕реНрд╡рд░реВрдкрдг рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ: рд░рдВрдЧ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рддрддреНрд╡реЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рд╕реЗ рд╣рдореЗрдВ рдЪреЛрдЯ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗрдЧреАред

рддреЛ, QPlainTextEdit рдХрд╛ рд╡рдВрд╢рдЬ рдмрдирд╛рдПрдВред

class Console : public QPlainTextEdit{}; 


рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ QPlainTextEdit QTextEdit рдХрд╛ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рднреНрдп рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рд╣рдо рдХрд░реЗрдВрдЧреЗ, рд╡рд╣ рд╕рдм рдХреБрдЫ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬреЛ рд╕рдВрднрд╡ рд╣реИред рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдзрд░реНрдо рд╕реЗ рд▓реЗрдХрд░ рдХреБрд▓ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╣реИрдВред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реНрдЯреНрд░реЛрдХреНрд╕ рдФрд░ рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реНрд▓реЙрдЯреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:

 void Console::keyPressEvent(QKeyEvent *){} void Console::mousePressEvent(QMouseEvent *){} void Console::mouseDoubleClickEvent(QMouseEvent *){} void Console::contextMenuEvent(QContextMenuEvent *){} 


рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рди рддреЛ рд╡рд┐рдЬреЗрдЯ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдЪрд░рд┐рддреНрд░ рджрд░реНрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рди рд╣реА рдкрд╛рда рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдЪреБрди рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ - рдкреВрд░реНрдг рдЕрд╡рд░реБрджреНрдзред

рдЙрджрд╛рд░реАрдХрд░рдг рдХрд╛ рджреМрд░



рдЕрдм рд╣рдо рдХреБрд▓ рдкреНрд░рддрд┐рдмрдВрдз рд╕реЗ рдПрдХ рдЙрдЪрд┐рдд рд▓реЛрдХрддрдВрддреНрд░ рдХреА рдУрд░ рдмрдврд╝рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рд╕рд╛рде рд╣реА рд╕рд╛рде рд╣рд░ рдЙрд╕ рдЪреАрдЬ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░реЙрдореНрдкреНрдЯ рд▓рд╛рдЗрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:

 // class definition QString prompt; // contructor prompt = "redis> "; 


рдФрд░ рдкреНрд░рд╛рдВрдкреНрдЯ рд▓рд╛рдЗрди рдХреЛ рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ:

 // constructor insertPrompt(false); // source void Console::insertPrompt(bool insertNewBlock) { if(insertNewBlock) textCursor().insertBlock(); textCursor().insertText(prompt); } 


рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдорд╛рдЙрд╕ рд╕реЗ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдХрд░реНрд╕рд░ рдХреЛ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛, рд▓реЗрдХрд┐рди рдХрдВрд╕реЛрд▓ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛:

 void Console::mousePressEvent(QMouseEvent *) { setFocus(); } 


рд╕рд╛рдзрд╛рд░рдг рдЕрдХреНрд╖рд░реЛрдВ, рд╕рдВрдЦреНрдпрд╛рдУрдВ рдФрд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рддреЗ рд╕рдордп, рдЙрдиреНрд╣реЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

 void Console::keyPressEvent(QKeyEvent *event) { // тАж if(event->key() >= 0x20 && event->key() <= 0x7e && (event->modifiers() == Qt::NoModifier || event->modifiers() == Qt::ShiftModifier)) QPlainTextEdit::keyPressEvent(event); // тАж } 


рдмреИрдХрд╕реНрдкреЗрд╕ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдорд┐рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдВрджреБ рддрдХ - рдЗрд╕рд▓рд┐рдП, рднрдЧрд╡рд╛рди рди рдХрд░реЗ, рдЖрдордВрддреНрд░рдг рд░реЗрдЦрд╛ рдЦреЛ рдирд╣реАрдВ рд╣реИ:

 void Console::keyPressEvent(QKeyEvent *event) { // тАж if(event->key() == Qt::Key_Backspace && event->modifiers() == Qt::NoModifier && textCursor().positionInBlock() > prompt.length()) QPlainTextEdit::keyPressEvent(event); // тАж } 


рдХрдорд╛рдВрдб рдХреЛ рдЗрдирдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреЗрдЯ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ (рдЬрдм рдЖрдк Enter рджрдмрд╛рддреЗ рд╣реИрдВ):

 void Console::keyPressEvent(QKeyEvent *event) { // тАж if(event->key() == Qt::Key_Return && event->modifiers() == Qt::NoModifier) onEnter(); // тАж } 


рдХрдорд╛рдВрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╕рдордп, рд╣рдордиреЗ рдкреНрд░реЙрдореНрдкреНрдЯ рд▓рд╛рдЗрди рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдФрд░ рдПрдХ рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд╕реНрд▓реЙрдЯ рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 void Console::onEnter() { if(textCursor().positionInBlock() == prompt.length()) { insertPrompt(); return; } QString cmd = textCursor().block().text().mid(prompt.length()); emit onCommand(cmd); } 


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдорд╛рдВрдб рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреЗрдХрдмреЙрдХреНрд╕ рд╕реЗрдЯ рдХрд░реЗрдВред

 void Console::onEnter() { // тАж isLocked = true; } void Console::keyPressEvent(QKeyEvent *event) { if(isLocked) return; // тАж } 


рдЖрд╡реЗрджрди - рд╡рд┐рдЬреЗрдЯ рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХрдорд╛рдВрдб рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдХрдВрд╕реЛрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рд╕реЗ рдЗрд╕реЗ рдЕрдирд▓реЙрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

 void Console::output(QString s) { textCursor().insertBlock(); textCursor().insertText(s); insertPrompt(); isLocked = false; } 


рдЯреАрдо рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕



рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рд╕рднреА рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдП рдФрд░ рдЬрдм рдЖрдк рдКрдкрд░ / рдиреАрдЪреЗ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рдПрдВрдЧреЗ рддреЛ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛:

 // class definition QStringList *history; int historyPos; // source void Console::keyPressEvent(QKeyEvent *event) { // тАж if(event->key() == Qt::Key_Up && event->modifiers() == Qt::NoModifier) historyBack(); if(event->key() == Qt::Key_Down && event->modifiers() == Qt::NoModifier) historyForward(); } void Console::onEnter() { // тАж historyAdd(cmd); // тАж } void Console::historyAdd(QString cmd) { history->append(cmd); historyPos = history->length(); } void Console::historyBack() { if(!historyPos) return; QTextCursor cursor = textCursor(); cursor.movePosition(QTextCursor::StartOfBlock); cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor); cursor.removeSelectedText(); cursor.insertText(prompt + history->at(historyPos-1)); setTextCursor(cursor); historyPos--; } void Console::historyForward() { if(historyPos == history->length()) return; QTextCursor cursor = textCursor(); cursor.movePosition(QTextCursor::StartOfBlock); cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor); cursor.removeSelectedText(); if(historyPos == history->length() - 1) cursor.insertText(prompt); else cursor.insertText(prompt + history->at(historyPos + 1)); setTextCursor(cursor); historyPos++; } 


рд╕реБрдВрджрд░ рдмрдирд╛рдирд╛: рд╕рд╛рдВрддреНрд╡рдирд╛ рд░рдВрдЧ



рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЬреЗрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рд╣рдо рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд░рдВрдЧ рд╕рд░рдЧрдо тАЛтАЛрдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд▓реА рд╣реИ, рдЗрдирдкреБрдЯ рдХрдорд╛рдВрдб рдХреЗ рдЕрдХреНрд╖рд░ рд╣рд░реЗ рд╣реИрдВ:

 QPalette p = palette(); p.setColor(QPalette::Base, Qt::black); p.setColor(QPalette::Text, Qt::green); setPalette(p); 


рдЬрдм рд╢реАрдШреНрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рдлрд╝реЙрдиреНрдЯ рдХреЛ рд╣рд░реЗ рд░рдВрдЧ рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ:

 void Console::insertPrompt(bool insertNewBlock) { // тАж QTextCharFormat format; format.setForeground(Qt::green); textCursor().setBlockCharFormat(format); // тАж } 


рдФрд░ рдХрдорд╛рдВрдб рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдПрдХ рд╕рдлреЗрдж рдлрд╝реЙрдиреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ:

 void Console::output(QString s) { // тАж QTextCharFormat format; format.setForeground(Qt::white); textCursor().setBlockCharFormat(format); // тАж } 


рд╕рдм рдиреАрдЪреЗ!



рдореИрдВ рдпрд╣ рднреА рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдХрдорд╛рдВрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХрдВрд╕реЛрд▓ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдХрд╛ рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдмрд╣реБрдд рдиреАрдЪреЗ рддрдХ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 void Console::insertPrompt(bool insertNewBlock) { // тАж scrollDown(); } void Console::scrollDown() { QScrollBar *vbar = verticalScrollBar(); vbar->setValue(vbar->maximum()); } 


рдкрд░рд┐рдгрд╛рдо



рдкрд░рд┐рдгрд╛рдо рдПрдХ рдордЬреЗрджрд╛рд░, рд╕реБрдВрджрд░ рдФрд░ рдЖрд░рд╛рдорджрд╛рдпрдХ рдХрдВрд╕реЛрд▓ рд╣реИред рдпрд╣ рдореБрдЭреЗ рдХреЗрд╡рд▓ 120 рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдХреЛрдб рд▓рдЧрд╛ред рдмреЗрд╢рдХ, рдХрдИ рдФрд░ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдВрджрд░реНрдн



GitHub рдкрд░ RedisConsole рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб: https://github.com/ptrofimov/RedisConsole

рд╡рд╣рд╛рдВ рдЖрдк рдХрдВрд╕реЛрд▓ рд╡рд┐рдЬреЗрдЯ рдХреНрд▓рд╛рд╕ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ "рдбрд╛рдЙрдирд▓реЛрдб" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд╛рдЗрдирд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рдж

Source: https://habr.com/ru/post/In122831/


All Articles