Exemplo n.º 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
        }