Beispiel #1
0
// XML element start
void cPreferences :: elementStart( const CEGUI::String &element, const CEGUI::XMLAttributes &attributes )
{
	if( element == "Item" )
	{
		handle_item( attributes );
	}
}
Beispiel #2
0
rss_body *handle_body(be_node *node) {
  // Allocate memory for result
  rss_body *result = (rss_body *) malloc(sizeof(rss_body));

  if (node->type == BE_DICT) {
    size_t i, j;

    // This node is a dictionary, as expected
    // Now read through all elements and put the common ones in our struct
    for (i = 0, j = 0; node->val.d[i].val; ++i) {     
      if (strcmp(node->val.d[i].key, "title") == 0) { 
        result->title = node->val.d[i].val->val.s;

      } else if (strcmp(node->val.d[i].key, "description") == 0) {
        result->description = node->val.d[i].val->val.s;

      } else if (strcmp(node->val.d[i].key, "link") == 0) {
        result->link = node->val.d[i].val->val.s;

      } else if (strcmp(node->val.d[i].key, "language") == 0) {
        result->language = node->val.d[i].val->val.s;

      } else if (strncmp(node->val.d[i].key, "item:", 5) == 0) {
        // Initial memory to be used for 'item'-entries
        int toInit = 5;

        if (j == 0) {
          // First run, so allocate the memory for the 'toInit' elements
          result->item = malloc(sizeof(rss_entry *) * toInit);

        } else if (j >= toInit) {
          // There are more elements then we expected in 'toInit', so allocate extra memory
          result->item = realloc(result->item,(j+1)*sizeof(rss_entry));         
        }
        // Add the 'item'-entry and increase counter 'j'
        result->item[j++] = handle_item(node->val.d[i].val);                           
      }
    }
  } 

  return result;
}
Beispiel #3
0
void item_list::execute()
{
  const std::string keys = "\x1B \nabcdefghijklmnopqrstuvwxyz<>?";
  char key = 0;
  bool done = false;

  while (!done)
  {
    print();
    key = wait_for_key(keys);

    if (char_in(key, "\x1B \n"))
    {
      if (m_examine_mode)
      {
        m_examine_mode = false;
      }
      else
      {
        break;
      }
    }

    if (key == '<')
    {
      if (m_page > 0)
      {
        m_page--;
      }
    }
    else if (key == '>')
    {
      if (m_page == 0 && m_items.size() > PAGE_SIZE)
      {
        m_page++;
      }
    }
    else if (key == '?')
    {
      m_examine_mode = !m_examine_mode;
    }
    else if (valid_entry(key))
    {
      if (!m_examine_mode)
      {
        done = handle_item(get_entry(key).item);
      }
      else
      {
        item_t* item_to_describe = get_entry(key).item;
        describe(item_to_describe);
      }
    }
  }

  if (m_action == ZAP)
  {
    if (key == '\x1B' || key == ' ' || key == '\n')
    {
      // Pop wand selection state.
      statestack_pop();
    }
  }

  // Always cancel if escape;
  if (key == '\x1B')
  {
    m_chosen_items.clear();
    return;
  }

  if (m_action == DROP)
  {
    handle_dropped();
  }
}