|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Xml.Linq;
namespace WordAddIn1
{
/// <summary>
/// Interaction logic for UserControl2.xaml
/// </summary>
public partial class ImageSearchWpfUserControl : UserControl
{
int startVal = 1;
public ImageSearchWpfUserControl()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
//Make url for search, with paging support
string uri = "http://search.yahooapis.com/ImageSearchService/V1/imageSearch?appid=" + Properties.Settings.Default.AppId + "&results=20&query=" + textBox1.Text;
if((sender as Control).Name.Equals("buttonForward"))
{
startVal += 20;
uri += "&start=" + startVal;
}
else if ((sender as Control).Name.Equals("buttonBack"))
{
startVal -= 20;
uri += "&start=" + startVal;
}
else
startVal = 1;
//Load the result as XDocument
var xraw = XDocument.Load(uri);
//Populate array
var imageArray = from image in xraw.Elements().First().Elements()
select new YahooImage
{
Title = image.Element("{urn:yahoo:srchmi}Title").Value,
LargeUrl = image.Element("{urn:yahoo:srchmi}ClickUrl").Value,
Thumbnail = image.Element("{urn:yahoo:srchmi}Thumbnail").Element("{urn:yahoo:srchmi}Url").Value,
ThumbHeight = int.Parse(image.Element("{urn:yahoo:srchmi}Thumbnail").Element("{urn:yahoo:srchmi}Height").Value),
ThumbWidth = int.Parse(image.Element("{urn:yahoo:srchmi}Thumbnail").Element("{urn:yahoo:srchmi}Width").Value),
Summary = image.Element("{urn:yahoo:srchmi}Summary").Value
};
//Clear old results
stackPanel1.Children.Clear();
foreach (var im in imageArray)
{
//Show image on button
Image image = new Image();
ImageSourceConverter isc = new ImageSourceConverter();
image.Source = (ImageSource)isc.ConvertFromString(im.Thumbnail);
Button b = new Button();
b.Content = image;
b.Width = im.ThumbWidth;
b.Height = im.ThumbHeight;
b.Tag = im.LargeUrl;
b.ToolTip = im.Title + "\n\n" + im.Summary;
b.Click += delegate(object clicked_button, RoutedEventArgs evt_args)
{
Object missing = System.Reflection.Missing.Value;
//On click, add image to word document
try
{
Globals.ThisAddIn.Application.Selection.InlineShapes.AddPicture(
(clicked_button as Button).Tag.ToString(), ref missing, ref missing, ref missing);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, ex.GetType().Name);
Globals.ThisAddIn.CustomTaskPanes.RemoveAt(0);
}
};
stackPanel1.Children.Add(b);
}
//Choose paging buttons to display
if (imageArray.Count() < 20)
buttonForward.Visibility = Visibility.Collapsed;
else
buttonForward.Visibility = Visibility.Visible;
if (startVal > 1)
buttonBack.Visibility = Visibility.Visible;
else
buttonBack.Visibility = Visibility.Collapsed;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.