Пример #1
0
/*
 * Delete Row clicked for table
 */
void AngleDialog::deleteClicked()
{
    int row = mTable->currentRow();
    Ilist *saved = mApp->getSavedList();
    if (row < 0 || row >= ilistSize(saved))
        return;
    ilistRemove(saved, row);
    updateTable();
    mApp->setSaveModified();
}
Пример #2
0
/*!
 * Pops an item off the front of [list] and returns it; returns NULL if error.
 * The item has been malloc'ed and must be freed */
void *ilistPop(Ilist *list)
{
  void *data;
     
  if (!list->size) 
    return (NULL);
  data = (void *)malloc(list->dsize);
  if (!data)
    return(NULL);
  memcpy(data, list->data, list->dsize);
  ilistRemove(list, 0);
  return(data);
}
Пример #3
0
// Remove the given obj, cont from the selection list if it is on it
void imodSelectionListRemove(ImodView *vi, int ob, int co)
{
  Iindex *index;
  int i;

  for (i = 0; i < ilistSize(vi->selectionList); i++) {
    index = (Iindex *)ilistItem(vi->selectionList, i);
    if (index->object == ob && index->contour == co) {
      ilistRemove(vi->selectionList, i);
      imodTrace('S', "Removing item %d, leaves %d", i, ilistSize(vi->selectionList));
      return;
    }
  }
}
Пример #4
0
void ImodvOlist::toggleGroupSlot(int ob)
{
  int index;
  bool state;
  IobjGroup *group = (IobjGroup *)ilistItem(Imodv->imod->groupList, 
                                            Imodv->imod->curObjGroup);
  if (!group)
    return;
  index = objGroupLookup(group, ob);
  state = groupButtons[ob]->isChecked();
  if (state && index < 0)
    objGroupAppend(group, ob);
  else if (!state && index >= 0)
    ilistRemove(group->objList, index);
}
Пример #5
0
/*! Moves the item at [element] to the front of [list]; returns 1 if error */
int ilistFloat(Ilist *list, int element)
{
  void *data;
  char *p1;
  int err;

  if (element < 1 || element >= list->size)
    return 1;

  p1 = (char *)list->data + (element * list->dsize);
  data = (void *)malloc(list->dsize);
  if (!data)
    return 1;

  memcpy(data, p1, list->dsize);
  ilistRemove(list, element);
  err = ilistPush(list, data);
  free(data);
  return err;
}
Пример #6
0
static void removeFromOpenedList(ImodImageFile *iiFile)
{
  int i = findFileInList(iiFile, NULL);
  if (i >= 0)
    ilistRemove(sOpenedFiles, i);
}
Пример #7
0
void ImodvOlist::actionButtonClicked(int which)
{
  Imod *imod = Imodv->imod;
  IobjGroup *group, *ogroup;
  int ob, index, changed = 1;

  if (which != OBJGRP_NEW && which != OBJGRP_DELETE) {
    group = (IobjGroup *)ilistItem(imod->groupList, imod->curObjGroup);
    if (!group)
      return;
  }

  switch (which) {
  case OBJGRP_NEW:
    imodvRegisterModelChg();
    group = objGroupListExpand(&imod->groupList);
    if (!group)
      break;
    ogroup = (IobjGroup *)ilistItem(imod->groupList, imod->curObjGroup);
    if (ogroup)
      group->objList = ilistDup(ogroup->objList);
    imod->curObjGroup = ilistSize(imod->groupList) - 1;
    updateGroups(Imodv);
    break;

  case OBJGRP_DELETE:
    if (imod->curObjGroup < 0)
      return;
    imodvRegisterModelChg();
    if (objGroupListRemove(imod->groupList, imod->curObjGroup))
      break;
    imod->curObjGroup = B3DMIN(B3DMAX(0, imod->curObjGroup - 1),
                               ilistSize(imod->groupList) - 1);
    updateGroups(Imodv);
    break;

  case OBJGRP_CLEAR:
    imodvRegisterModelChg();
    ilistTruncate(group->objList, 0);
    updateGroups(Imodv);
    break;

  case OBJGRP_ADDALL:
    imodvRegisterModelChg();
    if (group->objList)
      ilistTruncate(group->objList, 0);
    for (ob = 0; ob < imod->objsize; ob++)
      if (objGroupAppend(group, ob))
        return;
    updateGroups(Imodv);
    break;

  case OBJGRP_SWAP:
    imodvRegisterModelChg();
    for (ob = 0; ob < imod->objsize; ob++) {
      index = objGroupLookup(group, ob);
      if (index >= 0)
        ilistRemove(group->objList, index);
      else
        if (objGroupAppend(group, ob))
          return;
    }
    updateGroups(Imodv);
    break;

  case OBJGRP_TURNON:
  case OBJGRP_TURNOFF:
  case OBJGRP_OTHERSON:
  case OBJGRP_OTHERSOFF:
    changed = 0;
    for (ob = 0; ob < imod->objsize; ob++) {
      index = objGroupLookup(group, ob);
      if (((index >= 0 && which == OBJGRP_TURNON) || 
           (index < 0 && which == OBJGRP_OTHERSON)) && 
          iobjOff(imod->obj[ob].flags)) {
        imodvRegisterObjectChg(ob);
        imod->obj[ob].flags &= ~IMOD_OBJFLAG_OFF;
        changed = 1;
      } else if (((index >= 0 && which == OBJGRP_TURNOFF) ||
                  (index < 0 && which == OBJGRP_OTHERSOFF)) &&
                 !iobjOff(imod->obj[ob].flags)) {
        imodvRegisterObjectChg(ob);
        imod->obj[ob].flags |= IMOD_OBJFLAG_OFF;
        changed = 1;
      }
    }
    imodvDraw(Imodv);
    imodvDrawImodImages();
    imodvObjedNewView();
    break;

  }
  if (changed)
    imodvFinishChgUnit();
}