summaryrefslogtreecommitdiff
path: root/ldmicro/resetdialog.cpp
blob: ba79def05157316bea4205032d18f9b0732a2954 (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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
//-----------------------------------------------------------------------------
// Copyright 2007 Jonathan Westhues
//
// This file is part of LDmicro.
// 
// LDmicro is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// 
// LDmicro is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with LDmicro.  If not, see <http://www.gnu.org/licenses/>.
//------
//
// Dialog for setting the properties of a set of a RES reset element: name,
// which can be that of either a timer or a counter.
// Jonathan Westhues, Nov 2004
//-----------------------------------------------------------------------------
#include "linuxUI.h"
#include <stdio.h>
//#include <commctrl.h>
#include <iostream>
#include "ldmicro.h"

static QDialog* ResetDialog;

static QRadioButton* TypeTimerRadio;
static QRadioButton* TypeCounterRadio;
static QLineEdit*    NameTextbox;
static QDialogButtonBox* ButtonBox;

// static LONG_PTR PrevNameProc;
static QGridLayout* ResetGrid;
// static HWID ResetPackingBox;

static void MakeControls(void)
{
    QGroupBox* grouper = new QGroupBox(_("Type"));
    QGridLayout *TypeGrid = new QGridLayout();
    QGridLayout *NameGrid = new QGridLayout();
    ButtonBox = new QDialogButtonBox(QDialogButtonBox::Ok
        | QDialogButtonBox::Cancel, Qt::Vertical,
        ResetDialog);
    NiceFont(ResetDialog);

    ResetGrid->setSpacing(3);
    TypeGrid->setSpacing(3);

    TypeTimerRadio = new QRadioButton(_("Timer"), ResetDialog);
    TypeCounterRadio = new QRadioButton(_("Counter"), ResetDialog);
    TypeGrid->addWidget(TypeTimerRadio,0,0);
    TypeGrid->addWidget(TypeCounterRadio,1,0);
    /*SourceGrid->addItem(
        new QSpacerItem(SetOnlyRadio->width(),
            SetOnlyRadio->height()), 2, 0);*/
    QLabel* textLabel = new QLabel(_("Name:"));
    NameTextbox = new QLineEdit();
    FixedFont(NameTextbox);
    NameTextbox->setFixedWidth(155);
    NameGrid->addWidget(textLabel,0,0);
    NameGrid->addWidget(NameTextbox,0,1);
    grouper->setLayout(TypeGrid);
    ResetGrid->addWidget(grouper,0,0);
    ResetGrid->addLayout(NameGrid,0,1);
    ResetGrid->addWidget(ButtonBox,0,2);
    QObject::connect(ButtonBox, SIGNAL(accepted()), ResetDialog, SLOT(accept()));
    QObject::connect(ButtonBox, SIGNAL(rejected()), ResetDialog, SLOT(reject()));
}

static inline void DestroyWindow (){
    delete TypeTimerRadio;
    delete TypeCounterRadio;
    delete NameTextbox;
    delete ButtonBox;
    delete ResetGrid;
    delete ResetDialog;
    ProgramChanged();
}

void ShowResetDialog(char *name)
{
    ResetDialog = CreateWindowClient(_("Reset"),
        100, 100, 359, 115, MainWindow);
    ResetGrid = new QGridLayout(ResetDialog);
    ResetDialog->setWindowTitle("Reset");
    // CoilDialog->setFixedSize(359,115);
    MakeControls();
    NameTextbox->setValidator(
        new QRegExpValidator(QRegExp("[a-zA-Z0-9_]+")));

    if(name[0] == 'T') {
        TypeTimerRadio->setChecked(TRUE);
    } else{
        TypeCounterRadio->setChecked(TRUE);
    }
    NameTextbox->setText(name + 1);
    NameTextbox->setFocus();

    int ret = ResetDialog->exec();
    switch(ret)
    {
        case QDialog::Accepted:
        {
            if(TypeTimerRadio->isChecked())
            {
                name[0] = 'T';
            }else {
                name[0] = 'C';
            }
            strncpy(name +1, NameTextbox->text().toStdString().c_str(),16);
        }
        break;
        case QDialog::Rejected:
        break;
    }
    DestroyWindow();
}