Exemple #1
0
Window::Window()
{
    drawArea = new draw;
    model = new XJRP::SLCModel;
    triangleMesh = new xd::TriangleMesh;
    //用来显示层的SpinBox
    LayerNum = new QSpinBox;
    LayerNum->setRange(0,0);
    LayerNum->setSpecialValueText(tr("0 (No Model)"));
    connect(LayerNum, SIGNAL(valueChanged(int)),
            this, SLOT(LayerChanged()));
    LayerNumLabel = new QLabel(tr("Layer Number:"));
    LayerNumLabel->setBuddy(LayerNum);
    //用来设置填充模式的combobox
    infillPatternLabel = new QLabel(tr("Infill Pattern:"));
    infillPatternComboBox = new QComboBox;
    infillPatternComboBox->addItem(tr("line"));
    infillPatternComboBox->addItem(tr("skin_core"));
    connect(infillPatternComboBox,SIGNAL(currentIndexChanged(int)),
            this,SLOT(infillPatternChanged(int)));
    //用来设置参数的LineEdit
    interval_numEdit = new QLineEdit(tr("2"));
    interval_numLabel = new QLabel(tr("Interval Number:"));
    interval_numLabel->setBuddy(interval_numEdit);
    spaceEdit = new QLineEdit(tr("0.1"));
    spaceLabel = new QLabel(tr("Space:"));
    spaceLabel->setBuddy(spaceEdit);
    shrinkDistanceEdit = new QLineEdit(tr("0.1"));
    shrinkDistanceLabel = new QLabel(tr("Shrink Distance:"));
    shrinkDistanceLabel->setBuddy(shrinkDistanceEdit);
    angle_startEdit = new QLineEdit(tr("0"));
    angle_startLabel = new QLabel(tr("Angle Start:"));
    angle_startLabel->setBuddy(angle_startEdit);
    angle_deltaEdit = new QLineEdit(tr("90"));
    angle_deltaLabel = new QLabel(tr("angle Delta:"));
    angle_deltaLabel->setBuddy(angle_deltaEdit);
    LaserPowerEdit = new QLineEdit(tr("0.079"));
    LaserPowerLabel = new QLabel(tr("Laser Power:"));
    LaserPowerLabel->setBuddy(LaserPowerEdit);
    ScanSpeedEdit = new QLineEdit(tr("3000"));
    ScanSpeedLabel = new QLabel(tr("Scan Speed:"));
    ScanSpeedLabel->setBuddy(ScanSpeedEdit);
    contourNumLabel = new QLabel(tr("Contour Number:"));
    contourNumEdit = new QLineEdit(tr("1"));
    contourSpaceLabel = new QLabel("Contour Space:");
    contourSpaceEdit = new QLineEdit(tr("0.1"));
    thickness = new QLabel("thickness:");
    thicknessEdit = new QLineEdit(tr("0.1"));
    //按钮
    open = new QPushButton(tr("&open"));
    save = new QPushButton(tr("&save"));
    clear = new QPushButton(tr("&clear"));
    infill = new QPushButton(tr("&infill"));
    centering = new QPushButton(tr("center"));
    openSTL = new QPushButton(tr("openSTL"));
    slice = new QPushButton(tr("slice"));
    connect(open,SIGNAL(clicked()),
            this,SLOT(openTrigger()));
    connect(save,SIGNAL(clicked()),
            this,SLOT(saveTrigger()));
    connect(clear,SIGNAL(clicked()),
            this,SLOT(clearTrigger()));
    connect(infill,SIGNAL(clicked()),
            this,SLOT(infillTrigger()));
    connect(centering,SIGNAL(clicked()),
            drawArea,SLOT(centering()));
    connect(openSTL,SIGNAL(clicked()),
            this,SLOT(openSTLTrigger()));
    connect(slice,SIGNAL(clicked()),
    this,SLOT(sliceTrigger()));
    //布局
    QGridLayout *mainLayout = new QGridLayout;
    mainLayout->addWidget(drawArea, 0, 0, 1, 16);
    mainLayout->addWidget(open,2, 0);
    mainLayout->addWidget(clear,2,1);
    mainLayout->addWidget(LayerNumLabel, 2, 2);
    mainLayout->addWidget(LayerNum, 2, 3);
    mainLayout->addWidget(centering,2,4);
    mainLayout->addWidget(infillPatternLabel,2,5);
    mainLayout->addWidget(infillPatternComboBox,2,6);
    mainLayout->addWidget(infill, 2, 7);
    mainLayout->addWidget(save, 2, 8);
    mainLayout->addWidget(openSTL,2,11);
    mainLayout->addWidget(thicknessEdit,2,12);
    mainLayout->addWidget(thickness,2,13);
    mainLayout->addWidget(slice,2,14);
    //第3行
    mainLayout->addWidget(contourNumLabel,3,0);
    mainLayout->addWidget(contourNumEdit,3,1);
    mainLayout->addWidget(contourSpaceLabel,3,2);
    mainLayout->addWidget(contourSpaceEdit,3,3);
    mainLayout->addWidget(spaceLabel,3,4);
    mainLayout->addWidget(spaceEdit,3,5);
    mainLayout->addWidget(shrinkDistanceLabel,3,6);
    mainLayout->addWidget(shrinkDistanceEdit,3,7);
    mainLayout->addWidget(angle_startLabel,3,8);
    mainLayout->addWidget(angle_startEdit,3,9);
    mainLayout->addWidget(angle_deltaLabel,3,10);
    mainLayout->addWidget(angle_deltaEdit,3,11);
    mainLayout->addWidget(LaserPowerLabel,3,12);
    mainLayout->addWidget(LaserPowerEdit,3,13);
    mainLayout->addWidget(ScanSpeedLabel,3,14);
    mainLayout->addWidget(ScanSpeedEdit,3,15);
    //试试放在第三行!
    mainLayout->addWidget(interval_numLabel,3,0);
    mainLayout->addWidget(interval_numEdit,3,1);
    setLayout(mainLayout);
    //LayerChanged();
    setWindowTitle(tr("SLC Read And Infill"));
    infill->hide();
    save->hide();
    centering->hide();
    interval_numEdit->hide();
    interval_numLabel->hide();
}
MousePluginWidget::MousePluginWidget(const QString &pluginName, const QString &trigger, QGridLayout *layoutHack, QWidget *parent)
    : QObject(parent),
      m_configDlg(0),
      m_containment(0),
      m_lastConfigLocation(trigger),
      m_tempConfigParent(QString(), KConfig::SimpleConfig)
{
    KPluginInfo::List plugins = Plasma::ContainmentActions::listContainmentActionsInfo();
    if (plugins.isEmpty()) {
        //panic!!
        QLabel *fail = new QLabel(i18n("No plugins found, check your installation."), parent);
        layoutHack->addWidget(fail, 0, 0);
        return;
    }

    //make us some widgets
    m_pluginList = new QComboBox(parent);
    m_aboutButton = new QToolButton(parent);
    m_clearButton = new QToolButton(parent);
    m_triggerButton = new MouseInputButton(parent);
    m_configButton = new QToolButton(parent);
    //m_ui.description->setText(plugin.comment());

    //plugin list
    //FIXME is there some way to share this across all the entries?
    foreach (const KPluginInfo& plugin, plugins) {
        if (plugin.property("NoDisplay").toBool()) {
            continue;
        }

        m_pluginList->addItem(KIcon(plugin.icon()), plugin.name(), QVariant::fromValue(plugin));
        if (plugin.pluginName() == pluginName) {
            m_pluginList->setCurrentIndex(m_pluginList->count() - 1);
            m_plugin = plugin;
        }
    }

    if (! m_plugin.isValid()) {
        //probably an empty string; pick the first one
        m_pluginList->setCurrentIndex(0);
        m_plugin = plugins.first();
    }

    //I can haz config?
    m_tempConfig = KConfigGroup(&m_tempConfigParent, "test");
    if (!m_plugin.property("X-Plasma-HasConfigurationInterface").toBool()) {
        m_configButton->setVisible(false);
    }

    setTrigger(trigger);

    //pretty icons for the buttons
    m_aboutButton->setIcon(KIcon("dialog-information"));
    m_aboutButton->setToolTip(i18nc("About mouse action", "About"));
    m_triggerButton->setIcon(KIcon("input-mouse"));
    m_configButton->setIcon(KIcon("configure"));
    m_configButton->setToolTip(i18nc("Configure mouse action", "Configure"));
    m_clearButton->setIcon(KIcon("list-remove"));
    m_clearButton->setToolTip(i18nc("Remove mouse action", "Remove"));

    //HACK
    //FIXME what's the Right Way to do this?
    int row = layoutHack->rowCount();
    layoutHack->addWidget(m_triggerButton, row, 0);
    layoutHack->addWidget(m_pluginList, row, 1);
    layoutHack->addWidget(m_configButton, row, 2);
    layoutHack->addWidget(m_aboutButton, row, 3);
    layoutHack->addWidget(m_clearButton, row, 4);

    //connect
    connect(m_pluginList, SIGNAL(currentIndexChanged(int)), this, SLOT(setPlugin(int)));
    connect(m_triggerButton, SIGNAL(triggerChanged(QString,QString)), this, SLOT(changeTrigger(QString,QString)));
    connect(m_configButton, SIGNAL(clicked()), this, SLOT(configure()));
    connect(m_clearButton, SIGNAL(clicked()), this, SLOT(clearTrigger()));
    connect(m_aboutButton, SIGNAL(clicked()), this, SLOT(showAbout()));
}