Esempio n. 1
0
//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);
}
Esempio n. 2
0
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");
}