Show
void setxy(int x,int y)
{
COORD pos = {x, y};
HANDLE hOut;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut,pos);
}
vector<string>V;
vector<string>pairV;
string superlist[20005];
int init()
{
//Somehow read the stuff into superlist. from file.
int g=0;
ifstream fin;
fin.open("_SUPERLIST.txt", ios::in);
string st;
while(!fin.eof())
{
fin>>st;
//cout<<st<<endl;
//Sleep(1000);
if(st!="")superlist[++g]=st;
}
if(g>0&&superlist[g]==superlist[g-1])superlist[g]="";
fin.close();
return 0;
}
string bufst;
int parsline(string st)
{
setxy(0,15);
for(int i=0;i<200;i++)
{
if(i>=bufst.size()&&i>=st.size())break;
if(i>=st.size())
{
setxy(0+i,15);cout<<' ';
}
if(i>=bufst.size()||bufst!=st)
{
setxy(0+i,15);cout<<st;
}
}
setxy(bufst.size(),16);cout<<" ";
setxy(st.size(),16);cout<<"^"; setxy(0,15);
if(st=="")
{
cout<<" ";
}
setxy(0,17);
cout<<" ";
setxy(0,17);
cout<<"TAGS:"<<V.size();
setxy(10,17);cout<<"LINE:"<<st.size();
bufst=st;
return 0;
}
int parsV(int k=0)
{
setxy(0,0);
for(int i=0;i<V.size();i++)
{
if(i+k>=V.size())
{
for(int j=0;j<=V.size();j++)cout<<" ";
}
else cout<<V<<" ";
}
return 0;
}
int chkpr(string st1,string st2)//tag mytag
{
if(st2==""||st1=="")return 0;
if(st1==st2)return 1;
string t;
if(st1.size()>st2.size())
{
t=st1;
t.erase(st2.size());
if(t==st2)return 1;
}
if(st2.size()==st1.size()+1)
{
t=st2;
t.erase(st1.size());
if(st1==t)return 1;
}
return 0;
}
int parspair(string st)
{
while(pairV.size()>0)pairV.pop_back();
string stt;
for(int i=0;i<=20000;i++)
{
stt=superlist;
if(stt[stt.size()-1]=='\n')stt.erase(stt.size()-1);
if(stt!=""&&chkpr(stt,st))pairV.Pb(superlist);
if(pairV.size()>8)break;
}
setxy(0,20);
for(int i=0;i<6;i++)cout<<" ";
//for(int i=0;i<=30;i++)cout<<" ";
//add autocorrect to 0 and bond a key?
setxy(0,20);
for(int i=0;i<pairV.size()&&i<10;i++)cout<<i+1<<" "<<pairV<<"\t\t";
return 0;
}
int allclear(int f=0)
{
if(f)
{
while(V.size()>0)V.pop_back();
return 0;
}
ofstream fout;
fout.open("_OUTPUT.txt", ios::out | ios::app);
for(int i=0;i<V.size();i++)fout<<V<<" ";
while(V.size()>0)V.pop_back();
fout<<endl<<endl<<endl<<endl<<endl<<endl;
fout.close();
return 0;
}int main()
{
system("color 0F");
system("mode con cols=100 lines=30");
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_FONT_INFOEX cfi;
cfi.nFont = 1;
cfi.dwFontSize.X = 0;
cfi.dwFontSize.Y = 24;
cfi.FontFamily = FF_DONTCARE;
cfi.cbSize = sizeof(CONSOLE_FONT_INFOEX);
cfi.FontWeight = 1200;
//wcscpy(cfi.FaceName, fontName);
//wcscpy(cfi.FaceName,L"Raster");
SetCurrentConsoleFontEx(hConsole, FALSE, &cfi); init();
char t;
string st="";
int stlen;
bool selec=0;
int g=0;
bool fready=0;
while(1)
{ if(_kbhit())
{
t=_getch(); if(t!=8)g=0;
if (selec)
{
if(t==' ')
{
selec=0;
setxy(0,19);
cout<<" ";
continue;
}
setxy(0,19);
cout<<"SELECION:ON";
if(t<'0'&&t>'9')continue;
int k;
k=t-'0';
if(k==0)k=10;
k--;
if(k>=pairV.size())continue;
else st=pairV[k];
selec=0;
setxy(0,19);
cout<<" ";
fready=1;
}
else if(t==8)
{
if(st.size()>0)st.erase(st.size()-1);
else
{
g++;
//setxy(0,23);cout<<g<<" "<<V.size();
if(g==3)
{
parsV(1);
if(V.size()>0)V.pop_back();
g=0;
}
}
}
else if(t=='\r')
{
bool f=0;
for(int i=0;i<pairV.size();i++)if(pairV==st)f=1;
if(!f&&pairV.size()>0)
{
st=pairV[0];
fready=1;
}
else if(st=="")continue;
else if(st=="//NEW")
{
parsV(V.size());
allclear();
st="";
}
else if(st=="//ABORT")
{
parsV(V.size());
allclear(1);
st="";
}
//enter the word. if empty, nothing.
//if '//NEWL' ->clear everything.
//enterV(st);
else if(!fready)
{
fready=1;
}
else
{
f=0;
for(int i=0;i<V.size();i++)if(V==st)f=1;
if(!f)
{
V.push_back(st);
parsV();
} st="";
parsline(st);
}
}
else if(t==' ')
{
selec^=1;
setxy(0,19);
cout<<"SELECION:ON";
/*
if(st=="")continue;
if(st=="//NEW")
{
allclear();
parsV();
st=""; continue;
}
//enter the word. if empty, nothing.
//if '//NEWL' ->clear everything.
//enterV(st);
bool f=0;
for(int i=0;i<V.size();i++)if(V==st)f=1;
if(!f)
{
V.push_back(st);
parsV();
} st="";
parsline(st);
*/
}
else if(t>=32&&t<127)
{
st+=t;
fready=0;
}
//parsV();
parsline(st);
parspair(st);
if(fready)
{
setxy(20,17);
cout<<"READY TO ENTER ";
}
else
{
setxy(20,17);
cout<<"NOT READY YET ";
}
/*
if (selec)
{
setxy(0,24);
cout<<"SELECION:ON";
}
else
{
setxy(0,24);
cout<<" ";
}
*/ }
}
return 0;
}
Prepare your tags with only enter, space and backspace. You need to collect _SUPERLIST.txt on your own. Such as:
Show
vector<string>vst;
int main()
{
string t;
fstream fio;
fio.open("_SUPERLIST.txt", ios::in);
while(!fio.eof())
{
fio>>t;
if(t=="")continue;
bool f=0;
for(int i=0;i<vst.size();i++)if(vst==t)
{
f=1;
break;
}
if(!f)vst.push_back(t);
}
fio.close(); fio.open("_SUPERLIST.txt", ios::out);
for(int i=0;i<vst.size();i++)fio<<vst<<" ";
fio.close();
return 0;
}
