// commanddialog.cpp // // This program is free software. See the file COPYING for details. // Author: Mattias EngdegÄrd, 1997-1999 #include "commanddialog.h" #include "qps.h" #include "command.h" #include "commandutils.h" #include "commandmodel.h" #include #include #include #include #include #include #include #include #include #include #include extern QList commands; CommandDialog::CommandDialog() { setWindowTitle("Edit Commands 0.1 alpha"); // setWindowFlags(Qt::WindowStaysOnTopHint); QHBoxLayout *hbox = new QHBoxLayout(this); // TOP CommandModel *cmdModel = new CommandModel(this); // item list listview = new QListView(this); listview->setModel(cmdModel); listview->setFixedWidth(fontMetrics().width("0") * 16); hbox->addWidget(listview); QVBoxLayout *vbox = new QVBoxLayout; // TOP-> RIGHT hbox->addLayout(vbox); QHBoxLayout *h1 = new QHBoxLayout; vbox->addLayout(h1); QLabel *l1 = new QLabel("Name:", this); h1->addWidget(l1); name = new QLineEdit(this); name->setMinimumWidth(170); name->setText(""); h1->addWidget(name); QHBoxLayout *hbox2 = new QHBoxLayout; vbox->addLayout(hbox2); // qcheck1 = new QCheckBox (this); // qcheck1->setText("Toolbar"); // qcheck1->setEnabled(false); // hbox2->addWidget(qcheck1); if (0) { qcheck2 = new QCheckBox(this); qcheck2->setText("Popup"); qcheck2->setEnabled(false); hbox2->addWidget(qcheck2); } QLabel *l2 = new QLabel("Command Line:", this); l2->setFixedHeight(l2->sizeHint().height()); l2->setAlignment(Qt::AlignVCenter | Qt::AlignLeft); vbox->addWidget(l2); cmdline = new QLineEdit(this); cmdline->setFixedHeight(cmdline->sizeHint().height()); cmdline->setMinimumWidth(250); cmdline->setText(""); vbox->addWidget(cmdline); QLabel *l3 = new QLabel("Substitutions:\n" "%p\tPID\n" "%c\tCOMMAND\n%C\tCMDLINE\n%u\tUSER\n" "%%\t%\n" "\n", this); l3->setFrameStyle(QFrame::Panel); l3->setFrameShadow(QFrame::Sunken); l3->setAlignment(Qt::AlignVCenter | Qt::AlignLeft); // | Qt::ExpandTabs); vbox->addWidget(l3); QHBoxLayout *hl = new QHBoxLayout; vbox->addLayout(hl); new0 = new QPushButton("New...", this); hl->addWidget(new0); add = new QPushButton("Add...", this); hl->addWidget(add); del = new QPushButton("Delete", this); hl->addWidget(del); button_ok = new QPushButton("Close", this); hl->addWidget(button_ok); connect(listview, SIGNAL(clicked(const QModelIndex &)), SLOT(set_select(const QModelIndex &))); connect(new0, SIGNAL(clicked()), SLOT(new_cmd())); connect(add, SIGNAL(clicked()), SLOT(add_new())); connect(del, SIGNAL(clicked()), SLOT(del_current())); connect(button_ok, SIGNAL(clicked()), SLOT(close())); connect(name, SIGNAL(textChanged(const QString &)), SLOT(event_name_midified(const QString &))); connect(cmdline, SIGNAL(textChanged(const QString &)), SLOT(event_cmd_modified())); // connect(qcheck1, SIGNAL(toggled ( bool ) ), // SLOT(event_toolbar_checked(bool // ))); TBloon *bloon = new TBloon(this); /// for(int i = 0; i < commands.size(); i++) /// listview->insertItem(commands[i]->name); // listview->addItem(commands[i]->name); /// vbox->freeze(); } // DEL void CommandDialog::event_toolbar_checked(bool on) { // name->text(); int idx = find_command(name->text()); if (idx >= 0) commands[idx]->toolbar = on; /// controlbar->update_bar(); } void CommandDialog::event_name_midified(const QString &new_name) { int idx; FUNC_START; // printf("debug:changed_description() start \n"); idx = find_command(new_name); if (idx == -1) { add->setEnabled(1); } else add->setEnabled(0); // printf("debug:changed_description() end \n"); } // if modified then call this function void CommandDialog::event_cmd_modified() { int idx; // if(name->text()=="") return; if (find_command(name->text()) < 0) return; idx = find_command(name->text()); commands[idx]->name = name->text(); commands[idx]->cmdline = cmdline->text(); emit command_change(); } // set the description,cmdline from current selected QListBox item void CommandDialog::set_buttons(int index) { if (index < 0) { new_cmd(); return; } /* //bool sel = (lb->currentRow() >= 0); Command *c ; if(sel) //c = commands[find_command(lb->currentText())]; c = commands[find_command(lb->currentText())]; else c = commands[find_command(lb->text(index))]; name->setText(c->name); cmdline->setText(c->cmdline); del->setEnabled(sel); */ } // called when clicked ! void CommandDialog::set_select(const QModelIndex &index) { Command *c = static_cast(index.internalPointer()); // never Null ? /* if (item==NULL) return; // important Command *c = commands[find_command(item->text())]; */ name->setText(c->name); cmdline->setText(c->cmdline); // DEL qcheck1->setChecked(c->toolbar); // qcheck2->setChecked(c->popup); // bool sel = (listview->currentItem() >= 0); if (c->name == "Update") del->setEnabled(false); else del->setEnabled(true); } void CommandDialog::reset() { listview->reset(); name->setText(""); cmdline->setText(""); add->setText("Add..."); add->setEnabled(0); button_ok->setEnabled(1); listview->clearSelection(); } void CommandDialog::new_cmd() { reset(); add->setEnabled(1); name->setFocus(); } void CommandDialog::add_new() { if (name->text() == "") return; // commands.add(new Command(name->text(), // cmdline->text(),qcheck1->isChecked // () )); commands.append(new Command(name->text(), cmdline->text(), false)); check_commandAll(); // TEMP listview->reset(); add->setEnabled(0); del->setEnabled(0); button_ok->setEnabled(1); emit command_change(); // notice to refresh Qps::make_command_menu() // control_bar->update_bar(); // ** important } void CommandDialog::del_current() { int idx = find_command(name->text()); if (idx >= 0) { // printf("del\n"); commands.removeAt(idx); listview->reset(); // listview->reset(); // control_bar->update_bar(); emit command_change(); // notice to refresh menu_commands } }