Example #1
0
static void
hippo_status_icon_popup_menu(GtkStatusIcon *gtk_icon,
                             guint          button,
                             guint32        activate_time)
{
    HippoStatusIcon *icon = HIPPO_STATUS_ICON(gtk_icon);
    GtkWidget *menu_item;
    GtkWidget *label;

    /* We used to only show the Quit item in "leet_mode" */
    GdkModifierType state;
    gboolean leet_mode;
    
    leet_mode = FALSE;
    if (gtk_get_current_event_state(&state)) {
        if (state & GDK_CONTROL_MASK)
            leet_mode = TRUE;
    }
    
    destroy_menu(icon);
    
    icon->popup_menu = gtk_menu_new();

    menu_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_HOME, NULL);
    label = gtk_bin_get_child(GTK_BIN(menu_item));
    gtk_label_set_text(GTK_LABEL(label), _("My Mugshot home page"));
    g_signal_connect_swapped(menu_item, "activate", G_CALLBACK(hippo_app_show_home),
        hippo_get_app());
    gtk_widget_show(menu_item);
    gtk_menu_shell_append(GTK_MENU_SHELL(icon->popup_menu), menu_item);
                
    menu_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, NULL);
    g_signal_connect_swapped(menu_item, "activate", G_CALLBACK(hippo_app_show_about),
        hippo_get_app());
    gtk_widget_show(menu_item);
    gtk_menu_shell_append(GTK_MENU_SHELL(icon->popup_menu), menu_item);

    menu_item = gtk_separator_menu_item_new();
    gtk_widget_show(menu_item);
    gtk_menu_shell_append(GTK_MENU_SHELL(icon->popup_menu), menu_item);
    
    if (leet_mode) {
        menu_item = gtk_menu_item_new_with_label ("Toggle Connected");
        g_signal_connect_swapped(menu_item, "activate", G_CALLBACK(on_toggle_connected_activated),
                                 NULL);
        gtk_widget_show(menu_item);
        gtk_menu_shell_append(GTK_MENU_SHELL(icon->popup_menu), menu_item);
    }
    
    menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_QUIT, NULL);
    g_signal_connect_swapped(menu_item, "activate", G_CALLBACK(on_quit_activated),
                             NULL);
    gtk_widget_show(menu_item);
    gtk_menu_shell_append(GTK_MENU_SHELL(icon->popup_menu), menu_item);

    gtk_menu_popup (GTK_MENU(icon->popup_menu), NULL, NULL,
                    gtk_status_icon_position_menu, icon,
                    button, activate_time);
    gtk_menu_shell_select_first(GTK_MENU_SHELL(icon->popup_menu), FALSE);                    
}                             
Example #2
0
File: editmenu.c Project: dborca/mc
void
edit_done_menu (struct WMenu *wmenu)
{
    int i;
    for (i = 0; i < N_menus; i++)
	destroy_menu (wmenu->menu[i]);

    g_free(wmenu->menu);
}
Example #3
0
void replayview_abort(void *a) {
	MenuData *m = a;
	m->quit = 2;
	
	if(m->context) {	// will unlikely get here
		MenuData *sm = m->context;
		destroy_menu(sm);
		m->context = NULL;
	}
}
Example #4
0
static void
hippo_status_icon_finalize(GObject *object)
{
    HippoStatusIcon *icon = HIPPO_STATUS_ICON(object);

    g_signal_handlers_disconnect_by_func(hippo_data_cache_get_connection(icon->cache),
                                         G_CALLBACK(on_state_changed), icon);

    destroy_menu(icon);
    
    g_object_unref(icon->cache);
    
    G_OBJECT_CLASS(hippo_status_icon_parent_class)->finalize(object);
}
Example #5
0
static void replayview_draw(MenuData *m) {
	draw_stage_menu(m);
	
	if(m->context) {
		MenuData *sm = m->context;
		menu_logic(sm);
		if(sm->quit == 2) {
			destroy_menu(sm);
			m->context = NULL;
		} else {
			fade_out(0.3 * (1 - sm->fade));
			replayview_draw_stagemenu(sm);
			
			if(!sm->abort && sm->quit == 1)
				m->fade = sm->fade;
		}
	}
}
Example #6
0
bool menu_extension::on_hooked_message(message_hook_manager::t_message_hook_type p_type, int code, WPARAM wp, LPARAM lp)
{
	static POINT last_pt;

	if (code == MSGF_MENU)
	{
		switch(((MSG*)lp)->message)
		{

		case WM_LBUTTONDOWN:
		case WM_RBUTTONDOWN:
			{
				SendMessage(wnd_menu, TB_SETHOTITEM, -1, 0);
				if (((MSG*)lp)->message == WM_LBUTTONDOWN)
				{
					POINT pt; RECT toolbar;
					GetClientRect(get_wnd(), &toolbar);
					pt.y = GET_Y_LPARAM(((MSG*)lp)->lParam);
					pt.x = GET_X_LPARAM(((MSG*)lp)->lParam);


					if (ScreenToClient(wnd_menu, &pt) && PtInRect(&toolbar, pt))
					{
						t_size idx = SendMessage(wnd_menu, TB_HITTEST, 0, (long)&pt);

						if (idx >= 0 && idx < m_buttons.get_count())
							redrop = false;
					}
				}
			}
			break;
		case WM_KEYDOWN:
			{
				switch ( ((MSG*)lp)->wParam )
				{
				case VK_LEFT:
					if (!sub_menu_ref_count) 
					{
						destroy_menu();
						if (active_item==1) active_item = m_buttons.get_count(); else active_item--;
						uPostMessage(get_wnd(), MSG_CREATE_MENU, active_item, 0);
					}

					break;
				case VK_RIGHT:
					if (!is_submenu) 
					{
						destroy_menu();
						if (active_item==m_buttons.get_count()) active_item = 1; else active_item++;
						uPostMessage(get_wnd(), MSG_CREATE_MENU, active_item, 0);
					}
					break;
				case VK_ESCAPE:
					if (!sub_menu_ref_count) 
					{
						SetFocus(wnd_menu);
						SendMessage(wnd_menu, TB_SETHOTITEM, active_item-1, 0);
						destroy_menu();
					}
					break;
				}
			}
			break;

		case WM_MOUSEMOVE:
			{
				POINT px;
				px.y = GET_Y_LPARAM(((MSG*)lp)->lParam);
				px.x = GET_X_LPARAM(((MSG*)lp)->lParam);
				if (px.x != last_pt.x || px.y != last_pt.y)
				{
					HWND wnd_hit = WindowFromPoint(px);
					if (wnd_hit == wnd_menu)
					{
						POINT pt = px;
						int hot_item = SendMessage(wnd_menu, TB_GETHOTITEM, 0, 0);
						if (ScreenToClient(wnd_menu, &pt))
						{

							t_size idx = SendMessage(wnd_menu, TB_HITTEST, 0, (long)&pt);

							if (idx >= 0 && idx < m_buttons.get_count() && (active_item-1) != idx)
							{
								destroy_menu();
								active_item = idx+1; 
								uPostMessage(get_wnd(), MSG_CREATE_MENU, active_item, 0);
							} 
						}
					}
				}
				last_pt = px;
			}
			break;

		}
	}
	return false;
}
void edit_done_menu (void)
{
    int i;
    for (i = 0; i < N_menus; i++)
	destroy_menu (EditMenuBar[i]);
}
Example #8
0
void destroy_ui()
{
    destroy_menu();
    destroy_dialog();
    XPLMUnregisterFlightLoopCallback(hide_dialog_flcb, NULL);
}
Example #9
0
static void
do_html_select(unsigned char *attr, unsigned char *html,
	       unsigned char *eof, unsigned char **end,
	       struct html_context *html_context)
{
	struct conv_table *ct = (struct conv_table *)html_context->special_f(html_context, SP_TABLE, NULL);
	struct form_control *fc;
	struct string lbl = NULL_STRING, orig_lbl = NULL_STRING;
	unsigned char **values = NULL;
	unsigned char **labels;
	unsigned char *name, *t_attr, *en;
	int namelen;
	int nnmi = 0;
	int order = 0;
	int preselect = -1;
	int group = 0;
	int i, max_width;
	int closing_tag;

	html_focusable(html_context, attr);
	init_menu(&lnk_menu);

se:
        en = html;

see:
        html = en;
	while (html < eof && *html != '<') html++;

	if (html >= eof) {

abort:
		*end = html;
		if (lbl.source) done_string(&lbl);
		if (orig_lbl.source) done_string(&orig_lbl);
		if (values) {
			int j;

			for (j = 0; j < order; j++)
				mem_free_if(values[j]);
			mem_free(values);
		}
		destroy_menu(&lnk_menu);
		*end = en;
		return;
	}

	if (lbl.source) {
		unsigned char *q, *s = en;
		int l = html - en;

		while (l && isspace(s[0])) s++, l--;
		while (l && isspace(s[l-1])) l--;
		q = convert_string(ct, s, l,
		                   html_context->options->cp,
		                   CSM_DEFAULT, NULL, NULL, NULL);
		if (q) add_to_string(&lbl, q), mem_free(q);
		add_bytes_to_string(&orig_lbl, s, l);
	}

	if (html + 2 <= eof && (html[1] == '!' || html[1] == '?')) {
		html = skip_comment(html, eof);
		goto se;
	}

	if (parse_element(html, eof, &name, &namelen, &t_attr, &en)) {
		html++;
		goto se;
	}

	if (!namelen) goto see;

	if (name[0] == '/') {
		namelen--;
		if (!namelen) goto see;
		name++;
		closing_tag = 1;
	} else {
		closing_tag = 0;
	}

	if (closing_tag && !c_strlcasecmp(name, namelen, (const unsigned char *)"SELECT", 6)) {
		add_select_item(&lnk_menu, &lbl, &orig_lbl, values, order, nnmi);
		goto end_parse;
	}

	if (!c_strlcasecmp(name, namelen, (const unsigned char *)"OPTION", 6)) {
		add_select_item(&lnk_menu, &lbl, &orig_lbl, values, order, nnmi);

		if (!closing_tag) {
			unsigned char *value, *label;

			if (has_attr(t_attr, (unsigned char *)"disabled", html_context->doc_cp))
				goto see;
			if (preselect == -1
			    && has_attr(t_attr, (unsigned char *)"selected", html_context->doc_cp))
				preselect = order;
			value = get_attr_val(t_attr, (unsigned char *)"value", html_context->doc_cp);

			if (!mem_align_alloc(&values, order, order + 1, 0xFF))
				goto abort;

			values[order++] = value;
			label = get_attr_val(t_attr, (unsigned char *)"label", html_context->doc_cp);
			if (label) new_menu_item(&lnk_menu, label, order - 1, 0);
			if (!value || !label) {
				init_string(&lbl);
				init_string(&orig_lbl);
				nnmi = !!label;
			}
		}

		goto see;
	}

	if (!c_strlcasecmp(name, namelen, (const unsigned char *)"OPTGROUP", 8)) {
		add_select_item(&lnk_menu, &lbl, &orig_lbl, values, order, nnmi);

		if (group) new_menu_item(&lnk_menu, NULL, -1, 0), group = 0;

		if (!closing_tag) {
			unsigned char *label;

			label = get_attr_val(t_attr, (unsigned char *)"label", html_context->doc_cp);

			if (!label) {
				label = stracpy((const unsigned char *)"");
				if (!label) goto see;
			}
			new_menu_item(&lnk_menu, label, -1, 0);
			group = 1;
		}
	}

	goto see;


end_parse:
	*end = en;
	if (!order) goto abort;

	labels = (unsigned char **)mem_calloc(order, sizeof(unsigned char *));
	if (!labels) goto abort;

	fc = init_form_control(FC_SELECT, attr, html_context);
	if (!fc) {
		mem_free(labels);
		goto abort;
	}

	fc->id = get_attr_val(attr, (unsigned char *)"id", html_context->doc_cp);
	fc->name = get_attr_val(attr, (unsigned char *)"name", html_context->doc_cp);
	fc->default_state = preselect < 0 ? 0 : preselect;
	fc->default_value = order ? stracpy(values[fc->default_state]) : stracpy((const unsigned char *)"");
	fc->nvalues = order;
	fc->values = values;
	fc->menu = detach_menu(&lnk_menu);
	fc->labels = labels;

	menu_labels(fc->menu, (unsigned char *)"", labels);
	put_chrs(html_context, (unsigned char *)"[", 1);
	html_stack_dup(html_context, ELEMENT_KILLABLE);
	format.form = fc;
	format.style.attr |= AT_BOLD;

	max_width = 0;
	for (i = 0; i < order; i++) {
		if (!labels[i]) continue;
#ifdef CONFIG_UTF8
		if (html_context->options->utf8)
			int_lower_bound(&max_width,
					utf8_ptr2cells(labels[i], NULL));
		else
#endif /* CONFIG_UTF8 */
			int_lower_bound(&max_width, strlen((const char *)labels[i]));
	}

	for (i = 0; i < max_width; i++)
		put_chrs(html_context, (unsigned char *)"_", 1);

	pop_html_element(html_context);
	put_chrs(html_context, (unsigned char *)"]", 1);
	html_context->special_f(html_context, SP_CONTROL, fc);
}