コード例 #1
0
ファイル: poll-questions.c プロジェクト: andy-shev/LogJam
static void
pollmultidlg_init(PollMultiDlg *pmdlg, GtkWindow *parent) {
	GtkWidget *mainbox, *vbox, *paned;
	GtkWidget *menu, *label;

	pmdlg->dlg = gtk_dialog_new_with_buttons(_("Multi Poll Question"),
			parent, GTK_DIALOG_MODAL,
			GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
			GTK_STOCK_OK, GTK_RESPONSE_OK,
			NULL);
	jam_win_set_size(GTK_WINDOW(pmdlg->dlg), 500, -1);

	mainbox = gtk_vbox_new(FALSE, 12);

	menu = gtk_menu_new();
	gtk_menu_shell_append(GTK_MENU_SHELL(menu),
		gtk_menu_item_new_with_mnemonic(_("Choose best answer (_radio buttons)")));
	gtk_menu_shell_append(GTK_MENU_SHELL(menu),
		gtk_menu_item_new_with_mnemonic(_("Choose best answer (_drop-down menu)")));
	gtk_menu_shell_append(GTK_MENU_SHELL(menu),
		gtk_menu_item_new_with_mnemonic(_("Select _all that apply (checkboxes)")));

	pmdlg->typemenu = gtk_option_menu_new();
	gtk_option_menu_set_menu(GTK_OPTION_MENU(pmdlg->typemenu), menu);
	gtk_box_pack_start(GTK_BOX(mainbox),
			labelled_box_new_expand(_("Choice _Type:"), pmdlg->typemenu, TRUE),
			FALSE, FALSE, 0);

	paned = gtk_hpaned_new();
	gtk_box_pack_start(GTK_BOX(mainbox), paned, TRUE, TRUE, 0);

	vbox = gtk_vbox_new(FALSE, 6);
	label = gtk_label_new_with_mnemonic(_("_Question:"));
	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
	gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);

	pmdlg->question = gtk_text_view_new();
	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(pmdlg->question), GTK_WRAP_WORD);
	gtk_label_set_mnemonic_widget(GTK_LABEL(label), pmdlg->question);
	gtk_box_pack_start(GTK_BOX(vbox),
			scroll_wrap(pmdlg->question),
			TRUE, TRUE, 0);

	gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, FALSE);

	vbox = gtk_vbox_new(FALSE, 6);
	pollmulti_make_list(pmdlg);
	label = gtk_label_new_with_mnemonic(_("O_ptions:"));
	gtk_label_set_mnemonic_widget(GTK_LABEL(label), pmdlg->answers.view);
	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
	gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), pmdlg->answers.box, TRUE, TRUE, 0);

	gtk_paned_pack2(GTK_PANED(paned), vbox, TRUE, FALSE);

	jam_dialog_set_contents(GTK_DIALOG(pmdlg->dlg), mainbox);
}
コード例 #2
0
ファイル: poll-questions.c プロジェクト: andy-shev/LogJam
static void
pollscaledlg_init(PollScaleDlg *psdlg, GtkWindow *parent) {
	GtkWidget *mainbox, *vbox;
	GtkWidget *label;
	GtkSizeGroup *sizegroup;

	GtkAdjustment *adj1 = (GtkAdjustment*)gtk_adjustment_new(
			1.0,  -32000.0, 32000.0, 1.0, 5.0, 0);
	GtkAdjustment *adj2 = (GtkAdjustment*)gtk_adjustment_new(
			10.0, -32000.0, 32000.0, 1.0, 5.0, 0);
	GtkAdjustment *adj3 = (GtkAdjustment*)gtk_adjustment_new(
			1.0,  -32000.0, 32000.0, 1.0, 5.0, 0);

	psdlg->dlg = gtk_dialog_new_with_buttons(_("Scale Poll Question"),
			parent, GTK_DIALOG_MODAL,
			GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
			GTK_STOCK_OK, GTK_RESPONSE_OK,
			NULL);
	jam_win_set_size(GTK_WINDOW(psdlg->dlg), 400, -1);

	mainbox = gtk_hbox_new(FALSE, 12);

	vbox = gtk_vbox_new(FALSE, 6);
	label = gtk_label_new_with_mnemonic(_("_Question:"));
	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
	gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);

	psdlg->question = gtk_text_view_new();
	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(psdlg->question), GTK_WRAP_WORD);
	gtk_label_set_mnemonic_widget(GTK_LABEL(label), psdlg->question);
	gtk_box_pack_start(GTK_BOX(vbox),
			scroll_wrap(psdlg->question),
			TRUE, TRUE, 0);

	gtk_box_pack_start(GTK_BOX(mainbox), vbox, TRUE, TRUE, 0);

	vbox = gtk_vbox_new(FALSE, 6);
	sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);

	psdlg->from = gtk_spin_button_new(adj1, 1.0, 0);
	gtk_box_pack_start(GTK_BOX(vbox),
			labelled_box_new_sg(_("_From:"), psdlg->from, sizegroup),
			FALSE, FALSE, 0);
	psdlg->to = gtk_spin_button_new(adj2, 1.0, 0);
	gtk_box_pack_start(GTK_BOX(vbox),
			labelled_box_new_sg(_("_To:"), psdlg->to, sizegroup),
			FALSE, FALSE, 0);
	psdlg->by = gtk_spin_button_new(adj3, 1.0, 0);
	gtk_box_pack_start(GTK_BOX(vbox),
			labelled_box_new_sg(_("_By:"), psdlg->by, sizegroup),
			FALSE, FALSE, 0);

	gtk_box_pack_start(GTK_BOX(mainbox), vbox, FALSE, FALSE, 0);

	jam_dialog_set_contents(GTK_DIALOG(psdlg->dlg), mainbox);
}
コード例 #3
0
ファイル: login.c プロジェクト: nightmorph/LogJam
JamAccount*
login_dlg_run(GtkWindow *parent, JamHost *host, JamAccount *acc) {
	login_dlg ldlg_actual = {0}, *ldlg = &ldlg_actual;
	GtkWidget *dlg, *align, *vbox;

	ldlg->win = dlg = gtk_dialog_new_with_buttons(_("Select User"),
			parent, GTK_DIALOG_MODAL,
			GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
			_("Selec_t"), GTK_RESPONSE_OK,
			NULL);

	if (acc) {
		ldlg->curhost = jam_account_get_host(acc);
	} else if (host) {
		ldlg->curhost = host;
	} else {
		ldlg->curhost = conf.hosts->data;
	}

	gtk_widget_realize(ldlg->win);

	vbox = gtk_vbox_new(FALSE, 5); 

	gtk_box_pack_start(GTK_BOX(vbox), make_login_table(ldlg), TRUE, TRUE, 0);
	align = gtk_alignment_new(.5, .5, 1, 0);
	gtk_container_add(GTK_CONTAINER(align), vbox);

	jam_dialog_set_contents(GTK_DIALOG(dlg), align);

	gtk_dialog_set_default_response(GTK_DIALOG(dlg), GTK_RESPONSE_OK);

	g_signal_connect_swapped(G_OBJECT(ldlg->win), "show",
			G_CALLBACK(login_shown), ldlg);

	if (acc) {
		gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(ldlg->cusername)->entry), jam_account_get_username(acc));
	}

rundlg:
	if (gtk_dialog_run(GTK_DIALOG(ldlg->win)) == GTK_RESPONSE_OK)
		acc = get_selected_account(ldlg);
	else
		acc = NULL;

	if (acc) {
		conf.lasthost = jam_account_get_host(acc);
		conf.lasthost->lastaccount = acc;
		if (JAM_ACCOUNT_IS_LJ(acc)) {
			if (!login_check_lastupdate(GTK_WINDOW(ldlg->win), JAM_ACCOUNT_LJ(acc)))
				goto rundlg;
		}
	}

	gtk_widget_destroy(dlg);
	return acc;
}
コード例 #4
0
ファイル: util-gtk.c プロジェクト: andy-shev/LogJam
void
jam_dialog_set_contents_buttonbox(GtkWidget *dlg, GtkWidget *contents, GtkWidget *buttonbox) {
	GtkWidget *vbox, *hbox;;

	vbox = jam_dialog_set_contents(GTK_DIALOG(dlg), contents);

	hbox = gtk_hbox_new(FALSE, 0);
	gtk_box_pack_end(GTK_BOX(hbox), buttonbox, FALSE, FALSE, 0);
	gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
	gtk_widget_show_all(vbox);
}
コード例 #5
0
ファイル: settings.c プロジェクト: nightmorph/LogJam
void
settings_cf_run(CFMgr *cfm) {
    GtkWidget *dlg;

    dlg = gtk_dialog_new_with_buttons(_("Checkfriends Preferences"),
                                      NULL /* no parent */, GTK_DIALOG_MODAL,
                                      GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
                                      NULL);

    jam_dialog_set_contents(GTK_DIALOG(dlg), cfriendssettings(cfm));

    gtk_dialog_run(GTK_DIALOG(dlg));
    gtk_widget_destroy(dlg);
}
コード例 #6
0
ファイル: poll-questions.c プロジェクト: andy-shev/LogJam
static void
polltextdlg_init(PollTextDlg *ptdlg, GtkWindow *parent) {
	GtkWidget *mainbox, *vbox;
	GtkWidget *label, *view;

	ptdlg->dlg = gtk_dialog_new_with_buttons(_("Text Poll Question"),
			parent, GTK_DIALOG_MODAL,
			GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
			GTK_STOCK_OK, GTK_RESPONSE_OK,
			NULL);

	mainbox = gtk_vbox_new(FALSE, 12);

	vbox = gtk_vbox_new(FALSE, 6);

	label = gtk_label_new_with_mnemonic(_("_Question:"));
	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
	gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);

	ptdlg->question = view = gtk_text_view_new();
	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD);
	gtk_label_set_mnemonic_widget(GTK_LABEL(label), view);
	gtk_box_pack_start(GTK_BOX(vbox), scroll_wrap(view), TRUE, TRUE, 0);

	gtk_box_pack_start(GTK_BOX(mainbox), vbox, TRUE, TRUE, 0);

	vbox = gtk_vbox_new(FALSE, 6);

	ptdlg->size = gtk_entry_new();
	gtk_entry_set_width_chars(GTK_ENTRY(ptdlg->size), 4);
	ptdlg->width = gtk_entry_new();
	gtk_entry_set_width_chars(GTK_ENTRY(ptdlg->width), 4);

	gtk_box_pack_start(GTK_BOX(vbox),
			labelled_box_new(_("_Text field size (optional): "),
				ptdlg->size),
			FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox),
			labelled_box_new(_("_Maximum text length (optional): "),
				ptdlg->width),
			FALSE, FALSE, 0);

	gtk_box_pack_start(GTK_BOX(mainbox), vbox, FALSE, FALSE, 0);

	jam_dialog_set_contents(GTK_DIALOG(ptdlg->dlg), mainbox);
}
コード例 #7
0
ファイル: settings.c プロジェクト: nightmorph/LogJam
static void
run_settings_dialog(JamWin *jw) {
    GtkWidget *dlg, *nb;

    dlg = gtk_dialog_new_with_buttons(_("Preferences"),
                                      GTK_WINDOW(jw), GTK_DIALOG_MODAL,
                                      GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
                                      NULL);

    /* the order of notebook pages created here should match the
     * SettingsPage enum in settings.h */
    nb = gtk_notebook_new();
    gtk_notebook_append_page(GTK_NOTEBOOK(nb),
                             uisettings(jw), gtk_label_new_with_mnemonic(_("Interface")));
#ifndef G_OS_WIN32
    gtk_notebook_append_page(GTK_NOTEBOOK(nb),
                             systemsettings(jw), gtk_label_new_with_mnemonic(_("System")));
#endif /* G_OS_WIN32 */
    if (JAM_ACCOUNT_IS_LJ(jw->account))
        gtk_notebook_append_page(GTK_NOTEBOOK(nb),
                                 cfriendssettings(app.cfmgr), gtk_label_new_with_mnemonic(_("Check Friends")));
    gtk_notebook_append_page(GTK_NOTEBOOK(nb),
                             debugsettings(dlg), gtk_label_new_with_mnemonic(_("Debug")));

    jam_dialog_set_contents(GTK_DIALOG(dlg), nb);

    /* XXX HACK:  set_contents calls show_all, but the "command"
     * settings widgets sometimes want to have hidden children.
     * so we let them rehide. */
    {
        SettingsWidget *sw;
        for (sw = settingswidgets; sw->name; sw++)
            if (sw->type == SW_COMMAND)
                command_changed_cb(GTK_OPTION_MENU(sw->widget), sw);
    }

    gtk_dialog_run(GTK_DIALOG(dlg));
    gtk_widget_destroy(dlg);
}
コード例 #8
0
ファイル: link.c プロジェクト: nightmorph/LogJam
static void
make_link_dialog(LinkDialog *ld, GtkWindow *win, gboolean livejournal) {
	GtkWidget *vbox;
	GtkWidget *subbox, *hhr;
	GSList *rgroup;

	ld->dlg = gtk_dialog_new_with_buttons(_("Make Link"),
			win, GTK_DIALOG_MODAL,
			GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
			GTK_STOCK_OK, GTK_RESPONSE_OK,
			NULL);
	gtk_dialog_set_default_response(GTK_DIALOG(ld->dlg), GTK_RESPONSE_OK);

	vbox = gtk_vbox_new(FALSE, 10);

	ld->etext = gtk_entry_new();
	gtk_entry_set_activates_default(GTK_ENTRY(ld->etext), TRUE);
	subbox = labelled_box_new(_("Link _Text:"), ld->etext);
	gtk_box_pack_start(GTK_BOX(vbox), subbox, FALSE, FALSE, 0);
	ld->titl = gtk_entry_new();
	hhr = labelled_box_new(_("Link Title:"), ld->titl);
	gtk_box_pack_start(GTK_BOX(vbox), hhr, FALSE, FALSE, 0);

	gtk_box_pack_start(GTK_BOX(vbox), 
			radio_option(NULL, &ld->rurl, &ld->eurl, _("_URL:"), NULL, ""),
			FALSE, FALSE, 0);

	rgroup = gtk_radio_button_get_group(GTK_RADIO_BUTTON(ld->rurl));

	if (livejournal) {
		gtk_box_pack_start(GTK_BOX(vbox), 
				radio_option(rgroup, &ld->ruser, &ld->euser, 
					_("_LiveJournal User:"******".../users/", ""),
				FALSE, FALSE, 0);
	}

	jam_dialog_set_contents(GTK_DIALOG(ld->dlg), vbox);
}
コード例 #9
0
ファイル: poll-questions.c プロジェクト: andy-shev/LogJam
static char*
pollmultidlg_option(GtkWindow *parent, const char *current) {
	GtkWidget *dlg, *vbox, *label, *view;
	GtkTextBuffer *buffer;
	char *newtext = NULL;

	dlg = gtk_dialog_new_with_buttons(_("Multi Poll Option"),
			parent, GTK_DIALOG_MODAL,
			GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
			GTK_STOCK_OK, GTK_RESPONSE_OK,
			NULL);
	jam_win_set_size(GTK_WINDOW(dlg), 300, -1);

	vbox = gtk_vbox_new(FALSE, 6);

	label = gtk_label_new_with_mnemonic(_("O_ption:"));
	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
	gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);

	view = gtk_text_view_new();
	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));
	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD);
	if (current)
		gtk_text_buffer_insert_at_cursor(buffer, current, -1);
	gtk_label_set_mnemonic_widget(GTK_LABEL(label), view);
	gtk_box_pack_start(GTK_BOX(vbox), scroll_wrap(view), TRUE, TRUE, 0);

	jam_dialog_set_contents(GTK_DIALOG(dlg), vbox);

	if (gtk_dialog_run(GTK_DIALOG(dlg)) == GTK_RESPONSE_OK) {
		GtkTextIter start, end;
		gtk_text_buffer_get_bounds(buffer, &start, &end);
		newtext = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
	}
	gtk_widget_destroy(dlg);
	return newtext;
}
コード例 #10
0
ファイル: history.c プロジェクト: nightmorph/LogJam
static gint
hi_dialog_run(GtkWidget *parent, int itemid) {
	history_item_dlg hidlg_actual = { 0 };
	history_item_dlg *hidlg = &hidlg_actual;
	GtkWidget *vbox, *button;
	NetResult *result;

	hidlg->itemid = itemid;
	result = hi_request_run(hidlg, itemid);
	if (result == NULL) 
		return 0;

	hidlg->win = jam_dialog_new(parent, "History Item", 300, 300);
	geometry_tie(hidlg->win, GEOM_HISTORY_ITEM);
	g_signal_connect(G_OBJECT(hidlg->win), "destroy",
			G_CALLBACK(gtk_main_quit), NULL);

	vbox = gtk_vbox_new(FALSE, 5); {
		GtkWidget *hbox, *scroll;

		hbox = gtk_hbox_new(FALSE, 5); {
			gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new("Subject:"), 
					FALSE, FALSE, 0);
			hidlg->esubject = gtk_entry_new();

			gtk_widget_set_usize(hidlg->esubject, 100, -1); 
			/* usize is just the minimum size... */
			gtk_box_pack_start(GTK_BOX(hbox), hidlg->esubject, TRUE, TRUE, 0);

		}
		gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);

		hbox = gtk_hbox_new(FALSE, 5); {
			gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new("Date:"), 
					FALSE, FALSE, 0);
			gtk_box_pack_start(GTK_BOX(hbox), hi_dialog_date_hbox(hidlg),
					FALSE, FALSE, 0);

			gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new("Time:"), 
					FALSE, FALSE, 0);
			gtk_box_pack_start(GTK_BOX(hbox), hi_dialog_time_hbox(hidlg),
					FALSE, FALSE, 0);
			
			hidlg->security.type = conf.defaultsecurity;
			hidlg->secmgr = secmgr_new(&hidlg->security);
			gtk_box_pack_end(GTK_BOX(hbox), hidlg->secmgr, FALSE, FALSE, 0);
			gtk_box_pack_end(GTK_BOX(hbox), gtk_label_new("Security:"), 
					FALSE, FALSE, 0);
		}
		gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);

		scroll = gtk_scrolled_window_new(NULL, NULL); {
			gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
					GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);

			hidlg->eentry = gtk_text_new(NULL, NULL);
			/* fixme gtkspell gtkspell_attach(GTK_TEXT(hidlg->eentry)); */
			gtk_text_set_editable(GTK_TEXT(hidlg->eentry), TRUE);
			gtk_text_set_word_wrap(GTK_TEXT(hidlg->eentry), TRUE);
			gtk_container_add(GTK_CONTAINER(scroll), hidlg->eentry);
		}
		gtk_box_pack_start(GTK_BOX(vbox), scroll, TRUE, TRUE, 0);

		hidlg->metamgr = metamgr_new(GTK_BOX(vbox));
		gtk_box_pack_end(GTK_BOX(vbox), hidlg->metamgr, FALSE, FALSE, 0);
	}
	
	jam_dialog_set_contents(hidlg->win, vbox);

	button = gtk_button_new_with_label("  Save Changes  ");
	g_signal_connect(G_OBJECT(button), "clicked",
			G_CALLBACK(hi_save_cb), (gpointer) hidlg);
	jam_dialog_add_button(hidlg->win, button);

	button = gtk_button_new_with_label("  Delete  ");
	g_signal_connect(G_OBJECT(button), "clicked",
			G_CALLBACK(hi_delete_cb), (gpointer) hidlg);
	jam_dialog_add_button(hidlg->win, button);
	
	jam_dialog_add_close(hidlg->win);

	hi_load_result(hidlg, result);

	gtk_widget_realize(hidlg->win);
	gtk_widget_realize(hidlg->secmgr);
	gtk_widget_show(hidlg->win);

	gtk_main();

	return 0;
}
コード例 #11
0
ファイル: friendgroupedit.c プロジェクト: andy-shev/LogJam
LJFriendGroup*
friend_group_edit_dlg_run(GtkWindow *parent, JamAccountLJ *acc, LJFriendGroup *fg, int freegroup) {
	friend_group_edit_dlg fged_actual = {0};
	friend_group_edit_dlg *fged = &fged_actual;
	GtkWidget *table, *button, *label;
	char *idstr;
	int row = 0;

	fged->account = acc;
	fged->editgroup = fg;
	fged->freegroup = freegroup;

	fged->win = gtk_dialog_new_with_buttons(
			fg ? _("Edit Friend Group") : _("New Friend Group"),
			parent, GTK_DIALOG_MODAL,
			GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
			NULL);
	jam_win_set_size(GTK_WINDOW(fged->win), 200, 1);

	table = jam_table_new(fg ? 3 : 2, 2);

	if (fg) {
		idstr = g_strdup_printf("%d", fg->id);
		label = gtk_label_new(idstr);
		g_free(idstr);
		gtk_label_set_selectable(GTK_LABEL(label), TRUE);
		gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
		jam_table_label_content(GTK_TABLE(table), row++, _("Group ID:"), label);
	}

	fged->egroupname = gtk_entry_new();
	jam_table_label_content(GTK_TABLE(table), row++, _("_Group Name:"), fged->egroupname);

	fged->cpublic = gtk_check_button_new_with_mnemonic("_Public");
	jam_table_fillrow(GTK_TABLE(table), row++, fged->cpublic);

	jam_dialog_set_contents(GTK_DIALOG(fged->win), table);

	button = gtk_dialog_add_button(GTK_DIALOG(fged->win),
			fg ? "  Change  " : "  Create  ", GTK_RESPONSE_OK);
	/* enable/disable the button based on name text */
	g_signal_connect(G_OBJECT(fged->egroupname), "changed",
		G_CALLBACK(entry_changed), button);

	/* fill in default values. */
	if (fg) {
		gtk_entry_set_text(GTK_ENTRY(fged->egroupname), fg->name);
		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(fged->cpublic), fg->ispublic);
	} else {
		gtk_entry_set_text(GTK_ENTRY(fged->egroupname), "");
		/* emit the "changed" signal, anyway. */
	}

	while (gtk_dialog_run(GTK_DIALOG(fged->win)) == GTK_RESPONSE_OK) {
		if (editgroup_run(fged)) {
			gtk_widget_destroy(fged->win);
			return fged->editgroup;
		}
	}
	gtk_widget_destroy(fged->win);
	return NULL;
}
コード例 #12
0
ファイル: console.c プロジェクト: evmar/LogJam
void
console_dialog_run(GtkWindow *parent, JamAccountLJ *acc) {
	ConsoleUI *cui;
	GtkWidget *vbox, *hbox, *button;
	GtkTextBuffer *buffer;
	GtkTextIter end;

	cui = g_new0(ConsoleUI, 1);
	cui->account = acc;
	cui->win = gtk_dialog_new_with_buttons(_("LiveJournal Console"),
			parent, GTK_DIALOG_DESTROY_WITH_PARENT,
			GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
			NULL);
	jam_win_set_size(GTK_WINDOW(cui->win), 500, 400);
	g_signal_connect_swapped(G_OBJECT(cui->win), "response",
			G_CALLBACK(gtk_widget_destroy), cui->win);
	g_signal_connect_swapped(G_OBJECT(cui->win), "destroy",
			G_CALLBACK(g_free), cui);
	geometry_tie(cui->win, GEOM_CONSOLE);

	vbox = gtk_vbox_new(FALSE, 5);

	hbox = gtk_hbox_new(FALSE, 5);
	cui->entry = gtk_entry_new();
	gtk_box_pack_start(GTK_BOX(hbox), cui->entry, TRUE, TRUE, 0);

	button = gtk_button_new_with_mnemonic(_(" _Submit "));
	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);

	g_signal_connect(G_OBJECT(cui->entry), "activate",
			G_CALLBACK(submit_cb), cui);
	g_signal_connect(G_OBJECT(button), "clicked",
			G_CALLBACK(submit_cb), cui);

	button = gtk_button_new_from_stock(GTK_STOCK_HELP);
	g_signal_connect(G_OBJECT(button), "clicked",
			G_CALLBACK(console_help), cui);
	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
	
	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);

	cui->display = gtk_text_view_new();
	gtk_text_view_set_editable(GTK_TEXT_VIEW(cui->display), FALSE);
	gtk_box_pack_start(GTK_BOX(vbox), scroll_wrap(cui->display), 
			TRUE, TRUE, 0);

	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(cui->display));
	gtk_text_buffer_get_end_iter(buffer, &end);
	cui->mark_end = gtk_text_buffer_create_mark(buffer, NULL, &end, FALSE);
	gtk_text_buffer_create_tag(buffer, "command",
			"family", "monospace",
			 NULL);
	gtk_text_buffer_create_tag(buffer, "info",
			"family", "monospace",
			"foreground", "darkgreen",
			NULL);
	gtk_text_buffer_create_tag(buffer, "error",
			"family", "monospace",
			"weight", PANGO_WEIGHT_BOLD,
			"foreground", "red",
			NULL);

	jam_dialog_set_contents(GTK_DIALOG(cui->win), vbox);

	console_print(cui, NULL, _("LiveJournal console ready.\n"));

	gtk_widget_show(cui->win);
}