示例#1
0
        public NopsaImage(NOPSAImageHolder imgholder, CommunicationManager cm)
        {
            InitializeComponent();

            imageholder = imgholder;

            line.X1 = 0;
            line.X2 = Width;
            line.Y1 = Height - 1;
            line.Y2 = Height - 1;

            this.cm = cm;
        }
        public static void download_image_to_doc(NOPSAImageHolder imageholder)
        {
            //Debug.WriteLine(Util.GetUserDataPath());

            //ApplicationInteraction.PowerPointApplication.ActiveWindow.Selection.SlideRange.Shapes.AddPicture(Path.Combine(Util.GetUserDataPath() , "citywall.jpg") ,
            //new Util.Downloader(imageholder.img_url);

            //ApplicationInteraction.imagesadded.Add(imageholder);

            //downloading image
            //office hangs when loading image, even when run in seperate thread or backgroundworker. when you insert image from url, office hangs (without using addin), so I suppose its problem at their end

            try
            {
                Shape addedpic = ApplicationInteraction.PowerPointApplication.ActiveWindow.Selection.SlideRange.Shapes.AddPicture(
                                    imageholder.img_url,
                                    Microsoft.Office.Core.MsoTriState.msoFalse,
                                    Microsoft.Office.Core.MsoTriState.msoCTrue,
                                    0,
                                    0);

                shape_uuids.Add(addedpic.GetHashCode());
                imagesadded.Add(imageholder);

                ApplicationInteraction.add_credits_slide();

            }
            catch (Exception ex)
            {
                //System.Windows.Forms.MessageBox.Show("Dear paba, here comes a error :) ");
                //System.Windows.Forms.MessageBox.Show("-" + ex.Message);
                //System.Windows.Forms.MessageBox.Show("-" + ex.StackTrace);
                TextWriter tw = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\ribbon.txt");
                tw.WriteLine("Message:");
                tw.WriteLine(ex.Message);
                tw.WriteLine("StackTrace:");
                tw.WriteLine(ex.StackTrace);
                tw.WriteLine("Source:");
                tw.WriteLine(ex.Source);
                tw.WriteLine("helplink");
                tw.WriteLine(ex.HelpLink);
                tw.Close();

             }
        }
        private void parse()
        {
            if (this.xml.Contains("notice message")) return; //REMOVE NOTICE MESSAGE FROM API

            else if (this.xml.Contains("<code>") && !this.xml.Contains("900"))
            {
                //Debug.WriteLine("XML code error: " + this.xml.ToString());
                return;
            }

            List<String> suggestions = new List<String>();
            String source = "";

            List<NOPSAImageHolder> images = new List<NOPSAImageHolder>();
            List<NOPSAImageTagHolder> img_tags = new List<NOPSAImageTagHolder>(); //dont forget to empty it after a 'round'

            //bool issearch = false;

            bool img_start = false;
            bool tag_start = false;

            String img_id = "";
            String img_rights = "";
            String img_holder = "";
            String img_url = "";
            String img_creator = "";
            String img_height = "";
            String img_width = "";
            String img_prirority = "";

            String tag_id = "";
            String tag_relevence = "";
            String tag_string = "";

            //Debug.WriteLine(this.xml);
            using (XmlReader reader = XmlReader.Create(new StringReader( this.xml )))
            {
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                        case XmlNodeType.Element: // The node is an element.
                            //Debug.Write("<" + reader.Name);
                            //Debug.WriteLine(">");
                            if (reader.Name == "source") // true for suggest
                            {
                                String recieved_name = reader["name"];
                                if (recieved_name != null && !recieved_name.Equals(""))
                                {
                                    //Debug.WriteLine("suggest recieved name isnt null '" + recieved_name + "'");
                                    source = recieved_name;
                                }
                                //Debug.WriteLine("its suggestion " + reader["name"]); // only true for suggesiton
                            }
                            else if (reader.Name == "search") // true for search
                            {
                                String recieved_name = reader["source"];
                                if (recieved_name != null && !recieved_name.Equals(""))
                                {
                                    //Debug.WriteLine("search recieved name isnt null " + recieved_name);
                                    source = recieved_name;
                                }
                            }
                            else if (reader.Name == "suggestion") // its suggestion element
                            {
                                String temp = reader.ReadString().Trim(); //suggestion text
                                //Debug.WriteLine("temp: " + temp);
                                suggestions.Add(temp);
                            }
                            else if (reader.Name == "image") // its search->image element
                            {
                                //Debug.WriteLine("starting image");
                                img_start = true; //so that other tags inside <image> can know that its their turn (not of someone with same name but outside <image>)
                            }
                            else if (reader.Name == "id") // currently multile tags start with id
                            {
                                if (img_start && !tag_start) // it must be related to <image>
                                {
                                    img_id = reader.ReadString().Trim();
                                }
                                if (img_start && tag_start) // it must be related to <image>..<tag>HERE</tag></image>
                                {
                                    tag_id = reader.ReadString().Trim();
                                }
                            }
                            else if (reader.Name == "rights")
                            {
                                if (img_start)
                                {
                                    img_rights = reader.ReadString().Trim();
                                }
                            }
                            else if (reader.Name == "image_holder")
                            {
                                if (img_start)
                                {
                                    img_holder = reader.ReadString().Trim();
                                }
                            }
                            else if (reader.Name == "url")
                            {
                                if (img_start)
                                {
                                    img_url = reader.ReadString().Trim();
                                }
                            }
                            else if (reader.Name == "creator")
                            {
                                if (img_start)
                                {
                                    img_creator = reader.ReadString().Trim();
                                }
                            }
                            else if (reader.Name == "height")
                            {
                                if (img_start)
                                {
                                    img_height = reader.ReadString().Trim();
                                }
                            }
                            else if (reader.Name == "width")
                            {
                                if (img_start)
                                {
                                    img_width = reader.ReadString().Trim();
                                }
                            }
                            else if (reader.Name == "prirority")
                            {
                                if (img_start)
                                {
                                    img_prirority = reader.ReadString().Trim();
                                }
                            }
                            else if (reader.Name == "tag")
                            {
                                if (img_start)
                                {
                                    tag_start = true; // telling others that tag has started
                                    //Debug.WriteLine("its tag");
                                }
                            }
                            else if (reader.Name == "relevancy")
                            {
                                if (img_start && tag_start)
                                {
                                    tag_relevence = reader.ReadString().Trim();
                                }
                            }
                            else if (reader.Name == "string")
                            {
                                if (img_start && tag_start)
                                {
                                    tag_string = reader.ReadString().Trim();
                                }
                            }
                            break;
                        case XmlNodeType.Text: //Display the text in each element.
                            //Debug.WriteLine(reader.Value);
                            break;
                        case XmlNodeType.EndElement: //Display the end of the element.
                            //Debug.Write("</" + reader.Name);
                            //Debug.WriteLine(">");
                            if (reader.Name == "image") // its search->image element
                            {
                                //Debug.WriteLine("ending image");
                                img_start = false;
                                //now put image in container
                                /*
                                Debug.WriteLine("img_id: " + img_id);
                                Debug.WriteLine("img_rights: " + img_rights);
                                Debug.WriteLine("img_holder: " + img_holder);
                                Debug.WriteLine("img_url: " + img_url);
                                Debug.WriteLine("img_creator: " + img_creator);
                                Debug.WriteLine("img_height: " + img_height);
                                Debug.WriteLine("img_width: " + img_width);
                                Debug.WriteLine("img_prirority: " + img_prirority);
                                */
                                NOPSAImageHolder temp_img = new NOPSAImageHolder();
                                temp_img.img_source = source;
                                temp_img.img_id = img_id;
                                temp_img.img_rights = img_rights;
                                temp_img.img_holder = img_holder;
                                temp_img.img_url = img_url;
                                temp_img.img_creator = img_creator;
                                temp_img.img_height = img_height;
                                temp_img.img_width = img_width;
                                temp_img.img_prirority = img_prirority;

                                temp_img.tags = img_tags;
                                img_tags = new List<NOPSAImageTagHolder>();

                                images.Add(temp_img);

                                Debug.WriteLine("this is cm, source: " + source + " , url: " + img_url);
                            }
                            else if (reader.Name == "tag")
                            {
                                if (img_start)
                                {
                                    tag_start = false;
                                    //Debug.WriteLine("its tag closing");

                                    NOPSAImageTagHolder temp_tag_holder = new NOPSAImageTagHolder();
                                    temp_tag_holder.tag_id = tag_id;
                                    temp_tag_holder.tag_relevence = tag_relevence;
                                    temp_tag_holder.tag_string = tag_string;

                                    //Debug.WriteLine("id: "+tag_id);
                                    //Debug.WriteLine("relevence: "+tag_relevence);
                                    //Debug.WriteLine("string: " + tag_string);

                                    img_tags.Add(temp_tag_holder);
                                }
                            }

                            break;
                    }
                }
            }

            //Debug.WriteLine("some data processed");
            if (suggestions.Count != 0) // so it means the returned xml was from a suggestions query
            {
                Suggest_Data.sources.Add(source);
                Suggest_Data.suggestions.Add(suggestions);

                suc.ActiveControl.Invoke((MethodInvoker)delegate
                {
                    // runs on UI thread
                    suc.update_suggestions();
                });

            }
            else if (images.Count != 0)
            {
                //Debug.WriteLine("images arnt zero");
                Search_Data.sources.Add(source);
                Search_Data.images.Add(images);

                //WE MAY RUN SOME SHUFFLING ALGO HERE
                if (suc.InvokeRequired)
                {
                    suc.ActiveControl.Invoke(new MethodInvoker(delegate
                    {
                        suc.update_images();
                    }));
                }
                else
                {
                    suc.update_images();
                }

                /*
                suc.ActiveControl.Invoke((MethodInvoker)delegate
                {
                    // runs on UI thread
                    suc.update_images();
                });
                */
            }
            source = ""; //not required but helps in debugging
        }