OpenCores
URL https://opencores.org/ocsvn/ezidebug/ezidebug/trunk

Subversion Repositories ezidebug

[/] [ezidebug/] [trunk/] [EziDebug_src/] [listwindow.h] - Rev 2

Compare with Previous | Blame | View Log

#ifndef LISTWINDOW_H
#define LISTWINDOW_H
 
#include <QWidget>
 
//#include "toolwindow.h"
//#include "miniwindow.h"
#include "listwindow.h"
#include "projectsetwizard.h"
#include "finddialog.h"
 
#include "button.h"
 
#include "titlebar.h"
#include "menubar.h"
#include "splitter.h"
#include "treemodel.h"
 
 
QT_BEGIN_NAMESPACE
class QAction;
class QActionGroup;
class QLabel;
class QMenu;
class QMenuBar;
class QPushButton;
class QSplitter;
class QTreeWidget;
class QImage;
class TreeView;
class EziDebugTreeModel ;
class QStandardItemModel ;
class QStandardItem ;
class EziDebugPrj ;
//class FindDialog;
QT_END_NAMESPACE
 
class ListWindow : public QWidget
{
    Q_OBJECT
public:
    explicit ListWindow(QWidget *parent = 0, Qt::WindowFlags f = 0 );
    ~ListWindow();
    QStandardItem *addMessage(const QString &type ,const QString &message,QStandardItem *parentitem = NULL) ;
    //列表窗口是否隐藏
    bool isListWindowHidden();
    void setListWindowHidden(bool flag);
    void enterEvent(QEvent * event);
    void leaveEvent(QEvent * event);
    void setChainActEnable(bool addenable,bool delenable);
    EziDebugInstanceTreeItem * getCurrentTreeItem(void);
    void setCurrentTreeItem(EziDebugInstanceTreeItem * item);
    void clearTreeView(void) ;
    void welcomeinfoinit(EziDebugPrj *prj) ;
 
    //列表窗口是否吸附在工具栏窗口
    //bool isListWindowAdsorbed();
    //获取ToolWindow的指针,以获取其位置等信息
    void getToolWindowPointer(QWidget *toolWin);
    bool windowIsStick(void) const
    {
        return isStick;
    }
    void setWindowStick(bool stick)
    {
        isStick = stick ;
    }
 
 
    enum enum_Direction{
        eNone = 0,
        eTop,
        eBottom,
        eRight,
        eLeft,
        eTopRight,
        eBottomLeft,
        eRightBottom,
        eLeftTop
    };
 
 
signals:
    void mouseReleased(const QRect rect);//窗口移动后,将listWindow的窗口位置发送给toolWindow
 
public slots:
    //右上角标题栏按钮
    void close();//仅隐藏列表窗口
 
    //算法中用到的槽
    //void proSetting();
    //void proUpdate();
    //void deleteChain();
    void testbenchGeneration();
 
private slots:
 
//    //其它窗口和本窗口有关的标题栏按钮
//    void closeAll();//迷你模式和工具栏窗口关闭时,触发该槽,关闭所有窗口
//    void toMiniMode();  //普通模式转换到迷你模式
//    void toNormalMode();//迷你模式转换到普通模式
    //void moveListWindow(const QPoint &p, QPoint bottomLeft, QPoint bottomRight);//移动ListWindow到点p
 
 
 
 
    void find();
    void about();
    void show_contextmenu(const QPoint& pos) ;
    void generateTreeView(EziDebugInstanceTreeItem* item);
 
 
 
private:
    void createActions();   //创建选项
    void createMenus();     //创建菜单
    void createButtons();   //创建按钮
    //listwindow中现无button,该函数现已不用,关闭按钮在类titlebar中实现
    QPushButton *createToolButton(const QString &toolTip, const QIcon &icon, const QSize &size, const char *member);
    void mousePressEvent(QMouseEvent *);        //自定义一个鼠标点击事件函数
    void mouseMoveEvent(QMouseEvent *);         //自定义一个鼠标拖动事件函数
    void mouseReleaseEvent(QMouseEvent *);
    void moveEvent(QMoveEvent *);  // 窗体移动事件
//    void paintEvent(QPaintEvent *);             //自定义一个刷屏事件函数
    void resizeEvent(QResizeEvent *event);      //自定义一个改变窗口大小事件函数,随着窗体变化而设置背景
 
    void mouseDoubleClickEvent(QMouseEvent *event);//自定义一个鼠标双击事件函数
    void SetCursorStyle(enum_Direction direction);//设置鼠标样式
    int PointValid(int x, int y);//判断鼠标所在位置在当前窗口的哪个边界(上下左右)上
    void SetDrayMove(int nXGlobal,int nYGlobal,enum_Direction direction);//设置鼠标拖动的窗口位置信息
    void magneticMove(const QRect &bechmarkRect, const QRect &targetRect) ;
 
    //菜单
    MenuBar *menuBar;
    QMenu *addMenu;
    QMenu *checkMenu;
    QMenu *sortMenu;
    QMenu *findMenu;
    QMenu *helpMenu;
    QMenu * m_pcontextMenu ;
 
 
    QAction *proSettingWizardAct;   //工程设置向导
    QAction *setProPathAct;     //设置工程目录
    QAction *setRegNumACt;      //设置每条链的寄存器个数
    QAction *useVerilogAct;    //使用verilog语言
    QAction *useVHDLAct;        //使用VHDL语言
    QAction *useMixeLanguagedAct;    //使用混合语言
    QAction *setSlotAct;        //设置计时器的时钟
    QAction *useAlteraAct;      //使用Altera
    QAction *useXilinxAct;      //使用Xilinx
    QAction *exitAct;           //退出
 
    QAction *rankAfterFileNameAct;  //按文件名
    QAction *rankAfterPathNameAct;  //按路径名
 
    QAction *fastOrientAct; //快速定位
    QAction *findAct;       //查找
    QAction *findNextAct;   //查找下一个
 
    QAction *aboutEziDebugAct;  //关于
    QAction *helpFileAct;   //帮助文件
 
    QAction *m_paddChainAct ;  // 添加链
    QAction *m_pdeleteChainAct ; // 删除链
 
    //右上角标题栏按钮
    //QPushButton *exitButton;  //退出
    Button * closeButton ;
    QPushButton * button1 ;
 
    Splitter *mainSplitter;
    QTreeWidget *modulesTreeWidget;
    QTreeWidget *chainsTreeWidget;
    TreeItem*  m_ptestTreeItem ; // 测试存放右键点击获得的树状节点
    EziDebugInstanceTreeItem * m_ptreeItem ; //
    TreeModel *moduleTree;//存放各个module及其相互关系的树型列表
    EziDebugTreeModel * m_peziDebugTreeModel ;
    TreeView *moduleTreeView;  //显示module树的view
    TreeView *m_pmessageTreeView ;
    QStandardItemModel *m_iShowMessageModel ;
 
 
    //窗口缩放需要的变量
    TitleBar *titleBar;//标题栏
    QPoint pointPressGlobal;//记录按下鼠标左键时的全局位置
    QPoint pointMove;//记录鼠标移动后的全局位置
    QRect rectRestoreWindow;//记录当前窗口的大小和位置
    bool isLeftButtonPress;//是否点击鼠标左键
    bool isMaxWin;//该窗口是否最大化
    bool isStick;
    bool isDrag;
 
 
    QPoint oldPointGlobal;
    QPoint NewPointGlobal;
    QPoint oldWindowPoint ;
    QPoint mousePressPoint ;  //记录鼠标按下时的相对坐标
    QPoint mouseMovePoint ;  // 记录鼠标移动中的相对坐标
    QRect  parentRect ; // 记录父窗口的坐标
    QPoint diffPos;    // 相对坐标差
 
    enum_Direction eDirection;//记录鼠标在那个方向
 
    QWidget *toolWindow;//指向ToolWindow的指针
 
 
    bool isListWindowHiddenFlag;//普通模式下,ToolWindow不隐藏时,列表窗口是否隐藏
    //bool isListWindowAdsorbedFlag;//普通模式下,列表界面是否吸附在工具栏窗口的下方
 
 
 
    //定义一个QPoint的成员变量,记录窗口移动的位置
    QPoint dragPosition;
 
    //窗口背景图片
    QPixmap listBackground;
 
    //各个Action和Button调用的对话框
 
    FindDialog *findDialog;//查找
 
    //算法中用到的参数
    QString proPathStr;         //工程目录
    QVector<int> regNumVector;  //每条链的寄存器个数
    bool isUseVerilog;          //使用verilog语言
    bool isUseVHDL;             //使用VHDL语言
    int slot;                   //计时器的时钟
    bool isUseAlteraAct;        //使用Altera
    bool isUseXilinxAct;        //使用Xilinx
 
    //QList<QStandardItem*> m_iitemList ;
};
 
#endif // LISTWINDOW_H
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.