예제 #1
0
void SequenceEditor::slotInsert()
{
  assert(m_tempValues);

  QListViewItem* item = NULL;
  if (m_list->currentItem())
    {
      item = new QListViewItem(m_list, m_list->currentItem());
    }
  else
    {
      item = new QListViewItem(m_list, m_list->lastItem());
    }

  QString s;
  for (t_channel ch = 0; ch < m_channels; ch++)
    {
      s.sprintf("%.3d", m_tempValues[ch].value);
      if (m_tempValues[ch].type == Scene::NoSet)
	{
	  item->setText(ch, "---");
	}
      else
	{
	  item->setText(ch, s);
	}

      // Rename doesn't work with rmb click in pre 3.3, 
      // so it won't be available anywhere
      item->setRenameEnabled(ch, false);
    }

  m_list->setSelected(item, true);
  m_list->ensureItemVisible(item);
}
void VariablesListViewItem::setRenameEnabled( int col, bool b ) {
  QListViewItem::setRenameEnabled(col, b);

  QListViewItem* item = firstChild();
  while(item) {
    item->setRenameEnabled(col, b);
    item = item->nextSibling();
  }
}
예제 #3
0
void EditFunctions::functionAdd( const QString &access, const QString &type )
{
    QListViewItem *i = new QListViewItem( functionListView );
    i->setPixmap( 0, QPixmap::fromMimeSource( "designer_editslots.png" ) );
    i->setRenameEnabled( 0, TRUE );
    i->setText( 1, "void" );
    i->setText( 2, "virtual" );

    if ( access.isEmpty() )
        i->setText( 3, "public" );
    else
        i->setText( 3, access );

    if( type.isEmpty() ) {
        if ( showOnlySlots->isChecked() )
            i->setText( 4, "slot" );
        else {
            i->setText( 4, lastType );
        }
    } else {
        i->setText( 4, type );
    }

    if ( i->text( 4 ) == "slot" ) {
        i->setText( 0, "newSlot()" );
        if ( MetaDataBase::isSlotUsed( formWindow, "newSlot()" ) )
            i->setText( 5, tr( "Yes" ) );
        else
            i->setText( 5, tr( "No" ) );
    } else {
        i->setText( 0, "newFunction()" );
        i->setText( 5, "---" );
    }

    functionListView->setCurrentItem( i );
    functionListView->setSelected( i, TRUE );
    functionListView->ensureItemVisible( i );
    functionName->setFocus();
    functionName->selectAll();

    FunctItem fui;
    fui.id = id;
    fui.oldName = i->text( 0 );
    fui.newName = fui.oldName;
    fui.oldRetTyp = i->text( 1 );
    fui.retTyp = fui.oldRetTyp;
    fui.oldSpec = i->text ( 2 );
    fui.spec = fui.oldSpec;
    fui.oldAccess = i->text( 3 );
    fui.access = fui.oldAccess;
    fui.oldType = i->text( 4 );
    fui.type = fui.oldType;
    lastType = fui.oldType;
    functList.append( fui );
    functionIds.insert( i, id );
    id++;
}
예제 #4
0
void ListViewEditor::itemNewClicked()
{
    QListViewItem *item = new QListViewItem( itemsPreview );
    item->setText( 0, "Item" );
    item->setRenameEnabled( 0, TRUE );
    itemsPreview->setCurrentItem( item );
    itemsPreview->setSelected( item, TRUE );
    itemText->setFocus();
    itemText->selectAll();
}
void VariablesListView::setReadOnly(bool readOnly)
{
  m_isReadOnly = readOnly;

  QListViewItem* item = firstChild();
  while(item)
  {
    item->setRenameEnabled(ValueCol, !m_isReadOnly);
    item = item->nextSibling();
  }
}
예제 #6
0
void ListViewEditor::itemNewSubClicked()
{
    QListViewItem *parent = itemsPreview->currentItem();
    QListViewItem *item = 0;
    if ( parent ) {
	item = new QListViewItem( parent );
	parent->setOpen( TRUE );
    } else {
	item = new QListViewItem( itemsPreview );
    }
    item->setText( 0, "Subitem" );
    item->setRenameEnabled( 0, TRUE );
    itemsPreview->setCurrentItem( item );
    itemsPreview->setSelected( item, TRUE );
}
예제 #7
0
extern "C" int
create_qt_ui(RC_CONF *my_rc,
             int argc, char **argv)
{
    int i;
    char *homedir;
    char temp[FILENAME_MAX];
    int fd;
    FILE *fp;
    QListViewItem *element;
    QCheckListItem *foo;

    MyDialogs my_dialogs;
    TableCallbacks my_tablecallbacks;

    thefish = new QApplication( argc, argv);

    // It's more convenient to have these
    // as global.
    my_rc_knobs = my_rc->knobs_ptr;
    my_rc_strings = my_rc->string_ptr;

    my_num_knobs = my_rc->knobs_size;
    my_num_strings = my_rc->string_size;

    mw = new QMainWindow;

    QVBox *vbox = new QVBox(mw, 0, 0);

    QTabWidget main_tab(vbox, 0, 0);

    knobs_table = new QListView;
    strings_table = new QListView;

    strings_table->setAllColumnsShowFocus(TRUE);

    knobs_table->addColumn("Variable Name", -1);

    strings_table->addColumn("Name", -1);
    strings_table->addColumn("Value",-1);

    QObject::connect(strings_table, SIGNAL(itemRenamed(QListViewItem*, int, const QString &)),
                     &my_tablecallbacks, SLOT(StringChanged(QListViewItem*, int, const QString &)));


    QObject::connect(knobs_table, SIGNAL(clicked(QListViewItem *)),
                     &my_tablecallbacks, SLOT(KnobChanged(QListViewItem*)));


    QObject::connect(strings_table, SIGNAL(clicked(QListViewItem *)),
                     &my_tablecallbacks, SLOT(StringClicked(QListViewItem*)));

    main_tab.addTab(knobs_table, "Knobs");
    main_tab.addTab(strings_table, "Strings");

    QHBox *hbuttons = new QHBox(vbox, 0, 0);

    SaveButton = new QPushButton("&Save", hbuttons, 0);
    QPushButton AddButton("&Add", hbuttons, 0);
    QPushButton AboutButton("A&bout", hbuttons, 0);
    QPushButton QuitButton("&Quit",  hbuttons, 0);

    // No save for now...
    SaveButton->setEnabled(false);

    QObject::connect(&QuitButton, SIGNAL(clicked()), &my_dialogs, SLOT(CheckSaved()));
    QObject::connect(&AboutButton, SIGNAL(clicked()), &my_dialogs, SLOT(ShowAbout()));
    QObject::connect(&AddButton, SIGNAL(clicked()), &my_dialogs, SLOT(DoAdd()));
    QObject::connect(SaveButton, SIGNAL(clicked()), &my_dialogs, SLOT(DoSave()));

    // We're now using human readable data, handle the migration
    // transparently for the user.
    homedir = getenv("HOME");

    if (homedir != NULL) {

        snprintf(temp, FILENAME_MAX, "%s/%s", homedir, ".thefishrc");
        fd = open(temp, O_RDONLY, 0);

        if (fd != -1 ) {

            i = lseek(fd, 0, SEEK_END);
            lseek(fd, 0, SEEK_SET);

            if (i == sizeof(oldsize)) {

                read(fd, &oldsize[0], sizeof(oldsize));
                close(fd);

            } else {

                fp = fdopen(fd, "r");
                fscanf(fp, "geometry=%i,%i", &oldsize[0], &oldsize[1]);
                fclose(fp);

            }

        } else  {
            // Set some default values
            oldsize[0] = 400;
            oldsize[1] = 480;

        }

    }

    // Build the table

    knobs_table->setColumnWidthMode (1, QListView::Maximum);
    knobs_table->setRootIsDecorated(false);

    for (i = my_rc->knobs_size - 1; i >= 0; i--) {

        // No user comments yet
        (my_rc->knobs_ptr+i)->user_comment = 0;

        foo = new QCheckListItem( knobs_table, (my_rc->knobs_ptr+i)->name, QCheckListItem::CheckBox);

        if ((my_rc->knobs_ptr+i)->knob_val == KNOB_IS_NO) {

            foo->setOn(FALSE);

        } else {

            foo->setOn(TRUE);

        }

    }

    for (i = my_rc->string_size - 1; i >= 0; i--) {

        // No user comments yet
        (my_rc->string_ptr+i)->user_comment = 0;

        element = new QListViewItem(strings_table,
                                    (my_rc->string_ptr+i)->name,
                                    (my_rc->string_ptr+i)->value);
        element->setRenameEnabled(0, FALSE);
        element->setRenameEnabled(1, TRUE);

    }

    // Set the app icon
    QPixmap my_icon((const char **) fish64_xpm);

    mw->setIcon((const QPixmap ) my_icon);

    mw->setCaption("The Fish " THE_FISH_VERSION);
    mw->setCentralWidget( vbox );
    thefish->setMainWidget(mw);
    mw->show();
    mw->resize(oldsize[0], oldsize[1]);

    dirty = 0;

    my_status_bar = mw->statusBar();
    my_status_bar->message("Ready");

    return thefish->exec();

}
예제 #8
0
void
MyDialogs::DoAdd()
{
    int i;
    int dupe,invalid;
    char c, d;
    QString my_name, my_value, my_comment;
    QCheckListItem *foo;
    QListViewItem *element;
    char *new_name, *new_value, *new_comment;

    QDialog *my_add_dialog = new QDialog(mw, "my_add_dialog", 0);
    QBoxLayout *add_vbox = new QVBoxLayout(my_add_dialog);

    QTable *table = new QTable(3, 2, my_add_dialog);

    add_vbox->addWidget(table);

    table->setText(0, 0, "Name");

    table->setText(1, 0, "Value");
    table->setText(1, 1, "\"\"");

    table->setText(2, 0, "Optional comment");

    table->setColumnReadOnly(0, true);

    table->adjustColumn(0);
    table->setColumnWidth(1, 180);

    table->setLeftMargin(0);
    table->setTopMargin(0);

    QHBox *add_hbuttons = new QHBox(my_add_dialog, 0, 0);

    add_vbox->addWidget(add_hbuttons);

    QPushButton *AddYesButton = new QPushButton("&OK", add_hbuttons, 0);
    QPushButton *AddNoButton = new QPushButton("&Cancel", add_hbuttons, 0);

    QObject::connect(AddYesButton, SIGNAL(clicked()), my_add_dialog, SLOT(accept()));
    QObject::connect(AddNoButton, SIGNAL(clicked()), my_add_dialog, SLOT(reject()));

    add_vbox->setResizeMode(QLayout::Auto);
    add_vbox->activate();

    my_add_dialog->setCaption("Add a new entry");

    if (my_add_dialog->exec() == QDialog::Accepted) {

        dupe = 0;
        invalid = 0;
        my_name = table->text( 0, 1);
        my_value = table->text(1, 1);
        my_comment = table->text(2, 1);

        new_name = (char *) my_name.ascii();
        new_value = (char *) my_value.ascii();
        new_comment = (char *) my_comment.ascii();

        if (new_name == NULL || new_value == NULL) {

            QMessageBox::critical(0, "The Fish",
                                  "Name and Value cannot be null.");

            delete(my_add_dialog);
            return;

        }

        for (i = 0; i < my_num_knobs; i++) {

            if (strncmp(my_name.ascii(), (my_rc_knobs+i)->name, 255) == 0) {

                dupe = 1;
                break;

            }

        }

        for (i = 0; i < my_num_strings; i++) {

            if (strncmp(my_name.ascii(), (my_rc_strings+i)->name, 255) == 0) {

                dupe = 1;
                break;

            }

        }

        if (dupe == 1) {

            QMessageBox::critical(0, "The Fish",
                                  "An entry with that name already exists.");


        } else {

            c = new_value[0];
            d = new_value[strlen(new_value)-1];

            if (c != '"' || d != '"') {

                QMessageBox::critical(0, "The Fish",
                                      "Value must begin and end with \".");

                delete(my_add_dialog);
                return;

            }

            // It's a knob set to YES
            if (strncasecmp(new_value, KNOB_YES, 255) == 0) {

                (my_rc_knobs+my_num_knobs)->user_comment = 0;
                (my_rc_knobs+my_num_knobs)->user_added = USER_ADDED_YES;
                (my_rc_knobs+my_num_knobs)->knob_val = KNOB_IS_YES;
                (my_rc_knobs+my_num_knobs)->knob_orig = KNOB_IS_YES;
                (my_rc_knobs+my_num_knobs)->modified = MODIFIED_YES;

                strncpy((my_rc_knobs+my_num_knobs)->name, new_name, 255);


                if (new_comment != NULL) {

                    if (strlen(new_comment) > 1) {

                        strncpy((my_rc_knobs+my_num_knobs)->comment, new_comment, 255);
                        (my_rc_knobs+my_num_knobs)->user_comment = 1;

                    }

                }

                foo = new QCheckListItem(knobs_table, (my_rc_knobs+my_num_knobs)->name,
                                         QCheckListItem::CheckBox);
                foo->setOn(TRUE);

                my_num_knobs++;
                dirty++;
                SaveButton->setEnabled(TRUE);

                // It's a knob set to NO
            } else if (strncasecmp(new_value, KNOB_NO, 255) == 0) {

                (my_rc_knobs+my_num_knobs)->user_comment = 0;
                (my_rc_knobs+my_num_knobs)->user_added = USER_ADDED_YES;
                (my_rc_knobs+my_num_knobs)->knob_val = KNOB_IS_NO;
                (my_rc_knobs+my_num_knobs)->knob_orig = KNOB_IS_NO;
                (my_rc_knobs+my_num_knobs)->modified = MODIFIED_YES;

                strncpy((my_rc_knobs+my_num_knobs)->name, new_name, 255);


                if (new_comment != NULL) {

                    if (strlen(new_comment) > 1) {

                        strncpy((my_rc_knobs+my_num_knobs)->comment, new_comment, 255);
                        (my_rc_knobs+my_num_knobs)->user_comment = 1;

                    }

                }

                foo = new QCheckListItem(knobs_table, (my_rc_knobs+my_num_knobs)->name,
                                         QCheckListItem::CheckBox);
                foo->setOn(FALSE);

                my_num_knobs++;
                dirty++;
                SaveButton->setEnabled(TRUE);

                // It's a string
            } else {

                (my_rc_strings+my_num_strings)->user_comment = 0;
                (my_rc_strings+my_num_strings)->user_added = USER_ADDED_YES;
                (my_rc_strings+my_num_strings)->modified = MODIFIED_YES;

                strncpy((my_rc_strings+my_num_strings)->name, new_name, 255);
                strncpy((my_rc_strings+my_num_strings)->value, new_value, 255);
                strncpy((my_rc_strings+my_num_strings)->orig, new_value, 255);

                if (new_comment != NULL) {

                    if (strlen(new_comment) > 1) {

                        strncpy((my_rc_strings+my_num_strings)->comment, new_comment, 255);
                        (my_rc_strings+my_num_strings)->user_comment = 1;

                    }

                }

                element = new QListViewItem(strings_table,
                                            (my_rc_strings+my_num_strings)->name,
                                            (my_rc_strings+my_num_strings)->value);

                element->setRenameEnabled(0, FALSE);
                element->setRenameEnabled(1, TRUE);

                my_num_strings++;
                dirty++;
                SaveButton->setEnabled(TRUE);

            }

        }

    }

    delete(my_add_dialog);

}