Пример #1
0
static gboolean Save_shortcuts(GtkWidget *button, gpointer pointer)
{
	GtkTreeIter iter;
	GtkTreeView *treeview = (GtkTreeView *)pointer;
	GtkTreeModel *model = gtk_tree_view_get_model (treeview);
	gint i = 0;

	remove_shortcuts();

	if(gtk_tree_model_get_iter_first(model, &iter))
	{
		do
		{
			i++;
		}
		while(gtk_tree_model_iter_next(model, &iter));

		gtk_tree_model_get_iter_first(model, &iter);

		macros = g_malloc((i + 1) * sizeof(macro_t));
		i = 0;
		if(macros != NULL)
		{
			do
			{
				gtk_tree_model_get(model, &iter, COLUMN_SHORTCUT, &(macros[i].shortcut), \
				                   COLUMN_ACTION, &(macros[i].action), \
				                   -1);
				i++;
			}
			while(gtk_tree_model_iter_next(model, &iter));

			macros[i].shortcut = NULL;
			macros[i].action = NULL;
		}
	}

	add_shortcuts();

	return FALSE;
}
Пример #2
0
int main(int argc, char *argv[])
{
	gchar *message;

	config_file = g_strdup_printf("%s/.gtktermrc", getenv("HOME"));

	bindtextdomain(PACKAGE, LOCALEDIR);
	bind_textdomain_codeset(PACKAGE, "UTF-8");
	textdomain(PACKAGE);

	gtk_init(&argc, &argv);

	create_buffer();

	create_main_window();

	if(read_command_line(argc, argv) < 0)
	{
		delete_buffer();
		exit(1);
	}

	Config_port();

	message = get_port_string();
	Set_window_title(message);
	Set_status_message(message);
	g_free(message);

	add_shortcuts();

	set_view(ASCII_VIEW);

	gtk_main();

	delete_buffer();

	Close_port();

	return 0;
}
Пример #3
0
//------------------------------------------------------------------------------
void mforms::gtk::MenuItemImpl::set_shortcut(mforms::MenuItem *item, const std::string &item_shortcut) {
  if (item_shortcut.empty()) {
    logWarning("Shortcut is empty\n");
    return;
  }

  Gtk::MenuItem *menu_item = cast<Gtk::MenuItem *>(item->get_data_ptr());

  if (menu_item == NULL) {
    logError("Menu item was not defined (%s)\n", item_shortcut.c_str());
    return;
  }

  // convert the accelerator format from Control+X to <control>x which is recognized by gtk
  std::vector<std::string> parts(base::split(item_shortcut, "+"));

  std::vector<std::string> keys;
  std::string key = parts.back();
  parts.pop_back();

  if (key == "Space")
    keys.push_back("space");
  else if (key == "PageUp") {
    keys.push_back("Page_Up");
    keys.push_back("KP_Page_Up");
  } else if (key == "PageDown") {
    keys.push_back("Page_Down");
    keys.push_back("KP_Page_Down");
  } else if (key == "Slash") {
    keys.push_back("slash");
    keys.push_back("KP_Divide");
  } else if (key == "Minus") {
    keys.push_back("minus");
    keys.push_back("KP_Subtract");
  } else if (key == "Plus") {
    keys.push_back("plus");
    keys.push_back("KP_Add");
  } else if (key == "Asterisk") {
    keys.push_back("multiply");
    keys.push_back("KP_Multiply");
  } else if (key == "Period") {
    keys.push_back("period");
    keys.push_back("KP_Decimal");
  } else if (key == "Return") {
    keys.push_back("Return");
    keys.push_back("KP_Enter");
  } else if (key == "Home") {
    keys.push_back("Home");
    keys.push_back("KP_Home");
  } else if (key == "End") {
    keys.push_back("End");
    keys.push_back("KP_End");
  } else if (key == "Insert") {
    keys.push_back("Insert");
    keys.push_back("KP_Insert");
  } else if (key == "Delete") {
    keys.push_back("Delete");
    keys.push_back("KP_Delete");
  } else if (key == "Up") {
    keys.push_back("Up");
    keys.push_back("KP_Up");
  } else if (key == "Down") {
    keys.push_back("Down");
    keys.push_back("KP_Down");
  } else if (key == "Left") {
    keys.push_back("Left");
    keys.push_back("KP_Left");
  } else if (key == "Right") {
    keys.push_back("Right");
    keys.push_back("KP_Right");
  } else if (key == "0") {
    keys.push_back("0");
    keys.push_back("KP_0");
  } else if (key == "1") {
    keys.push_back("1");
    keys.push_back("KP_1");
  } else if (key == "2") {
    keys.push_back("2");
    keys.push_back("KP_2");
  } else if (key == "3") {
    keys.push_back("3");
    keys.push_back("KP_3");
  } else if (key == "4") {
    keys.push_back("4");
    keys.push_back("KP_4");
  } else if (key == "5") {
    keys.push_back("5");
    keys.push_back("KP_5");
  } else if (key == "6") {
    keys.push_back("6");
    keys.push_back("KP_6");
  } else if (key == "7") {
    keys.push_back("7");
    keys.push_back("KP_7");
  } else if (key == "8") {
    keys.push_back("8");
    keys.push_back("KP_8");
  } else if (key == "9") {
    keys.push_back("9");
    keys.push_back("KP_9");
  } else
    keys.push_back(key);

  // if the item is not in a menu yet, the shortcut adding will be deferred
  if (item->get_parent() && get_accel_group(item->get_parent()))
    add_shortcuts(get_accel_group(item->get_parent()), menu_item, parts, keys);
}