Search Results

Search found 14402 results on 577 pages for 'mouse properties'.

Page 232/577 | < Previous Page | 228 229 230 231 232 233 234 235 236 237 238 239  | Next Page >

  • Observer Pattern Implementation

    - by user17028
    To teach myself basic game programming, I am going to program a clone of Pong. I will use the Observer design pattern, with an interface between the input and the game engine. However, I'm not sure what the interface should do. One idea I had was for the input interface to tell the game engine that (e.g.) the screen was clicked, then to let the game engine decide what to do with that information (shoot a bullet, for example). Another idea I had was for the input interface, having caught the mouse click, to tell the game engine to shoot a bullet. Which method would be better for me to use?

    Read the article

  • Distorted graphics, problems with starting up

    - by GreenEggsAndHam64
    Using the newest version of Ubuntu, freshly installed. NVIDIA GeForce GTX 560 Ti. It's mostly the font that doesn't render well, I think. Small logos do it too, sometimes. Screenshot to clarify (see bookmarks, search bar, etc.). EDIT: Another screenshot. And, sometimes when I start up, I get only a black screen saying [OK]. I can move my mouse around, but nothing helps, except for restarting. Also, my desktop picture doesn't stay the same. Every time I start up Ubuntu it goes back to the standard purple background. They're not very serious problems, but it's all a little annoying. Thanks in advance for your help.

    Read the article

  • Calendar icon in unity shows wrong date

    - by felix
    There is a column of icons in unity on the far left and one of them has the number "31" in big numerals. If you mouse over it it says "Google Calendar" and if you click on it you get google calendar which of course shows the correct date. Today is November 3. Shouldn't it say "3" instead? If I type "date" from the command line I get Sun Nov 3 21:19:37 GMT 2013 I see this was fixed for Chrome at least in 2011 http://gmailblog.blogspot.co.uk/2011/04/5-years-of-google-calendar-and-new.html .

    Read the article

  • Hangs on Splash Screen after login (auto-login), how can I fix this?

    - by Davious
    Computer: Toshiba Terca A4 OS: Ubuntu Desktop 10.10 After installing 10.10, the splash screen hangs and the mouse pointer appears. Anyone know what I can do to fix this? ~/.xsession-errors has (nautilus:3190): GConf-CRITICAL **: gconf_value_free: assertion `value != NULL' failed btw, Safe-mode works: I do a Ctrl-Alt-F1 into a command prompt session and run ps aux | grep slave then sudo kill [id of gdm-simple-slave] That killed the session and allowed me to login in safe-mode. Safe-mode works. Then I open a terminal and run ps aux | grep nm- sudo kill -9 [id of nm-applet] nm-applet --sm-disable & to get my internet connection up.

    Read the article

  • Mousin' down the PathListBox

    - by T
    While modifying the standard media player with a new look and feel for Ineta Live I saw a unique opportunity to use their logo with a dotted I with and attached arc as the scrub control. So I created a PathListBox that I wanted an object to follow when a user did a click and drag action.  Below is how I solved the problem.  Please let me know if you have improvements or know of a completely different way.  I am always eager to learn. First, I created a path using the pen tool in Expression Blend (see the yellow line in image below).  Then I right clicked that path and chose [Path] --> [Make Layout Path].   That created a new PathListBox.  Then I chose the object I want to move down the new PathListBox and Placed it as a child in the Objects and Timeline window (see image below).  If the child object (the thing the user will click and drag) is XAML, it will move much smoother than images. Just as another side note, I wanted there to be no highlight when the user selects the “ball” to drag and drop.  This is done by editing the ItemContainerStyle under Additional Templates on the PathListBox.  Post a question if you need help on this and I will expand my explanation. Here is a pic of the object and the path I wanted it to follow.  I gave the path a yellow solid brush here so you could see it but when I lay this over another object, I will make the path transparent.   To animate this object down the path, the trick is to animate the Start number for the LayoutPath.  Not the StartItemIndex, the Start above Span. In order to enable animation when a user clicks and drags, I put in the following code snippets in the code behind. the DependencyProperties are not necessary for the Drag control. namespace InetaPlayer{ public partial class PositionControl : UserControl { private bool _mouseDown; private double _maxPlayTime; public PositionControl() { // Required to initialize variables InitializeComponent(); //mouse events for scrub control positionThumb.MouseLeftButtonDown += new MouseButtonEventHandler(ValueThumb_MouseLeftButtonDown); positionThumb.MouseLeftButtonUp += new MouseButtonEventHandler(ValueThumb_MouseLeftButtonUp); positionThumb.MouseMove += new MouseEventHandler(ValueThumb_MouseMove); positionThumb.LostMouseCapture += new MouseEventHandler(ValueThumb_LostMouseCapture); } // exposed for binding to real slider using a DependencyProperty enables animation, styling, binding, etc.... public double MaxPlayTime { get { return (double)GetValue(MaxPlayTimeProperty); } set { SetValue(MaxPlayTimeProperty, value); } } public static readonly DependencyProperty MaxPlayTimeProperty = DependencyProperty.Register("MaxPlayTime", typeof(double), typeof(PositionControl), null);   // exposed for binding to real slider using a DependencyProperty enables animation, styling, binding, etc....   public double CurrSliderValue { get { return (double)GetValue(CurrSliderValueProperty); } set { SetValue(CurrSliderValueProperty, value); } }   public static readonly DependencyProperty CurrSliderValueProperty = DependencyProperty.Register("CurrSliderValue", typeof(double), typeof(PositionControl), new PropertyMetadata(0.0, OnCurrSliderValuePropertyChanged));   private static void OnCurrSliderValuePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { PositionControl control = d as PositionControl; control.OnCurrSliderValueChanged((double)e.OldValue, (double)e.NewValue); }   private void OnCurrSliderValueChanged(double oldValue, double newValue) { _maxPlayTime = (double) GetValue(MaxPlayTimeProperty); if (!_mouseDown) if (_maxPlayTime!=0) sliderPathListBox.LayoutPaths[0].Start = newValue / _maxPlayTime; else sliderPathListBox.LayoutPaths[0].Start = 0; }  //mouse control   void ValueThumb_MouseMove(object sender, MouseEventArgs e) { if (!_mouseDown) return; //get the offset of how far the drag has been //direction is handled automatically (offset will be negative for left move and positive for right move) Point mouseOff = e.GetPosition(positionThumb); //Divide the offset by 1000 for a smooth transition sliderPathListBox.LayoutPaths[0].Start +=mouseOff.X/1000; _maxPlayTime = (double)GetValue(MaxPlayTimeProperty); SetValue(CurrSliderValueProperty ,sliderPathListBox.LayoutPaths[0].Start*_maxPlayTime); }   void ValueThumb_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { _mouseDown = false; } void ValueThumb_LostMouseCapture(object sender, MouseEventArgs e) { _mouseDown = false; } void ValueThumb_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { _mouseDown = true; ((UIElement)positionThumb).CaptureMouse(); }   }}  I made this into a user control and exposed a couple of DependencyProperties in order to bind it to a standard Slider in the overall project.  This control is embedded into the standard Expression media player template and is used to replace the standard scrub bar.  When the player goes live, I will put a link here.

    Read the article

  • Stumbling Through: Visual Studio 2010 (Part III)

    The last post ended with us just getting started on stumbling into text template file customization, a task that required a Visual Studio extension (Tangible T4 Editor) to even have a chance at completing.  Despite the benefits of the Tangible T4 Editor, I still had a hard time putting together a solid text template that would be easy to explain.  This is mostly due to the way the files allow you to mix code (encapsulated in <# #>) with straight-up text to generate.  It is effective to be sure, but not very readable.  Nevertheless, I will try and explain what was accomplished in my custom tt file, though the details of which are not really the point of this article (my way of saying dont criticize my crappy code, and certainly dont use it in any somewhat real application.  You may become dumber just by looking at this code.  You have been warned really the footnote I should put at the end of all of my blog posts). To begin with, there were two basic requirements that I needed the code generator to satisfy:  Reading one to many entity framework files, and using the entities that were found to write one to many class files.  Thankfully, using the Entity Object Generator as a starting point gave us an example on how to do exactly that by using the MetadataLoader and EntityFrameworkTemplateFileManager you include references to these items and use them like so: // Instantiate an entity framework file reader and file writer MetadataLoader loader = new MetadataLoader(this); EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this); // Load the entity model metadata workspace MetadataWorkspace metadataWorkspace = null; bool allMetadataLoaded =loader.TryLoadAllMetadata("MFL.tt", out metadataWorkspace); EdmItemCollection ItemCollection = (EdmItemCollection)metadataWorkspace.GetItemCollection(DataSpace.CSpace); // Create an IO class to contain the 'get' methods for all entities in the model fileManager.StartNewFile("MFL.IO.gen.cs"); Next, we want to be able to loop through all of the entities found in the model, and then each property for each entity so we can generate classes and methods for each.  The code for that is blissfully simple: // Iterate through each entity in the model foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name)) {     // Iterate through each primitive property of the entity     foreach (EdmProperty edmProperty in entity.Properties.Where(p => p.TypeUsage.EdmType is PrimitiveType && p.DeclaringType == entity))     {         // TODO:  Create properties     }     // Iterate through each relationship of the entity     foreach (NavigationProperty navProperty in entity.NavigationProperties.Where(np => np.DeclaringType == entity))     {         // TODO:  Create associations     } } There really isnt anything more advanced than that going on in the text template the only thing I had to blunder through was realizing that if you want the generator to interpret a line of code (such as our iterations above), you need to enclose the code in <# and #> while if you want the generator to interpret the VALUE of code, such as putting the entity name into the class name, you need to enclose the code in <#= and #> like so: public partial class <#=entity.Name#> To make a long story short, I did a lot of repetition of the above to come up with a text template that generates a class for each entity based on its properties, and a set of IO methods for each entity based on its relationships.  The two work together to provide lazy-loading for hierarchical data (such getting Team.Players) so it should be pretty intuitive to use on a front-end.  This text template is available here you can tweak the inputFiles array to load one or many different edmx models and generate the basic xml IO and class files, though it will probably only work correctly in the simplest of cases, like our MFL model described in the previous post.  Additionally, there is no validation, logging or error handling which is something I want to handle later by stumbling through the enterprise library 5.0. The code that gets generated isnt anything special, though using the LINQ to XML feature was something very new and exciting for me I had only worked with XML in the past using the DOM or XML Reader objects along with XPath, and the LINQ to XML model is just so much more elegant and supposedly efficient (something to test later).  For example, the following code was generated to create a Player object for each Player node in the XML:         return from element in GetXmlData(_PlayerDataFile).Descendants("Player")             select new Player             {                 Id = int.Parse(element.Attribute("Id").Value)                 ,ParentName = element.Parent.Name.LocalName                 ,ParentId = long.Parse(element.Parent.Attribute("Id").Value)                 ,Name = element.Attribute("Name").Value                 ,PositionId = int.Parse(element.Attribute("PositionId").Value)             }; It is all done in one line of code, no looping needed.  Even though GetXmlData loads the entire xml file just like the old XML DOM approach would have, it is supposed to be much less resource intensive.  I will definitely put that to the test after we develop a user interface for getting at this data.  Speaking of the data where IS the data?  Weve put together a pretty model and a bunch of code around it, but we dont have any data to speak of.  We can certainly drop to our favorite XML editor and crank out some data, but if it doesnt totally match our model, it will not load correctly.  To help with this, Ive built in a method to generate xml at any given layer in the hierarchy.  So for us to get the closest possible thing to real data, wed need to invoke MFL.IO.GenerateTeamXML and save the results to file.  Doing so should get us something that looks like this: <Team Id="0" Name="0">   <Player Id="0" Name="0" PositionId="0">     <Statistic Id="0" PassYards="0" RushYards="0" Year="0" />   </Player> </Team> Sadly, it is missing the Positions node (havent thought of a way to generate lookup xml yet) and the data itself isnt quite realistic (well, as realistic as MFL data can be anyway).  Lets manually remedy that for now to give us a decent starter set of data.  Note that this is TWO xml files Lookups.xml and Teams.xml: <Lookups Id=0>   <Position Id="0" Name="Quarterback"/>   <Position Id="1" Name="Runningback"/> </Lookups> <Teams Id=0>   <Team Id="0" Name="Chicago">     <Player Id="0" Name="QB Bears" PositionId="0">       <Statistic Id="0" PassYards="4000" RushYards="120" Year="2008" />       <Statistic Id="1" PassYards="4200" RushYards="180" Year="2009" />     </Player>     <Player Id="1" Name="RB Bears" PositionId="1">       <Statistic Id="2" PassYards="0" RushYards="800" Year="2007" />       <Statistic Id="3" PassYards="0" RushYards="1200" Year="2008" />       <Statistic Id="4" PassYards="3" RushYards="1450" Year="2009" />     </Player>   </Team> </Teams> Ok, so we have some data, we have a way to read/write that data and we have a friendly way of representing that data.  Now, what remains is the part that I have been looking forward to the most: present the data to the user and give them the ability to add/update/delete, and doing so in a way that is very intuitive (easy) from a development standpoint.Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here.

    Read the article

  • how can I make the launcher disappear after notication

    - by smoser
    I have a generally stock configured Unity 2d, with the launcher in auto-hide mode. When I get a notification, the launcher pops out and the relevant icon wiggles. That is all functioning well. My problem is that the launcher pops out for maybe 5 seconds before hiding. Often times I'm typing or using the mouse on the portion of the display that is now covered by the launcher. After I've mentally received the notification is there some way to tell the launcher "I've seen this, you can go away now". Note, I'm not wanting to modify or shorten the default display time. I'd be very happy to hit 'alt-h' or some other key combination to make it go away.

    Read the article

  • screen saver issue

    - by Steven
    When i leave my pc alone for while the screens turns black which is fine, when i return and move my mouse it comes back on but my second screen stays black and my first screen has a blue overlay over the top of the unlock screen. I believe this is to do with my dual screens on gts450. screen 1 is 1920*1080 screen 2 is 1024*768 the blue over lay is on screen one and looks to be the size of screen 2 I can out the password in and press enter and then everything goes back to normal, but how do i fix this issue of a blue overlay stopping me seeing whats on screen.

    Read the article

  • Custom vs. browser-native scrollbars

    - by vemv
    Including customizable, JavaScript-based scrollbars (and scrolling functionality in general, i.e. bind the control to the mouse scroll wheel) in your webapp can be a great temptation. However all solutions I could find were developed by individuals (which can equal lack of formal or future support). In addition I fail to remember any mainstream site using them. In my particular case, no-JavaScript or IE6/odd-browser environments are not intended to be supported. Should custom scrollbars be avoided nowadays? If not, what's the best option one can choose?

    Read the article

  • Unity freezes when laptop screen is closed

    - by Giacky98
    I have an Asus laptop running Ubuntu 12.04. It's configured to do nothing when the laptop screen is closed. But sometimes, when I close the screen and when I reopen it, after I move the mouse to reactivate the screen, my Unity interface is frozen and I can't click on anything. I can move the cursor, and if there's a music playing it keeps playing, but I can't click on anything. I can open a bash shell typing Ctrl+Alt+F2, but there I don't know what to do, I can only login and type sudo reboot to reboot the machine... Is there someone that has the same problem or that knows the solution?

    Read the article

  • Server 13.10 Install Hangs

    - by noloader
    I'm trying to install Server 13.10 on some old hardware for testing (HP/Compaq dc5850, with Athlon X2 2.3 GHz dual core, 4GB RAM). The third screen is "Select Language" and the machine appears to hang. Ath e selection screen, the keyboard and mouse does not work. I integrity checked the CD and it checked out OK. I also performed a second ISO download and it cross checked with my initial download: $ md5 Desktop/ubuntu-13.10-server-amd64.iso Downloads/ubuntu-13.10-server-amd64.iso MD5 (Desktop/ubuntu-13.10-server-amd64.iso) = 4d1a8b720cdd14b76ed9410c63a00d0e MD5 (Downloads/ubuntu-13.10-server-amd64.iso) = 4d1a8b720cdd14b76ed9410c63a00d0e I was able to install Server 12.04 on the same machine. The problem with 12.04 is the OpenStack packages are too old, and I wanted to try something with fresher packages. My problem appears similar to I cannot install Ubuntu Server 12.10. The Installer hangs at the language selection, but my ISOs appear to be good and the disc appears to be good. Any ideas?

    Read the article

  • Ubuntu Crashes @ Login Screen

    - by Peter
    So, I've been having troubles with the newest Windows Installer for Ubuntu Desktop(http://www.ubuntu.com/download/desktop/windows-installer). When I start up up the operating system, i enter the login screen of Ubuntu. Everything is fine at that moment except my mouse and keyboard are frozen. Next I hear a "bongo" noise which is obviously the system looping and getting ready to crash. Soon enough, I enter a purple screen with white diagonal short lines in the background. I am then forced to unplug my desktop. Any way to fix this? Thanks!

    Read the article

  • Trouble with Graphics Settings

    - by user291775
    I recently tried to install Ubuntu 14 Lts alongside Windows XP pro on my 2005 dell dimension E510. Everything appeared to be working correctly until I tried to log in, at which point it froze with a blank color background, which would flicker to black every other time I hit a key or clicked the mouse. I then tried booting in graphical safe mode at which point it told me that it could not configure the graphics settings. Does any body know what's going on. Thank you for any suggestions.

    Read the article

  • OpenGLES 2.0 gluunProject

    - by secheung
    I've spent more time than i should trying to get my ray picking program working. I'm pretty convinced my math is solid with respect to line plane intersection, but I believe the problem lies with the changing of the mouse screen touch into 3D world space. Heres my code public void passTouchEvents(MotionEvent e){ int[] viewport = {0,0,viewportWidth,viewportHeight}; float x = e.getX(), y = viewportHeight - e.getY(); float[] pos1 = new float[4]; float[] pos2 = new float[4]; GLU.gluUnProject( x, y, 0.0f, mViewMatrix, 0, mProjectionMatrix, 0, viewport, 0, pos1, 0); GLU.gluUnProject( x, y, 1.0f, mViewMatrix, 0, mProjectionMatrix, 0, viewport, 0, pos2, 0); } Just as a reference I've tried transforming the coordinates 0,0,0 and got an offset. It would be appreciated if you would answer using opengl es 2.0 code. Thanks

    Read the article

  • Download a file over an active SSH session

    - by Oli
    So I'm SSHed into my Ubuntu server from my Ubuntu desktop. I'm at a certain path and I want to download a file to my local filesystem (preferably the path I was at before I entered the SSH session). I could mount SSH and pull the file across by mouse but what if I was trying to get a root file and logging in by root directly is disallowed? Even if that wasn't the case (it isn't now), surely there must be a simple way of pulling back a file over an active SSH connection. Surely!

    Read the article

  • Install Ubuntu on iMac 21.5" (mid 2011)

    - by Mystic Mark le Maverick
    I has a dual boot system with MacOSX 10.8.2 and Microsoft Windows 7 Home Premium x64. I would like to install Ubuntu alongside the two existing operating systems for cross platform development purposes. My System specs are listed below. iMac 21.5-inch (mid 2011) Intel Core i7 @2.80GHz AMD Radeon HD 6770M Facetime HD Internet Camera Thunderbolt port Wireless Airport adapter card Apple 8x Superdrive Apple Magic Mouse and wired keyboard with numeric keypad Will rEFIt install properly on my machine too? Thanks you very much for the help.

    Read the article

  • Ubuntu freezing after boot

    - by jbm1991
    I have ubuntu 12.04 LTS dual booting with windows 7 on my laptop without any problems and felt like doing the same on my desktop. However now that I have installed Ubuntu on the desktop through Wubi, if I boot into ubuntu the log in screen is as far as I get. I see my username and the password box but everything is completely unresponsive. I can move the mouse around the screen fine I just can't click on anything and the keyboard doesn't seem to work at all as I've tried a few shortcuts and there's no response at all. I have done a some searches and I think it's a driver issue but I don't know how to fix them as I'm pretty new to ubuntu and cannot log in at all. Desktop specs if needed: Intel core i7 2700k, NVidia GTX 580, 8GB RAM. Thanks in advance

    Read the article

  • laptop screen goes blank after waking from sleep

    - by Tojo Chacko
    I have been facing this issue from the last week after some update. Whenever my laptop wakes up from suspend state it just shows me a blank screen. Regardless of whatever I do(move my mouse, press keyboard buttons) it just refuses to wake up. I am forced to do a restart and lose all my unsaved files. Has this issue been reported for Ubuntu 12.04? I am using a Lenovo X200 with Intel Mobile 4 Series Graphics Chipset. Please let me know if any body has found a fix for this.

    Read the article

  • Really, Mobile Devices will Take Over the World?

    - by p.gielens
    My blog has been quiet for quite a while. My inspiration comes from crunching/exchanging information which I should do more often. Gartner analysis tells us that by 2013 mobile phones will overtake PC’s as the most common Web access device worldwide. A few years back I would have said non sense, but apparently most Web users are comfortable with less processing power. Just take a look at the increasing business in Netbooks. Wouldn’t it be great to have a mobile phone which can connect wirelessly to my home TV, monitor, car display, mouse, keyboard, etc? And to have the processing power of the current Netbook generation? Where can I buy it? Why are we making our PC devices (for instance the slate) smaller while we can make our mobile device’s functionality bigger? What about the single responsibility principle? Does it apply to physical devices as well as good object-oriented software?

    Read the article

  • configuring separate X screens instead of TwinView

    - by fimre
    My Sony Vaio laptop is connected to an external Samsung monitor and my nVidia driver is configured in TwinView mode. Everything is OK with this, however, I can not adjust my displays individually so at the moment my external display is a little bit darker which disturbs me a lot. I tried the Separate X Screen mode but after restart, my laptop display was white with a black x sign mouse pointer and the external display normal desktop. Is it a bug or something I missed? The idea is that using Separate X Screen mode, I could adjust my displays individually. I would really appreciate someone would guide me out of this situation. Thanx in adv..

    Read the article

  • Checking All Checkboxes in a GridView Using jQuery

    In May 2006 I wrote two articles that showed how to add a column of checkboxes to a GridView and offer the ability for users to check (or uncheck) all checkboxes in the column with a single click of the mouse. The first article, Checking All CheckBoxes in a GridView, showed how to add "Check All" and "Uncheck All" buttons to the page above the GridView that, when clicked, checked or unchecked all of the checkboxes. The second article, Checking All CheckBoxes in a GridView Using Client-Side Script and a Check All CheckBox, detailed how to add a checkbox to the checkbox column in the grid's header row that would check or uncheck all checkboxes in the column.

    Read the article

  • Installing programs from a download

    - by user7274
    Hello, my name is Anthony and I'm new to Ubuntu and any other Linux OS for that matter. My question concerns downloading a program, and then installing it. The program is called Remotedroid, it lets you use your phone as a wireless keyboard and mouse. I'm use to windows automatically starting setup upon download and cant figure out how to initiate the install in Ubuntu. The programs website says its compatible with Linux OS and the readme file says to just click the extension remotedroidserver.jar to use, but it wont work and none of the files do anything. I've unzipped all the files and my Java is all up to date as far as i know, I think. I'm just not getting how to run a setup in Ubuntu. I looked around this site for the answer but came up with nothing so if someone could maybe offer some insight I would be grateful. Thank you.

    Read the article

  • Rotate 2d sprite towards pointer

    - by Phil
    I'm using Crafty.js and am trying to point a sprite towards the mouse pointer. I have a function for getting the degree between two points and I'm pretty sure it works mathematically (I have it under unit tests). At least it responds that the degree between { 0,0} and {1,1} is 45, which seems right. However, when I set the sprite rotation to the returned degree, it's just wrong all the time. If I manually set it to 90, 45, etc, it gets the right direction.. I have a jsfiddle that shows what I've done so far. Any ideas?

    Read the article

  • How to set up dual wired and wireless connections?

    - by Col
    My laptop has both wireless and a wired connection capabilities. Can I connect to a router A using wireless and a separate router B using wired ethernet at the same time without having to switch back and forth? Thanks for replying so quickly. I wish to connect to two separate networks. The wireless connection is to router A which is connected to broadband internet. The wired connection is to router B which I wish to share files and a printer on 1 or 2 other desktops also using wired connections on B and maybe using synergy to have only one keyboard and mouse for 2 desktops. The wireless laptop is the only one required to have internet access.

    Read the article

  • Stumbling Through: Visual Studio 2010 (Part III)

    The last post ended with us just getting started on stumbling into text template file customization, a task that required a Visual Studio extension (Tangible T4 Editor) to even have a chance at completing.  Despite the benefits of the Tangible T4 Editor, I still had a hard time putting together a solid text template that would be easy to explain.  This is mostly due to the way the files allow you to mix code (encapsulated in <# #>) with straight-up text to generate.  It is effective to be sure, but not very readable.  Nevertheless, I will try and explain what was accomplished in my custom tt file, though the details of which are not really the point of this article (my way of saying dont criticize my crappy code, and certainly dont use it in any somewhat real application.  You may become dumber just by looking at this code.  You have been warned really the footnote I should put at the end of all of my blog posts). To begin with, there were two basic requirements that I needed the code generator to satisfy:  Reading one to many entity framework files, and using the entities that were found to write one to many class files.  Thankfully, using the Entity Object Generator as a starting point gave us an example on how to do exactly that by using the MetadataLoader and EntityFrameworkTemplateFileManager you include references to these items and use them like so: // Instantiate an entity framework file reader and file writer MetadataLoader loader = new MetadataLoader(this); EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this); // Load the entity model metadata workspace MetadataWorkspace metadataWorkspace = null; bool allMetadataLoaded =loader.TryLoadAllMetadata("MFL.tt", out metadataWorkspace); EdmItemCollection ItemCollection = (EdmItemCollection)metadataWorkspace.GetItemCollection(DataSpace.CSpace); // Create an IO class to contain the 'get' methods for all entities in the model fileManager.StartNewFile("MFL.IO.gen.cs"); Next, we want to be able to loop through all of the entities found in the model, and then each property for each entity so we can generate classes and methods for each.  The code for that is blissfully simple: // Iterate through each entity in the model foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name)) {     // Iterate through each primitive property of the entity     foreach (EdmProperty edmProperty in entity.Properties.Where(p => p.TypeUsage.EdmType is PrimitiveType && p.DeclaringType == entity))     {         // TODO:  Create properties     }     // Iterate through each relationship of the entity     foreach (NavigationProperty navProperty in entity.NavigationProperties.Where(np => np.DeclaringType == entity))     {         // TODO:  Create associations     } } There really isnt anything more advanced than that going on in the text template the only thing I had to blunder through was realizing that if you want the generator to interpret a line of code (such as our iterations above), you need to enclose the code in <# and #> while if you want the generator to interpret the VALUE of code, such as putting the entity name into the class name, you need to enclose the code in <#= and #> like so: public partial class <#=entity.Name#> To make a long story short, I did a lot of repetition of the above to come up with a text template that generates a class for each entity based on its properties, and a set of IO methods for each entity based on its relationships.  The two work together to provide lazy-loading for hierarchical data (such getting Team.Players) so it should be pretty intuitive to use on a front-end.  This text template is available here you can tweak the inputFiles array to load one or many different edmx models and generate the basic xml IO and class files, though it will probably only work correctly in the simplest of cases, like our MFL model described in the previous post.  Additionally, there is no validation, logging or error handling which is something I want to handle later by stumbling through the enterprise library 5.0. The code that gets generated isnt anything special, though using the LINQ to XML feature was something very new and exciting for me I had only worked with XML in the past using the DOM or XML Reader objects along with XPath, and the LINQ to XML model is just so much more elegant and supposedly efficient (something to test later).  For example, the following code was generated to create a Player object for each Player node in the XML:         return from element in GetXmlData(_PlayerDataFile).Descendants("Player")             select new Player             {                 Id = int.Parse(element.Attribute("Id").Value)                 ,ParentName = element.Parent.Name.LocalName                 ,ParentId = long.Parse(element.Parent.Attribute("Id").Value)                 ,Name = element.Attribute("Name").Value                 ,PositionId = int.Parse(element.Attribute("PositionId").Value)             }; It is all done in one line of code, no looping needed.  Even though GetXmlData loads the entire xml file just like the old XML DOM approach would have, it is supposed to be much less resource intensive.  I will definitely put that to the test after we develop a user interface for getting at this data.  Speaking of the data where IS the data?  Weve put together a pretty model and a bunch of code around it, but we dont have any data to speak of.  We can certainly drop to our favorite XML editor and crank out some data, but if it doesnt totally match our model, it will not load correctly.  To help with this, Ive built in a method to generate xml at any given layer in the hierarchy.  So for us to get the closest possible thing to real data, wed need to invoke MFL.IO.GenerateTeamXML and save the results to file.  Doing so should get us something that looks like this: <Team Id="0" Name="0">   <Player Id="0" Name="0" PositionId="0">     <Statistic Id="0" PassYards="0" RushYards="0" Year="0" />   </Player> </Team> Sadly, it is missing the Positions node (havent thought of a way to generate lookup xml yet) and the data itself isnt quite realistic (well, as realistic as MFL data can be anyway).  Lets manually remedy that for now to give us a decent starter set of data.  Note that this is TWO xml files Lookups.xml and Teams.xml: <Lookups Id=0>   <Position Id="0" Name="Quarterback"/>   <Position Id="1" Name="Runningback"/> </Lookups> <Teams Id=0>   <Team Id="0" Name="Chicago">     <Player Id="0" Name="QB Bears" PositionId="0">       <Statistic Id="0" PassYards="4000" RushYards="120" Year="2008" />       <Statistic Id="1" PassYards="4200" RushYards="180" Year="2009" />     </Player>     <Player Id="1" Name="RB Bears" PositionId="1">       <Statistic Id="2" PassYards="0" RushYards="800" Year="2007" />       <Statistic Id="3" PassYards="0" RushYards="1200" Year="2008" />       <Statistic Id="4" PassYards="3" RushYards="1450" Year="2009" />     </Player>   </Team> </Teams> Ok, so we have some data, we have a way to read/write that data and we have a friendly way of representing that data.  Now, what remains is the part that I have been looking forward to the most: present the data to the user and give them the ability to add/update/delete, and doing so in a way that is very intuitive (easy) from a development standpoint.Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here.

    Read the article

< Previous Page | 228 229 230 231 232 233 234 235 236 237 238 239  | Next Page >