//Display module int display_menu(void) { int choice; make_heading("STRING OPERATIONS"); printf("\tEnter which operation you want to perform:\n1.Compare 2.Copy 3.Reverse 4.Palindrome Check 5.Substring Check\n"); scanf("%d",&choice); if((choice < 1) || (choice > 5)) printf("ERROR: You've entered an invalid option\n"); else return(choice); }
static void bt_main_page_info_init_ui (const BtMainPageInfo * self, const BtMainPages * pages) { GtkWidget *label, *frame, *box; GtkWidget *table; GtkWidget *scrolledwindow; GtkAdjustment *spin_adjustment; GParamSpecULong *pspec, *pspec2; GObjectClass *song_info_class; gulong def, min, max; GST_DEBUG ("!!!! self=%p", self); gtk_widget_set_name (GTK_WIDGET (self), "song information"); song_info_class = g_type_class_ref (BT_TYPE_SONG_INFO); // first row of vbox frame = gtk_frame_new (NULL); label = make_heading (_("song meta data")); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); gtk_container_set_border_width (GTK_CONTAINER (frame), BOX_BORDER); gtk_widget_set_name (frame, "song meta data"); gtk_box_pack_start (GTK_BOX (self), frame, FALSE, TRUE, 0); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, BOX_BORDER); gtk_container_add (GTK_CONTAINER (frame), box); /* left side padding */ gtk_box_pack_start (GTK_BOX (box), gtk_label_new (" "), FALSE, TRUE, 0); // first column table = gtk_grid_new (); gtk_box_pack_start (GTK_BOX (box), table, TRUE, TRUE, 0); label = gtk_label_new (_("name")); g_object_set (label, "xalign", 1.0, NULL); gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1); self->priv->name = GTK_ENTRY (gtk_entry_new ()); g_object_set (self->priv->name, "hexpand", TRUE, "margin-left", LABEL_PADDING, NULL); gtk_grid_attach (GTK_GRID (table), GTK_WIDGET (self->priv->name), 1, 0, 1, 1); g_signal_connect (self->priv->name, "changed", G_CALLBACK (on_name_changed), (gpointer) self); label = gtk_label_new (_("genre")); g_object_set (label, "xalign", 1.0, NULL); gtk_grid_attach (GTK_GRID (table), label, 0, 1, 1, 1); self->priv->genre = GTK_ENTRY (gtk_entry_new ()); g_object_set (self->priv->genre, "hexpand", TRUE, "margin-left", LABEL_PADDING, NULL); gtk_grid_attach (GTK_GRID (table), GTK_WIDGET (self->priv->genre), 1, 1, 1, 1); g_signal_connect (self->priv->genre, "changed", G_CALLBACK (on_genre_changed), (gpointer) self); label = gtk_label_new (_("author")); g_object_set (label, "xalign", 1.0, NULL); gtk_grid_attach (GTK_GRID (table), label, 0, 2, 1, 1); self->priv->author = GTK_ENTRY (gtk_entry_new ()); g_object_set (self->priv->author, "hexpand", TRUE, "margin-left", LABEL_PADDING, NULL); gtk_grid_attach (GTK_GRID (table), GTK_WIDGET (self->priv->author), 1, 2, 1, 1); g_signal_connect (self->priv->author, "changed", G_CALLBACK (on_author_changed), (gpointer) self); label = gtk_label_new (_("created")); g_object_set (label, "xalign", 1.0, NULL); gtk_grid_attach (GTK_GRID (table), label, 0, 3, 1, 1); self->priv->date_created = GTK_ENTRY (gtk_entry_new ()); gtk_editable_set_editable (GTK_EDITABLE (self->priv->date_created), FALSE); gtk_widget_set_can_focus (GTK_WIDGET (self->priv->date_created), FALSE); g_object_set (self->priv->date_created, "hexpand", TRUE, "margin-left", LABEL_PADDING, NULL); gtk_grid_attach (GTK_GRID (table), GTK_WIDGET (self->priv->date_created), 1, 3, 1, 1); // second column table = gtk_grid_new (); gtk_box_pack_start (GTK_BOX (box), table, TRUE, TRUE, 0); label = gtk_label_new (_("beats per minute")); g_object_set (label, "xalign", 1.0, NULL); gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1); pspec = (GParamSpecULong *) g_object_class_find_property (song_info_class, "bpm"); spin_adjustment = gtk_adjustment_new (pspec->default_value, pspec->minimum, pspec->maximum, 1.0, 5.0, 0.0); self->priv->bpm = GTK_SPIN_BUTTON (gtk_spin_button_new (spin_adjustment, 1.0, 0)); g_object_set (self->priv->bpm, "margin-left", LABEL_PADDING, NULL); gtk_grid_attach (GTK_GRID (table), GTK_WIDGET (self->priv->bpm), 1, 0, 1, 1); g_signal_connect (self->priv->bpm, "value-changed", G_CALLBACK (on_bpm_changed), (gpointer) self); label = gtk_label_new (_("beats")); g_object_set (label, "xalign", 1.0, NULL); gtk_grid_attach (GTK_GRID (table), label, 0, 1, 1, 1); pspec = (GParamSpecULong *) g_object_class_find_property (song_info_class, "tpb"); pspec2 = (GParamSpecULong *) g_object_class_find_property (song_info_class, "bars"); def = pspec2->default_value / pspec->default_value; min = pspec2->minimum / pspec->maximum; max = pspec2->maximum / pspec->minimum; if (min < 1) min = 1; spin_adjustment = gtk_adjustment_new (def, min, max, 1.0, 4.0, 0.0); self->priv->beats = GTK_SPIN_BUTTON (gtk_spin_button_new (spin_adjustment, 1.0, 0)); g_object_set (self->priv->beats, "margin-left", LABEL_PADDING, NULL); gtk_grid_attach (GTK_GRID (table), GTK_WIDGET (self->priv->beats), 1, 1, 1, 1); g_signal_connect (self->priv->beats, "value-changed", G_CALLBACK (on_beats_changed), (gpointer) self); label = gtk_label_new (_("ticks per beat")); g_object_set (label, "xalign", 1.0, NULL); gtk_grid_attach (GTK_GRID (table), label, 0, 2, 1, 1); spin_adjustment = gtk_adjustment_new (pspec->default_value, pspec->minimum, pspec->maximum, 1.0, 4.0, 0.0); self->priv->tpb = GTK_SPIN_BUTTON (gtk_spin_button_new (spin_adjustment, 1.0, 0)); g_object_set (self->priv->tpb, "margin-left", LABEL_PADDING, NULL); gtk_grid_attach (GTK_GRID (table), GTK_WIDGET (self->priv->tpb), 1, 2, 1, 1); g_signal_connect (self->priv->tpb, "value-changed", G_CALLBACK (on_tpb_changed), (gpointer) self); label = gtk_label_new (_("last saved")); g_object_set (label, "xalign", 1.0, NULL); gtk_grid_attach (GTK_GRID (table), label, 0, 3, 1, 1); self->priv->date_changed = GTK_ENTRY (gtk_entry_new ()); gtk_editable_set_editable (GTK_EDITABLE (self->priv->date_changed), FALSE); gtk_widget_set_can_focus (GTK_WIDGET (self->priv->date_changed), FALSE); g_object_set (self->priv->date_changed, "hexpand", TRUE, "margin-left", LABEL_PADDING, NULL); gtk_grid_attach (GTK_GRID (table), GTK_WIDGET (self->priv->date_changed), 1, 3, 1, 1); // @idea show tick and subtick interval as time (s:ms) // second row of hbox frame = gtk_frame_new (NULL); label = make_heading (_("free text info")); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); gtk_container_set_border_width (GTK_CONTAINER (frame), BOX_BORDER); gtk_box_pack_start (GTK_BOX (self), frame, TRUE, TRUE, 0); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, BOX_BORDER); gtk_container_add (GTK_CONTAINER (frame), box); /* left side padding */ gtk_box_pack_start (GTK_BOX (box), gtk_label_new (" "), FALSE, TRUE, 0); scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (box), scrolledwindow, TRUE, TRUE, 0); self->priv->info = GTK_TEXT_VIEW (gtk_text_view_new ()); gtk_widget_set_name (GTK_WIDGET (self->priv->info), "free text info"); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (self->priv->info), GTK_WRAP_WORD); gtk_container_add (GTK_CONTAINER (scrolledwindow), GTK_WIDGET (self->priv->info)); g_signal_connect (gtk_text_view_get_buffer (self->priv->info), "changed", G_CALLBACK (on_info_changed), (gpointer) self); // register event handlers g_signal_connect_object (self->priv->app, "notify::song", G_CALLBACK (on_song_changed), (gpointer) self, 0); // listen to page changes g_signal_connect ((gpointer) pages, "notify::page", G_CALLBACK (on_page_switched), (gpointer) self); g_signal_connect ((gpointer) self, "map", G_CALLBACK (on_page_mapped), (gpointer) self); GST_DEBUG (" done"); }