00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef SeExprEdCompletionModel_h
00016 #define SeExprEdCompletionModel_h
00017
00018 #include <QtCore/QAbstractItemModel>
00019 #include <QtCore/QString>
00020 #include <QtCore/QSize>
00021 #include <vector>
00022
00023 class SeExprEdCompletionModel:public QAbstractItemModel
00024 {
00025 public:
00026
00027 void clearFunctions();
00028 void addFunction(const QString& function,const QString& docString);
00029
00030
00031 void clearVariables();
00032 void addVariable(const QString& str,const QString& comment);
00033
00034
00035 void syncExtras(const SeExprEdCompletionModel& otherModel);
00036
00037 SeExprEdCompletionModel(QObject* parent=0);
00038
00039 QModelIndex index(int row,int column,const QModelIndex&) const
00040 {return createIndex(row,column,0);}
00041
00042 QModelIndex parent(const QModelIndex&) const
00043 {return QModelIndex();}
00044
00045 int rowCount(const QModelIndex& parent=QModelIndex()) const
00046 {
00047 Q_UNUSED(parent);
00048 int count= builtins.size()+functions.size()+variables.size()+local_variables.size();
00049 return count;
00050 }
00051
00052 int columnCount(const QModelIndex& parent) const
00053 {Q_UNUSED(parent); return 2;}
00054
00055 QString getFirstLine(const std::string& all) const
00056 {
00057 size_t newline=all.find("\n");
00058 if(newline!=std::string::npos) return QString(all.substr(0,newline).c_str());
00059 else return QString(all.c_str());
00060 }
00061
00062 QVariant data(const QModelIndex& index,int role=Qt::DisplayRole) const;
00063
00064 QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const
00065 {
00066 Q_UNUSED(orientation);
00067 if(role==Qt::DisplayRole) return QVariant("");
00068 else if(role==Qt::SizeHintRole){
00069 if(section==0) return QVariant(QSize(100,1));
00070 else return QVariant(QSize(200,1));
00071 }else return QVariant();
00072 }
00073 std::vector<QString> local_variables;
00074
00075 QString getDocString(const QString& s);
00076 private:
00077 static std::vector<QString> builtins;
00078 std::vector<QString> functions,functions_comment;
00079 std::map<QString,int> functionNameToFunction;
00080 std::vector<QString> variables,variables_comment;
00081 };
00082
00083
00084
00085 #endif