summaryrefslogtreecommitdiffstats
path: root/languages/ruby/rubysupport_part.h
blob: 0d420cff8d0136b38ac73555dbce48cd0c677e7e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*
 *  Copyright (C) 2003 Marek Janukowicz <marek@janukowicz.net>
 */


#ifndef __KDEVPART_RUBYSUPPORT_H__
#define __KDEVPART_RUBYSUPPORT_H__

#include <qguardedptr.h>

#include "kdevlanguagesupport.h"

class KDialogBase;
class QPopupMenu;
class Context;
class KDevShellWidget;

class RubySupportPart : public KDevLanguageSupport
{
  Q_OBJECT

public:

  RubySupportPart(QObject *parent, const char *name, const QStringList &);
  virtual ~RubySupportPart();

  virtual KDevDesignerIntegration *designer(KInterfaceDesigner::DesignerType type);

protected:
    virtual Features features();
    virtual KMimeType::List mimeTypes();

private slots:
    void projectConfigWidget(KDialogBase *dlg);
    void projectOpened();
    void projectClosed();
    void savedFile(const KURL &fileName);
    void addedFilesToProject(const QStringList &fileList);
    void removedFilesFromProject(const QStringList &fileList);
    void slotRun();
    void slotRunTestUnderCursor();
    void slotCreateSubclass();
    void contextMenu(QPopupMenu *popup, const Context *context);
    void slotBrowse();

    void initialParse();

    void slotSwitchToController();
    void slotSwitchToView();
    void slotSwitchToModel();
    void slotSwitchToTest();

private:
    void startApplication(const QString &program);
    QString interpreter();
    QString shell();
    QString mainProgram();
    QString runDirectory();
    QString programArgs();
    QString characterCoding();

    void maybeParse(const QString fileName);
    void parse(const QString &fileName);

    QMap<KInterfaceDesigner::DesignerType, KDevDesignerIntegration*> m_designers;

    QString m_contextFileName;
    QCString m_shell;

    QGuardedPtr<KDevShellWidget> m_shellWidget;
};


#endif