示例#1
0
static void
multi_pages_button_clicked (GtkWidget         *button,
			    SoliPrintPreview *preview)
{
	GtkWidget *menu;
	GtkWidget *item;

	menu = gtk_menu_new ();
	gtk_widget_show (menu);
	g_signal_connect (menu,
			  "selection-done",
			  G_CALLBACK (gtk_widget_destroy),
			  NULL);

	item = gtk_menu_item_new_with_label ("1x1");
	gtk_widget_show (item);
	gtk_menu_attach (GTK_MENU (menu), item, 0, 1, 0, 1);
	g_signal_connect (item, "activate", G_CALLBACK (on_1x1_clicked), preview);

	item = gtk_menu_item_new_with_label ("1x2");
	gtk_widget_show (item);
	gtk_menu_attach (GTK_MENU (menu), item, 1, 2, 0, 1);
	g_signal_connect (item, "activate", G_CALLBACK (on_1x2_clicked), preview);

	gtk_menu_popup (GTK_MENU (menu),
			NULL, NULL, NULL, preview, 0,
			GDK_CURRENT_TIME);
}
示例#2
0
//GtkWidget* create_op_menu(GtkContainer* parent) {
GtkWidget* create_op_menu(void) {
  GtkWidget* menu;
  GtkWidget* child;
  int i;
  op_id_t id;





  const char* name;

  menu = gtk_menu_new();

  for(i=0; i<NUM_USER_OP_TYPES; i++) {
    id = userOpTypes[i];
    name = op_registry[id].name;
    child = gtk_menu_item_new_with_label(name);
    gtk_menu_attach(GTK_MENU(menu), child, 0, 1, i+1, i+2);
    //////////////////
    // huh, have to do this here.
    gtk_widget_show(child);
    //////////////////
    g_signal_connect( child, 
		      "activate", 
		      G_CALLBACK(op_menu_select), 
		      (gpointer)&(userOpTypes[i]) );
  }
  return menu;
}
uint8_t UI_updateRecentMenu( void )
{
const char **names;
uint32_t nb_item=0;
GtkWidget *button,*menu,*item[4];
static Action recent[4]={ACT_RECENT0,ACT_RECENT1,ACT_RECENT2,ACT_RECENT3};

        names=prefs->get_lastfiles();
// count
        for( nb_item=0;nb_item<4;nb_item++)
        {
                if(!names[nb_item]) break;
        }
        button=lookup_widget(guiRootWindow,"menutoolbuttonOpen");
        if(!nb_item)
        {
                gtk_menu_tool_button_set_menu   (GTK_MENU_TOOL_BUTTON(button),NULL);
                return 1;
        }
        menu=gtk_menu_new();
        for(int i=0;i<nb_item;i++)
        {
                item[i]=gtk_menu_item_new_with_label(names[i]);
                gtk_menu_attach(GTK_MENU(menu),item[i],0,1,i,i+1);
                 gtk_signal_connect (GTK_OBJECT (item[i]), "activate", GTK_SIGNAL_FUNC (guiCallback), 
                                (gpointer) recent[i]);
                gtk_widget_show (item[i]);
        }
        gtk_menu_tool_button_set_menu   (GTK_MENU_TOOL_BUTTON(button),menu);
        return 1;
}
示例#4
0
static void
popup_menu (MuMsgBodyView *self, guint button, guint32 activate_time)
{
	GtkWidget *menu;
	int i;
	struct {
		const char* title;
		const char* action;
		ViewMode mode;
	} actions[] = {
		{ "View source...", "view-source", VIEW_MODE_MSG },
		{ "View message...", "view-message", VIEW_MODE_SOURCE },
	};
	
	menu = gtk_menu_new ();
	
	for (i = 0; i != G_N_ELEMENTS(actions); ++i) {
		GtkWidget *item;

		if (self->_priv->_view_mode != actions[i].mode)
			continue;
		
		item = gtk_menu_item_new_with_label(actions[i].title);
		g_object_set_data (G_OBJECT(item), "action", (gpointer)actions[i].action);
		g_signal_connect (item, "activate", G_CALLBACK(on_menu_item_activate),
				  self);
		gtk_menu_attach (GTK_MENU(menu), item, 0, 1, i, i+1);
		gtk_widget_show (item);
	}
	gtk_menu_popup (GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, 0);
}
示例#5
0
文件: menu.c 项目: amery/clip-angelo
int
clip_GTK_MENUATTACH(ClipMachine * ClipMachineMemory)
{
   C_widget *cmnu = _fetch_cw_arg(ClipMachineMemory);

   C_widget *cwid = _fetch_cwidget(ClipMachineMemory, _clip_spar(ClipMachineMemory, 2));

   guint     left_attach = _clip_parni(ClipMachineMemory, 3);

   guint     right_attach = _clip_parni(ClipMachineMemory, 4);

   guint     top_attach = _clip_parni(ClipMachineMemory, 5);

   guint     bottom_attach = _clip_parni(ClipMachineMemory, 6);

   CHECKCWID(cmnu, GTK_IS_MENU);
   CHECKCWID(cwid, GTK_IS_WIDGET);
   CHECKARG(3, NUMERIC_type_of_ClipVarType);
   CHECKARG(4, NUMERIC_type_of_ClipVarType);
   CHECKARG(5, NUMERIC_type_of_ClipVarType);
   CHECKARG(6, NUMERIC_type_of_ClipVarType);

   gtk_menu_attach(GTK_MENU(cmnu->widget), GTK_WIDGET(cwid->widget), left_attach, right_attach, top_attach, bottom_attach);
   return 0;
 err:
   return 1;
}
示例#6
0
static VALUE
rg_attach(VALUE self, VALUE child, VALUE left_attach, VALUE right_attach, VALUE top_attach, VALUE bottom_attach)
{
    gtk_menu_attach(_SELF(self), GTK_WIDGET(RVAL2GOBJ(child)), 
                    NUM2UINT(left_attach), NUM2UINT(right_attach), 
                    NUM2UINT(top_attach), NUM2UINT(bottom_attach));
    return self;
}
示例#7
0
GtkWidget *
empathy_smiley_menu_new (EmpathySmileyManager *manager,
			 EmpathySmileyMenuFunc func,
			 gpointer              user_data)
{
	EmpathySmileyManagerPriv *priv = GET_PRIV (manager);
	GSList                   *l;
	GtkWidget                *menu;
	gint                      x = 0;
	gint                      y = 0;

	g_return_val_if_fail (EMPATHY_IS_SMILEY_MANAGER (manager), NULL);
	g_return_val_if_fail (func != NULL, NULL);

	menu = gtk_menu_new ();

	for (l = priv->smileys; l; l = l->next) {
		EmpathySmiley *smiley;
		GtkWidget     *item;
		GtkWidget     *image;
		ActivateData  *data;

		smiley = l->data;
		image = gtk_image_new_from_pixbuf (smiley->pixbuf);

		item = gtk_image_menu_item_new_with_label ("");
		gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
		gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (item), TRUE);

		gtk_menu_attach (GTK_MENU (menu), item,
				 x, x + 1, y, y + 1);

		gtk_widget_set_tooltip_text (item, smiley->str);

		data = g_slice_new (ActivateData);
		data->manager = g_object_ref (manager);
		data->smiley = smiley;
		data->func = func;
		data->user_data = user_data;

		g_signal_connect_data (item, "activate",
				       G_CALLBACK (smiley_menu_activate_cb),
				       data,
				       smiley_menu_data_free,
				       0);

		if (x > 3) {
			y++;
			x = 0;
		} else {
			x++;
		}
	}

	gtk_widget_show_all (menu);

	return menu;
}
示例#8
0
static void show_menu(GdkEventButton* event){
   GtkWidget* menu, *item;

   menu = gtk_menu_new();
   item = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES, NULL);
   g_signal_connect_swapped(item, "activate", G_CALLBACK(prefs_window), NULL);
   gtk_menu_attach(GTK_MENU(menu), item, 0, 1, 0, 1);
   gtk_widget_show(item);
   item = gtk_image_menu_item_new_from_stock(GTK_STOCK_DIALOG_INFO, NULL);
   g_signal_connect_swapped(item, "activate", G_CALLBACK(about_window), NULL);
   gtk_widget_show(item);
   gtk_menu_attach(GTK_MENU(menu), item, 0, 1, 1, 2);
   item = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, NULL);
   g_signal_connect_swapped(item, "activate", G_CALLBACK(gtk_main_quit), NULL);
   gtk_menu_attach(GTK_MENU(menu), item, 0, 1, 2, 3);
   gtk_widget_show(item);
   gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 
                  event->button, event->time);
}
PocketvoxIndicator* pocketvox_indicator_new()
{
	PocketvoxIndicator *indicator = (PocketvoxIndicator *)g_object_new(TYPE_POCKETVOX_INDICATOR, NULL);

	indicator->priv = G_TYPE_INSTANCE_GET_PRIVATE (indicator,
			TYPE_POCKETVOX_INDICATOR, PocketvoxIndicatorPrivate);
	PocketvoxIndicatorPrivate *priv = indicator->priv;

	app_indicator_set_status(priv->applet, APP_INDICATOR_STATUS_ACTIVE);

	GtkWidget* stateItem 		= gtk_menu_item_new_with_label(_("Stop"));
    priv->modulesItem  	        = gtk_menu_item_new_with_label(_("Modules"));

    GtkWidget* separatorItem0	= gtk_separator_menu_item_new();
	GtkWidget* separatorItem1	= gtk_separator_menu_item_new();
	GtkWidget* quitItem 		= gtk_menu_item_new_with_label(_("Quit"));
    priv->appsItem			    = gtk_menu_item_new_with_label(_("Apps"));

	gtk_menu_item_set_submenu((GtkMenuItem *)priv->modulesItem, priv->modulesMenu);
	gtk_menu_item_set_submenu((GtkMenuItem *)priv->appsItem, priv->appsMenu);

	gtk_menu_attach((GtkMenu *)priv->menu, stateItem, 			0, 1, 0, 1);
	gtk_menu_attach((GtkMenu *)priv->menu, separatorItem0,		0, 1, 1, 2);
	gtk_menu_attach((GtkMenu *)priv->menu, priv->modulesItem, 	0, 1, 2, 3);
	gtk_menu_attach((GtkMenu *)priv->menu, priv->appsItem,		0, 1, 3, 4);
	gtk_menu_attach((GtkMenu *)priv->menu, separatorItem1,		0, 1, 4, 5);
	gtk_menu_attach((GtkMenu *)priv->menu, quitItem, 			0, 1, 5, 6);

    gtk_widget_show_all(priv->menu);
    gtk_widget_hide(priv->appsItem);
    gtk_widget_hide(priv->modulesItem);

	g_signal_connect(stateItem, 	"activate", G_CALLBACK(pocketvox_indicator_state_changed), 	indicator);
	g_signal_connect(quitItem,  	"activate", G_CALLBACK(pocketvox_indicator_quit), 			indicator);

	app_indicator_set_menu(priv->applet, (GtkMenu *)priv->menu);

	return indicator;
}
示例#10
0
int main (int argc, char **argv)
{
	GtkWidget *window;
	GtkWidget *button;
	GtkWidget *grid;
	GtkWidget *entry;
	GtkWidget *menu_widget;
	GtkAccelGroup *accel_group;
	guint i;
	GMenu *menu;

	gtk_init (&argc, &argv);

	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
	gtk_window_resize (GTK_WINDOW (window), 400, 300);

	grid = gtk_grid_new ();
	gtk_container_add (GTK_CONTAINER (window), grid);

	accel_group = gtk_accel_group_new ();
	gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);

	/* Button next to entry */
	entry = gtk_entry_new ();
	gtk_grid_attach (GTK_GRID (grid),
			 entry,
			 0, 0,
			 1, 1);
	button = gtk_menu_button_new ();
	gtk_grid_attach (GTK_GRID (grid),
			 button,
			 1, 0,
			 1, 1);

	/* Button with GtkMenu */
	menu_widget = gtk_menu_new ();
	for (i = 5; i > 0; i--) {
		GtkWidget *item;

		if (i == 3) {
			item = gtk_menu_item_new_with_mnemonic ("_Copy");
		} else {
			char *label;

			label = g_strdup_printf ("Item _%d", i);
			item = gtk_menu_item_new_with_mnemonic (label);
			g_free (label);
		}
		gtk_menu_item_set_use_underline (GTK_MENU_ITEM (item), TRUE);
		gtk_menu_attach (GTK_MENU (menu_widget),
				 item,
				 0, 1,
				 i - 1, i);
	}
	gtk_widget_show_all (menu_widget);

	button = gtk_menu_button_new ();
	gtk_menu_button_set_popup (GTK_MENU_BUTTON (button), menu_widget);
	gtk_grid_attach (GTK_GRID (grid),
			 button,
			 1, 1,
			 1, 1);
	gtk_widget_show (create_prop_editor (G_OBJECT (button), 0));

	/* Button with GMenuModel */
	menu = g_menu_new ();
	for (i = 5; i > 0; i--) {
		char *label;
                GMenuItem *item;
		label = g_strdup_printf ("Item _%d", i);
                item = g_menu_item_new (label, NULL);
                if (i == 3)
                  g_menu_item_set_attribute (item, "icon", "s", "preferences-desktop-locale-symbolic");
		g_menu_insert_item (menu, i - 1, item);
                g_object_unref (item);
		g_free (label);
	}
	button = gtk_menu_button_new ();
	gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (button), G_MENU_MODEL (menu));
	gtk_grid_attach (GTK_GRID (grid),
			 button,
			 1, 2,
			 1, 1);

	gtk_widget_show_all (window);

	gtk_main ();

	return 0;
}
static void
setup_photo_popup (UmPhotoDialog *um)
{
        GtkWidget *menu, *menuitem, *image;
        guint x, y;
        const gchar * const * dirs;
        guint i;
        GDir *dir;
        const char *face;
        gboolean none_item_shown;
        gboolean added_faces;

        menu = gtk_menu_new ();

        x = 0;
        y = 0;
        none_item_shown = added_faces = FALSE;

        dirs = g_get_system_data_dirs ();
        for (i = 0; dirs[i] != NULL; i++) {
                char *path;

                path = g_build_filename (dirs[i], "pixmaps", "faces", NULL);
                dir = g_dir_open (path, 0, NULL);
                if (dir == NULL) {
                        g_free (path);
                        continue;
                }

                while ((face = g_dir_read_name (dir)) != NULL) {
                        char *filename;

                        added_faces = TRUE;

                        filename = g_build_filename (path, face, NULL);
                        menuitem = menu_item_for_filename (um, filename);
                        g_free (filename);
                        if (menuitem == NULL)
                                continue;

                        gtk_menu_attach (GTK_MENU (menu), GTK_WIDGET (menuitem),
                                         x, x + 1, y, y + 1);
                        gtk_widget_show (menuitem);

                        x++;
                        if (x >= ROW_SPAN - 1) {
                                y++;
                                x = 0;
                        }
                }
                g_dir_close (dir);
                g_free (path);

                if (added_faces)
                        break;
        }

        if (!added_faces)
                goto skip_faces;

        image = gtk_image_new_from_icon_name ("avatar-default", GTK_ICON_SIZE_DIALOG);
        menuitem = gtk_menu_item_new ();
        gtk_container_add (GTK_CONTAINER (menuitem), image);
        gtk_widget_show_all (menuitem);
        gtk_menu_attach (GTK_MENU (menu), GTK_WIDGET (menuitem),
                         x, x + 1, y, y + 1);
        g_signal_connect (G_OBJECT (menuitem), "activate",
                          G_CALLBACK (none_icon_selected), um);
        gtk_widget_show (menuitem);
        none_item_shown = TRUE;
        y++;

skip_faces:
        if (!none_item_shown) {
                menuitem = gtk_menu_item_new_with_label (_("Disable image"));
                gtk_menu_attach (GTK_MENU (menu), GTK_WIDGET (menuitem),
                                 0, ROW_SPAN - 1, y, y + 1);
                g_signal_connect (G_OBJECT (menuitem), "activate",
                                  G_CALLBACK (none_icon_selected), um);
                gtk_widget_show (menuitem);
                y++;
        }

        /* Separator */
        menuitem = gtk_separator_menu_item_new ();
        gtk_menu_attach (GTK_MENU (menu), GTK_WIDGET (menuitem),
                         0, ROW_SPAN - 1, y, y + 1);
        gtk_widget_show (menuitem);

        y++;

#ifdef HAVE_CHEESE
        um->take_photo_menuitem = gtk_menu_item_new_with_label (_("Take a photo..."));
        gtk_menu_attach (GTK_MENU (menu), GTK_WIDGET (um->take_photo_menuitem),
                         0, ROW_SPAN - 1, y, y + 1);
        g_signal_connect (G_OBJECT (um->take_photo_menuitem), "activate",
                          G_CALLBACK (webcam_icon_selected), um);
        gtk_widget_set_sensitive (um->take_photo_menuitem, FALSE);
        gtk_widget_show (um->take_photo_menuitem);

        um->monitor = cheese_camera_device_monitor_new ();
        g_signal_connect (G_OBJECT (um->monitor), "added",
                          G_CALLBACK (device_added), um);
        g_signal_connect (G_OBJECT (um->monitor), "removed",
                          G_CALLBACK (device_removed), um);
        cheese_camera_device_monitor_coldplug (um->monitor);

        y++;
#endif /* HAVE_CHEESE */

        menuitem = gtk_menu_item_new_with_label (_("Browse for more pictures..."));
        gtk_menu_attach (GTK_MENU (menu), GTK_WIDGET (menuitem),
                         0, ROW_SPAN - 1, y, y + 1);
        g_signal_connect (G_OBJECT (menuitem), "activate",
                          G_CALLBACK (file_icon_selected), um);
        gtk_widget_show (menuitem);

        um->photo_popup = menu;
}
示例#12
0
/**
 * go_color_palette_make_menu:
 * @no_color_label: color label
 * @default_color: #GOColor
 * @cg: #GOColorGroup
 * @custom_dialog_title: optional string
 * @current_color: #GOColor
 *
 * Returns: (transfer full): a submenu with a palette of colours.  Caller is responsible for
 * 	creating an item to point to the submenu.
 **/
GtkWidget *
go_color_palette_make_menu (char const *no_color_label,
			    GOColor default_color,
			    GOColorGroup *cg,
			    char const *custom_dialog_title,
			    GOColor current_color)
{
	int cols = 8;
	int rows = 6;
	int col, row, pos, table_row = 0;
	GONamedColor const *color_names = default_color_set;
        GtkWidget *w, *submenu;

	submenu = g_object_new (go_menu_color_get_type (), NULL);

	if (no_color_label != NULL) {
		w = make_colored_menu_item (no_color_label, default_color);
		gtk_menu_attach (GTK_MENU (submenu), w, 0, cols, 0, 1);
		g_signal_connect (G_OBJECT (w),
			"activate",
			G_CALLBACK (cb_menu_default_activate), submenu);
		table_row++;
	}
	for (row = 0; row < rows; row++, table_row++) {
		for (col = 0; col < cols; col++) {
			pos = row * cols + col;
			if (color_names [pos].name == NULL)
				goto custom_colors;
			w = make_colored_menu_item (" ",
				color_names [pos].color);
			gtk_widget_set_tooltip_text (w, _(color_names[pos].name));
			gtk_menu_attach (GTK_MENU (submenu), w,
				col, col+1, table_row, table_row+1);
			g_signal_connect (G_OBJECT (w),
				"activate",
				G_CALLBACK (cb_menu_color_activate), submenu);
		}
	}

custom_colors :
	if (col > 0)
		row++;
	for (col = 0; col < cols && col < GO_COLOR_GROUP_HISTORY_SIZE; col++) {
		w = make_colored_menu_item (" ", cg->history[col]);
		gtk_menu_attach (GTK_MENU (submenu), w,
			col, col+1, table_row, table_row+1);
		g_signal_connect (G_OBJECT (w),
			"activate",
			G_CALLBACK (cb_menu_color_activate), submenu);
	}
	w = gtk_image_menu_item_new_with_label (_("Custom color..."));
	/* Workaround for bug http://bugzilla.gnome.org/show_bug.cgi?id=585421 */
	/* We can't have an image in one of the gtk_menu_item, it would lead to an
	   ugly item spacing. */
	/* gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (w),*/
	/* 	gtk_image_new_from_stock (GTK_STOCK_SELECT_COLOR, GTK_ICON_SIZE_MENU));*/
	gtk_widget_show_all (w);
	gtk_menu_attach (GTK_MENU (submenu), w, 0, cols, row + 2, row + 3);
	g_signal_connect (G_OBJECT (w),
		"activate",
		G_CALLBACK (cb_menu_custom_activate), submenu);

	((GOMenuColor *)submenu)->selection = current_color;
	((GOMenuColor *)submenu)->default_color = default_color;
	g_object_set_data_full (G_OBJECT (submenu), "title",
		g_strdup (custom_dialog_title), g_free);

	gtk_widget_show (submenu);

	return submenu;
}
示例#13
0
static GtkMenu *
create_menu (StatusNotifierItem *sn, GMainLoop *loop)
{
    GtkMenu *menu;
    GtkMenu *submenu;
    GtkWidget *item;
    guint i;
    StatusNotifierStatus status;
    GSList *group = NULL;

    menu = (GtkMenu *) gtk_menu_new ();
    submenu = (GtkMenu *) gtk_menu_new ();

    g_object_get (sn, "status", &status, NULL);

    i = 0;

    item = gtk_radio_menu_item_new_with_label (group, "Passive");
    group = gtk_radio_menu_item_get_group ((GtkRadioMenuItem *) item);
    if (status == STATUS_NOTIFIER_STATUS_PASSIVE)
        gtk_check_menu_item_set_active ((GtkCheckMenuItem *) item, TRUE);
    g_object_set_data ((GObject *) item,
            "sn-status", GUINT_TO_POINTER (STATUS_NOTIFIER_STATUS_PASSIVE));
    gtk_widget_show (item);
    gtk_menu_attach (submenu, item, 0, 1, i, i + 1);
    ++i;
    item = gtk_radio_menu_item_new_with_label (group, "Active");
    group = gtk_radio_menu_item_get_group ((GtkRadioMenuItem *) item);
    if (status == STATUS_NOTIFIER_STATUS_ACTIVE)
        gtk_check_menu_item_set_active ((GtkCheckMenuItem *) item, TRUE);
    g_object_set_data ((GObject *) item,
            "sn-status", GUINT_TO_POINTER (STATUS_NOTIFIER_STATUS_ACTIVE));
    gtk_widget_show (item);
    gtk_menu_attach (submenu, item, 0, 1, i, i + 1);
    ++i;
    item = gtk_radio_menu_item_new_with_label (group, "Needs attention");
    group = gtk_radio_menu_item_get_group ((GtkRadioMenuItem *) item);
    if (status == STATUS_NOTIFIER_STATUS_NEEDS_ATTENTION)
        gtk_check_menu_item_set_active ((GtkCheckMenuItem *) item, TRUE);
    g_object_set_data ((GObject *) item,
            "sn-status", GUINT_TO_POINTER (STATUS_NOTIFIER_STATUS_NEEDS_ATTENTION));
    gtk_widget_show (item);
    gtk_menu_attach (submenu, item, 0, 1, i, i + 1);
    ++i;

    g_slist_foreach (group, &set_status_activation_trigger, sn);

    i = 0;
    item = gtk_menu_item_new_with_label ("Status");
    gtk_menu_item_set_submenu ((GtkMenuItem *) item, (GtkWidget *) submenu);
    gtk_widget_show (item);
    gtk_menu_attach (menu, item, 0, 1, i, i + 1);
    ++i;
    item = gtk_menu_item_new_with_label ("Exit");
    g_signal_connect_swapped (item, "activate", (GCallback) g_main_loop_quit, loop);
    gtk_widget_show (item);
    gtk_menu_attach (menu, item, 0, 1, i, i + 1);
    ++i;

    return menu;
}
示例#14
0
int main(int argc, char **argv)
{
	GtkWidget  *menubar,*submenu, *application, *about, *license, *department_list, *semester_list, *base, *list, *label_group, *list_group, *go, *align;
	Department dep;
	Semester sem;
	GtkWidget *active[2];

	gtk_init (&argc, &argv);
	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

	gtk_window_set_title (GTK_WINDOW (window), "GPA Calculator for Anna University");
	gtk_window_set_resizable(GTK_WINDOW(window),FALSE);
	gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
	g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
	gtk_widget_show_all(window);


	menubar = gtk_menu_bar_new();
	application = gtk_menu_item_new_with_label("Application");
	submenu = gtk_menu_new();
	gtk_menu_item_set_submenu(GTK_MENU_ITEM(application),(submenu));

	about = gtk_menu_item_new_with_label("About");
	g_signal_connect(about, "activate", G_CALLBACK(about_dialog),NULL);

	license = gtk_menu_item_new_with_label("License");
	g_signal_connect(license, "activate", G_CALLBACK(license_dialog),NULL);

	gtk_menu_attach( GTK_MENU(gtk_menu_item_get_submenu(GTK_MENU_ITEM(application))),about,0,1,0,1);
	gtk_menu_attach( GTK_MENU(gtk_menu_item_get_submenu(GTK_MENU_ITEM(application))),license,0,1,1,2);

	gtk_container_add(GTK_CONTAINER(menubar),application);

	department_list = gtk_combo_box_text_new();

	for(dep = CSE; dep<=EI; dep++) 
		gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(department_list), departments[dep]); //make sure its const char* :)

	gtk_combo_box_set_active(GTK_COMBO_BOX(department_list),0);

	base = gtk_vbox_new(FALSE,10);

	semester_list = gtk_hbox_new(FALSE,10);

	list = gtk_combo_box_text_new();

	for (sem = one; sem <=eight; sem++) 
		gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(list), g_strdup_printf("%d",sem+1) );

	gtk_combo_box_set_active(GTK_COMBO_BOX(list),0);

	label_group = gtk_vbox_new(FALSE,0);
	list_group = gtk_vbox_new(FALSE,0);

	gtk_box_pack_start(GTK_BOX(label_group), gtk_label_new("Department : "), TRUE, TRUE, 0 );
	gtk_box_pack_start(GTK_BOX(label_group), gtk_label_new("Semester : "), TRUE, TRUE, 0 );

	gtk_box_pack_start(GTK_BOX(list_group),department_list, TRUE, TRUE, 0 );
	gtk_box_pack_start(GTK_BOX(list_group),list, TRUE, TRUE, 0 );

	active[0] = department_list;
	active[1] = list;
	go = gtk_button_new_with_label("Go");
	g_signal_connect(go,"clicked", G_CALLBACK(show_subjects),active );

	align = gtk_alignment_new(1,1,0,0);
	gtk_alignment_set_padding(GTK_ALIGNMENT(align),0,10,0,10);
	gtk_container_add(GTK_CONTAINER(align), go);

	gtk_box_pack_start(GTK_BOX(semester_list), gtk_vseparator_new(), FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(semester_list), label_group, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(semester_list), gtk_vseparator_new(), FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(semester_list), list_group, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(semester_list), gtk_vseparator_new(), FALSE, FALSE, 0);

	gtk_box_pack_start(GTK_BOX(base), menubar, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(base), gtk_image_new_from_file("logo.png"), FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(base), gtk_hseparator_new(), FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(base), semester_list, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(base), gtk_hseparator_new(), FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(base), align, FALSE, FALSE, 0);
	gtk_widget_show_all(base);

	gtk_container_add(GTK_CONTAINER(window), base);

	gtk_main();

	return 0;
}
static void
setup_photo_popup (UmPhotoDialog *um)
{
        GtkWidget *menu, *menuitem, *image;
        guint x, y;
        GDir *dir;
        const char *face;
        GError *error;
        gboolean none_item_shown;

        menu = gtk_menu_new ();

        x = 0;
        y = 0;
        none_item_shown = FALSE;

        error = NULL;
        dir = g_dir_open (DATADIR "/mate-accountsdialog/faces", 0, &error);
        if (dir == NULL) {
                g_warning ("Failed to load faces: %s", error->message);
                g_error_free (error);
                goto skip_faces;
        }

        while ((face = g_dir_read_name (dir)) != NULL) {
                char *filename;

                filename = g_build_filename (DATADIR "/mate-accountsdialog/faces", face, NULL);
                menuitem = menu_item_for_filename (um, filename);
                g_free (filename);
                if (menuitem == NULL)
                        continue;

                gtk_menu_attach (GTK_MENU (menu), GTK_WIDGET (menuitem),
                                 x, x + 1, y, y + 1);
                gtk_widget_show (menuitem);

                x++;
                if (x >= ROW_SPAN - 1) {
                        y++;
                        x = 0;
                }
        }
        g_dir_close (dir);

        image = gtk_image_new_from_icon_name ("avatar-default", GTK_ICON_SIZE_DIALOG);
        menuitem = gtk_menu_item_new ();
        gtk_container_add (GTK_CONTAINER (menuitem), image);
        gtk_widget_show_all (menuitem);
        gtk_menu_attach (GTK_MENU (menu), GTK_WIDGET (menuitem),
                         x, x + 1, y, y + 1);
        g_signal_connect (G_OBJECT (menuitem), "activate",
                          G_CALLBACK (none_icon_selected), um);
        gtk_widget_show (menuitem);
        none_item_shown = TRUE;
        y++;

skip_faces:
	if (!none_item_shown) {
		menuitem = gtk_menu_item_new_with_label (_("Disable image"));
		gtk_menu_attach (GTK_MENU (menu), GTK_WIDGET (menuitem),
				 0, ROW_SPAN - 1, y, y + 1);
		g_signal_connect (G_OBJECT (menuitem), "activate",
				  G_CALLBACK (none_icon_selected), um);
		gtk_widget_show (menuitem);
		y++;
	}

        /* Separator */
        menuitem = gtk_separator_menu_item_new ();
        gtk_menu_attach (GTK_MENU (menu), GTK_WIDGET (menuitem),
                         0, ROW_SPAN - 1, y, y + 1);
        gtk_widget_show (menuitem);

        y++;

#ifdef HAVE_CHEESE
        um->take_photo_menuitem = gtk_menu_item_new_with_label (_("Take a photo..."));
        gtk_menu_attach (GTK_MENU (menu), GTK_WIDGET (um->take_photo_menuitem),
                         0, ROW_SPAN - 1, y, y + 1);
        g_signal_connect (G_OBJECT (um->take_photo_menuitem), "activate",
                          G_CALLBACK (webcam_icon_selected), um);
        gtk_widget_set_sensitive (um->take_photo_menuitem, FALSE);
        gtk_widget_show (um->take_photo_menuitem);

        um->monitor = cheese_camera_device_monitor_new ();
        g_signal_connect (G_OBJECT (um->monitor), "added",
                          G_CALLBACK (device_added), um);
        g_signal_connect (G_OBJECT (um->monitor), "removed",
                          G_CALLBACK (device_removed), um);
        cheese_camera_device_monitor_coldplug (um->monitor);

        y++;
#endif /* HAVE_CHEESE */

        menuitem = gtk_menu_item_new_with_label (_("Browse for more pictures..."));
        gtk_menu_attach (GTK_MENU (menu), GTK_WIDGET (menuitem),
                         0, ROW_SPAN - 1, y, y + 1);
        g_signal_connect (G_OBJECT (menuitem), "activate",
                          G_CALLBACK (file_icon_selected), um);
        gtk_widget_show (menuitem);

        um->photo_popup = menu;
}