mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 22:02:49 -06:00
143 lines
3.8 KiB
C++
143 lines
3.8 KiB
C++
#include "ide.h"
|
|
|
|
class AbbreviationsDlg : public WithAbbreviationsLayout<TopWindow> {
|
|
typedef AbbreviationsDlg CLASSNAME;
|
|
EditString keyword;
|
|
|
|
void Add();
|
|
void Remove();
|
|
void Edit();
|
|
void Sync();
|
|
void Menu(Bar& bar);
|
|
void Finish(const String& s);
|
|
|
|
public:
|
|
AbbreviationsDlg(const String& hlStyles);
|
|
};
|
|
|
|
void AbbreviationsDlg::Sync()
|
|
{
|
|
edit.Enable(abbr.IsCursor());
|
|
remove.Enable(abbr.IsCursor());
|
|
}
|
|
|
|
void AbbreviationsDlg::Menu(Bar& bar)
|
|
{
|
|
bar.Add("New..", THISBACK(Add));
|
|
bar.Add(abbr.IsCursor(), "Edit..", THISBACK(Edit));
|
|
bar.Add(abbr.IsCursor(), "Delete", THISBACK(Remove));
|
|
}
|
|
|
|
void AbbreviationsDlg::Finish(const String& s)
|
|
{
|
|
abbr.Sort();
|
|
Sync();
|
|
abbr.FindSetCursor(s);
|
|
}
|
|
|
|
void AbbreviationsDlg::Add()
|
|
{
|
|
String s;
|
|
if(EditText(s, "New abbreviation", "Keyword", CharFilterAlpha)) {
|
|
abbr.Add(s, Null);
|
|
Finish(s);
|
|
}
|
|
}
|
|
|
|
void AbbreviationsDlg::Remove()
|
|
{
|
|
if(abbr.IsCursor() && PromptYesNo("Remove abbreviation?"))
|
|
abbr.Remove(abbr.GetCursor());
|
|
Sync();
|
|
}
|
|
|
|
void AbbreviationsDlg::Edit()
|
|
{
|
|
if(!abbr.IsCursor())
|
|
return;
|
|
String s = abbr.GetKey();
|
|
if(EditText(s, "Edit keyword", "Keyword", CharFilterAlpha)) {
|
|
abbr.Set(0, s);
|
|
Finish(s);
|
|
}
|
|
}
|
|
|
|
AbbreviationsDlg::AbbreviationsDlg(const String& hlStyles)
|
|
{
|
|
CtrlLayoutOKCancel(*this, "Abbreviations");
|
|
abbr.AddColumn("Keyword").Edit(keyword);
|
|
abbr.AddCtrl(code);
|
|
abbr.WhenBar = THISBACK(Menu);
|
|
add <<= THISBACK(Add);
|
|
remove <<= THISBACK(Remove);
|
|
edit <<= THISBACK(Edit);
|
|
code.Highlight("cpp");
|
|
code.ShowTabs();
|
|
code.LoadHlStyles(hlStyles);
|
|
Sync();
|
|
}
|
|
|
|
void Ide::Abbreviations()
|
|
{
|
|
AbbreviationsDlg dlg(editor.StoreHlStyles());
|
|
for(int i = 0; i < abbr.GetCount(); i++)
|
|
dlg.abbr.Add(abbr.GetKey(i), abbr[i]);
|
|
if(dlg.Execute() != IDOK)
|
|
return;
|
|
abbr.Clear();
|
|
for(int i = 0; i < dlg.abbr.GetCount(); i++)
|
|
abbr.Add(dlg.abbr.Get(i, 0), dlg.abbr.Get(i, 1));
|
|
SaveAbbr();
|
|
}
|
|
|
|
void Ide::LoadAbbr()
|
|
{
|
|
abbr.Clear();
|
|
String s = LoadFile(ConfigFile("ide.abbrs"));
|
|
try {
|
|
CParser p(s);
|
|
while(!p.IsEof()) {
|
|
String a = p.ReadString();
|
|
p.Char('=');
|
|
String b = p.ReadString();
|
|
p.Char(';');
|
|
abbr.Add(a, b);
|
|
}
|
|
}
|
|
catch(CParser::Error) {}
|
|
if(abbr.GetCount() == 0) {
|
|
abbr.Add("c", "case @:\r\n\tbreak;");
|
|
abbr.Add("d", "do\r\n\t@;\r\nwhile();");
|
|
abbr.Add("db", "do {\r\n\t@;\r\n}\r\nwhile();");
|
|
abbr.Add("e", "else\r\n\t;");
|
|
abbr.Add("eb", "else {\r\n\t;\r\n}");
|
|
abbr.Add("ei", "else\r\nif(@)\r\n\t;");
|
|
abbr.Add("eib", "else\r\nif(@) {\r\n\t;\r\n}");
|
|
abbr.Add("f", "for(@;;)\r\n\t;");
|
|
abbr.Add("fb", "for(@;;) {\r\n\t\r\n}");
|
|
abbr.Add("fi", "for(int i = 0; i < @.GetCount(); i++)");
|
|
abbr.Add("fib", "for(int i = 0; i < @.GetCount(); i++) {\r\n\t\r\n}");
|
|
abbr.Add("fij", "for(int i = 0; i < @.GetCount(); i++)\tfor(int j = 0; j < .GetCount(); j++)");
|
|
abbr.Add("fj", "for(int j = 0; j < @.GetCount(); j++)");
|
|
abbr.Add("fjb", "for(int j = 0; j < @.GetCount(); j++) {\r\n\t\r\n}");
|
|
abbr.Add("fk", "for(int k = 0; k < @.GetCount(); k++)");
|
|
abbr.Add("fkb", "for(int k = 0; k < @.GetCount(); k++) {\r\n\t\r\n}");
|
|
abbr.Add("i", "if(@)\r\n\t;");
|
|
abbr.Add("ib", "if(@) {\r\n\t\r\n}");
|
|
abbr.Add("ie", "if(@)\r\n\t;\r\nelse\r\n\t;");
|
|
abbr.Add("ieb", "if(@) {\r\n\t\r\n}\r\nelse {\r\n\t\r\n}");
|
|
abbr.Add("sw", "switch(@) {\r\ncase :\r\n\tbreak;\r\ndefault:\r\n\tbreak;\r\n}");
|
|
abbr.Add("w", "while(@)\r\n\t;");
|
|
abbr.Add("wb", "while(@) {\r\n\t\r\n}");
|
|
abbr.Add("ff", "for(FindFile ff(@); ff; ff.Next())");
|
|
abbr.Add("ffb", "for(FindFile ff(@); ff; ff.Next()) {\r\n\t\r\n}");
|
|
}
|
|
}
|
|
|
|
void Ide::SaveAbbr()
|
|
{
|
|
String r;
|
|
for(int i = 0; i < abbr.GetCount(); i++)
|
|
r << AsCString(abbr.GetKey(i)) << '=' << AsCString(abbr[i]) << ";\r\n";
|
|
UPP::SaveFile(ConfigFile("ide.abbrs"), r);
|
|
}
|