/* Looks at all tags covering the position of iter in the text view,
 * and if one of them is a link, follow it by showing the page identified
 * by the data attached to it.
 */
static void
follow_if_link (GtkWidget   *text_view,
                GtkTextIter *iter)
{
  GSList *tags = NULL, *tagp = NULL;

  tags = gtk_text_iter_get_tags (iter);
  for (tagp = tags;  tagp != NULL;  tagp = tagp->next)
    {
      GtkTextTag *tag = tagp->data;
      gint page = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (tag), "page"));

      if (page != 0)
        {
          show_page (gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view)), page);
          break;
        }
    }

  if (tags)
    g_slist_free (tags);
}
Exemple #2
0
int main(int argc, const char* argv[])
{
  // the capture
  std::ifstream in("osd_example_test_vars.txt");

  // need to remove comments
  // and condition from  var ':' value
  // to set var value
  // Have this in the quantracker/air/osd/utilities/flash_vars_upload example
  // really need to combine these

  if(in && !in.eof()){
      m_istream = ∈
  }else{
      std::cout << "input failed\n";
      return false;
  }
  std::cout << "Flash menu sim\n";
  // default pagesize
  uint32_t const page_size = 0x4000;

  if (!init_flash_pages(page_size)){
      std::cout << "failed to setup flash pages\n";
  }
  auto const & symtab = quan::stm32::flash::get_app_symbol_table();
  symtab.init();
  quan::stm32::flash::flash_menu();
  quan::report_errors();

  show_page(1);

  std::cout <<"write to file? Y/N";

  char ch;
  std::cin.get(ch);
  if ((ch == 'Y') || ( ch == 'y')){
    write_to_file("flash_vars.cpp");
  }
}
GtkWidget *
do_hypertext (GtkWidget *do_widget)
{
  static GtkWidget *window = NULL;

  if (!window)
    {
      GtkWidget *view;
      GtkWidget *sw;
      GtkTextBuffer *buffer;

      hand_cursor = gdk_cursor_new (GDK_HAND2);
      regular_cursor = gdk_cursor_new (GDK_XTERM);

      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
      gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (do_widget));
      gtk_window_set_default_size (GTK_WINDOW (window),
                                   450, 450);

      g_signal_connect (window, "destroy",
                        G_CALLBACK (gtk_widget_destroyed), &window);

      gtk_window_set_title (GTK_WINDOW (window), "Hypertext");
      gtk_container_set_border_width (GTK_CONTAINER (window), 0);

      view = gtk_text_view_new ();
      gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), GTK_WRAP_WORD);
      g_signal_connect (view, "key-press-event",
                        G_CALLBACK (key_press_event), NULL);
      g_signal_connect (view, "event-after",
                        G_CALLBACK (event_after), NULL);
      g_signal_connect (view, "motion-notify-event",
                        G_CALLBACK (motion_notify_event), NULL);

      buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));

      sw = gtk_scrolled_window_new (NULL, NULL);
      gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                      GTK_POLICY_AUTOMATIC,
                                      GTK_POLICY_AUTOMATIC);
      gtk_container_add (GTK_CONTAINER (window), sw);
      gtk_container_add (GTK_CONTAINER (sw), view);

      show_page (buffer, 1);

      gtk_widget_show_all (sw);
    }

  if (!gtk_widget_get_visible (window))
    {
      gtk_widget_show (window);
    }
  else
    {
      gtk_widget_destroy (window);
      window = NULL;
    }

  return window;
}
Exemple #4
0
int main()
{
	int driver=0, mode=VESA_800x600x8bit;
	int yes; 
	int i=0;
	int t=0;
	int style1=-1,style2=-1;
	char c;
	int n;
	int eee=0;

	initgraph(&driver, &mode, "");
	mydict();
	outtextxy(0,580,"Search:");
	
	while(strcmp(str,"exit")!=0&&strcmp(str,"quit")!=0)
	{
		num=0;
		clear_entry(str);
		if(eee==0)
		{
			t=bioskey(0);
		}
		eee=0;
		while(t!=Enter||num==0)
		{
			if(((char)t>=32&&(char)t<=126)||t==Bspace||t==ESC) 
			{
				if(t==Bspace)
				{
					if( num>0 ){
						num--;
						str[num] = '\0';
					}
				}
				else
				{
					if(t!=Enter)
					{
						c=t&0XFF;
						str[num++]=c;
						str[num] = '\0';
					}
				}
				if(t==ESC)
				{
					clear_entry(str);
					num=0;
				}
				input_entry();
				t=bioskey(0);
				
				if(num>=20)
				{
					clear_entry(str);
					num=0;
				}
			}
			else t=bioskey(0);
		}
		clear_translation();
		
		n=strlen(str);
		
		style1=-1;style2=-1;
		for(i=0;i<n;i++)
		{
			if(str[i]=='*'&&i<n) 	style1=i; 
			if(str[i]=='?'&&i<n) 	style2=i;
		}
		if(style1>0||style2>0)
		{
			search(str);
			if(count!=0) put_list();
		}
		
		show_translation(str);
			
		if(record>0) total=2;
		else total=1;
		show_page();
		if(record>0)
		{
			eee=1;
			t=bioskey(0);
			while(t==LEFT||t==RIGHT||t==DOWN||t==UP)
			{
				if(page==1&&(t==RIGHT||t==DOWN))
				{
					clear_translation();
					page++;
					copy_example( example, example2, record);
					put_translation2(example2);
					show_page();
				}
				if(page==2&&(t==LEFT||t==UP))
				{
					clear_translation();
					page--;
					show_translation(str);
					show_page();
				}
				t=bioskey(0);
			}	
		}
		for(i=0;i<2000;i++)
		{
			translation[i]=0;
			example[i]=0;
			example2[i]=0;
		}
		page=1;
		record=0;
	}
	closegraph();
	return 0; 
}
Exemple #5
0
void put_list( )//输出储存在list中的检索列表里面的内容
				//where 储存第一个单词在count中的序号 ,order是光标在列表中的位置 
{
	char p[25][20];
	char t1[10],t2[10];
	char t3[]="of";
	int i=0,t=0; 
	int x=10,y=30;
	
	clear_list();
	paint_color(order);
	if(count>=25)
	{
		for(i=0;i<25;i++)
		{
			strcpy(p[i],list[where+i]);
		}
		y=30;
		for(i=0;i<25;i++)
		{
			outtextxy(x,y,p[i]);
			y+=21;
		}
	}
	else
	{
		for(i=0;i<count;i++)
		{
			strcpy(p[i],list[where+i]);
		}
		y=30;
		for(i=0;i<count;i++)
		{
			outtextxy(x,y,p[i]);
			y+=21;
		}
	}
	while(t!=ESC)
	{
		if((order==1&&where>=0)||(order==25&&(where+order)<=count)||(t==PgUp&&where>0)||t==PgDn&&where+25<count||t==Home||t==End||t==Del||t==Ins)
		{
			clear_list();
			paint_color(order);
			if(count>=25)
			{
				for(i=0;i<25;i++)
				{
					strcpy(p[i],list[where+i]);
				}
				y=30;
				for(i=0;i<25;i++)
				{
					outtextxy(x,y,p[i]);
					y+=21;
				}
			}
			else
			{
				for(i=0;i<count;i++)
				{
					strcpy(p[i],list[where+i]);
				}
				y=30;
				for(i=0;i<count;i++)
				{
					outtextxy(x,y,p[i]);
					y+=21;
				}
			}
		}
		else
		{
			if(t==UP) 
			{
				setfillstyle(SOLID_FILL,BLACK);
				bar(5,30+order*21,185,51+order*21);
				outtextxy(10,order*21+30,p[order]);
				setfillstyle(SOLID_FILL,BLUE);
				bar(5,30+(order-1)*21,185,51+(order-1)*21);
				outtextxy(10,30+(order-1)*21,p[order-1]);
			}
			if(t==DOWN)
			{
				setfillstyle(SOLID_FILL,BLACK);
				bar(5,30+(order-2)*21,185,51+(order-2)*21);
				outtextxy(10,(order-2)*21+30,p[order-2]);
				setfillstyle(SOLID_FILL,BLUE);
				bar(5,30+(order-1)*21,185,51+(order-1)*21);
				outtextxy(10,30+(order-1)*21,p[order-1]);
			}
		}
		setfillstyle(SOLID_FILL,BLACK);
		bar(70,12,200,26);
		sprintf(t1,"%d",where+order);
		sprintf(t2,"%d",count);
		outtextxy(70,12,t1);
		outtextxy(70+strlen(t1)*8+4,12,t3);
		outtextxy(70+strlen(t1)*8+strlen(t3)*8+8,12,t2);
		
		t=bioskey(0);
		
		switch(t)
		{
			case DOWN:
				{
					if(order<25&&(where+order)<count) order++;
					else if(order==25&&(where+order)<count)
						{
							where++;
						}
					else ;
				}break;
			case UP:
				{
					if(order>1) order--;
					else if(order==1&&where>0) where--;
					else ;
				}break;
			case PgDn:
				{
					if(count<=25) ;
					else
					{
						if((where+50)>count) where+=count-where-25;
						else if(where+25>=count) ;
						else where+=25;
					}
				}break;
			case PgUp:
				{
					if((where-25)<0&&where>=-24) where=0;
					else if(where-25>=0) where-=25;
					else ;
				}break;
			case Home:
				{
					where=0;
				}break;
			case End:
				{
					if(count<=25) ;
					else  where=count-25;
				}break;
			case Enter:
				{
					clear_translation();
					strcpy(str,list[where+order-1]);
					show_translation(str);
					if(record>0) total=2;
					else total=1;
					show_page();
					if(record>0)
					{
						t=bioskey(0);
						while(t==LEFT||t==RIGHT)
						{
							if(page==1&&t==RIGHT)
							{
								clear_translation();
								page++;
				 				copy_example( example, example2, record);
				 				put_translation2(example2);
				 				show_page();
							}
							if(page==2&&t==LEFT)
							{
								clear_translation();
								page--;
								show_translation(str);
								show_page();
							}
							t=bioskey(0);
						}
					}
					for(i=0;i<2000;i++)
					{
						translation[i]=0;
						example[i]=0;
						example2[i]=0;
					}
					page=1;
					record=0;
				}break;
			case Ins:
				{
					order=1;
				}break;
			case Del:
				{
					if(count<25) order=count;
					else order=25;
				}break;
				
		}
	}
		
	clear_list();
	count=0;where=0;order=1;
	free(list);
	
}
static void
show_page_account (GoaPanel  *panel,
                   GoaObject *object)
{
  GList *children;
  GList *l;
  GtkWidget *box;
  GtkWidget *grid;
  GtkWidget *left_grid;
  GtkWidget *right_grid;
  GtkWidget *bar;
  GtkWidget *label;
  GoaProvider *provider;
  GoaAccount *account;
  const gchar *provider_type;

  provider = NULL;

  show_page (panel, 1);
  box = GTK_WIDGET (gtk_builder_get_object (panel->builder, "accounts-tree-box"));
  gtk_widget_set_sensitive (box, TRUE);

  label = GTK_WIDGET (gtk_builder_get_object (panel->builder, "accounts-tree-label"));
  gtk_widget_hide (label);

  /* Out with the old */
  children = gtk_container_get_children (GTK_CONTAINER (panel->accounts_vbox));
  for (l = children; l != NULL; l = l->next)
    gtk_container_remove (GTK_CONTAINER (panel->accounts_vbox), GTK_WIDGET (l->data));
  g_list_free (children);

  account = goa_object_peek_account (object);
  provider_type = goa_account_get_provider_type (account);
  provider = goa_provider_get_for_provider_type (provider_type);

  /* And in with the new */
  if (goa_account_get_attention_needed (account))
    {
      bar = gtk_info_bar_new ();
      label = gtk_label_new (_("Expired credentials. Please log in again."));
      gtk_container_add (GTK_CONTAINER (gtk_info_bar_get_content_area (GTK_INFO_BAR (bar))), label);
      if (provider != NULL)
        gtk_info_bar_add_button (GTK_INFO_BAR (bar), _("_Log In"), GTK_RESPONSE_OK);
      gtk_box_pack_start (GTK_BOX (panel->accounts_vbox), bar, FALSE, TRUE, 0);
      g_signal_connect (bar, "response", G_CALLBACK (on_info_bar_response), panel);
    }

  left_grid = gtk_grid_new ();
  gtk_widget_set_halign (left_grid, GTK_ALIGN_END);
  gtk_widget_set_hexpand (left_grid, TRUE);
  gtk_orientable_set_orientation (GTK_ORIENTABLE (left_grid), GTK_ORIENTATION_VERTICAL);
  gtk_grid_set_row_spacing (GTK_GRID (left_grid), 0);

  right_grid = gtk_grid_new ();
  gtk_widget_set_hexpand (right_grid, TRUE);
  gtk_orientable_set_orientation (GTK_ORIENTABLE (right_grid), GTK_ORIENTATION_VERTICAL);
  gtk_grid_set_row_spacing (GTK_GRID (right_grid), 0);

  if (provider != NULL)
    {
      goa_provider_show_account (provider,
                                 panel->client,
                                 object,
                                 GTK_BOX (panel->accounts_vbox),
                                 GTK_GRID (left_grid),
                                 GTK_GRID (right_grid));
    }

  grid = gtk_grid_new ();
  gtk_orientable_set_orientation (GTK_ORIENTABLE (grid), GTK_ORIENTATION_HORIZONTAL);
  gtk_grid_set_column_spacing (GTK_GRID (grid), 12);
  gtk_container_add (GTK_CONTAINER (grid), left_grid);
  gtk_container_add (GTK_CONTAINER (grid), right_grid);
  gtk_box_pack_start (GTK_BOX (panel->accounts_vbox), grid, FALSE, TRUE, 0);

  gtk_widget_show_all (panel->accounts_vbox);

  if (provider != NULL)
    g_object_unref (provider);
}