Announcing a Xamarin-based interactive development tool for iOS/Android/Windows Phone/RT/..

ChrisHonselaarChrisHonselaar NLBeta ✭✭✭

Just a teaser for something that I hope will be of interest to all of you cross-platform .Net devs :)

I started developing a tool (working name ‘Protopad’) recently, and initially for internal use, as part of a (also eventually open sourced and free) larger toolchain/framework for Xamarin/.Net based cross-platform (mobile) development. There is no project page yet (will put one up soon on GitHub, once the code is sufficiently cleaned up and some more core functionality added), but I have attached screenshots. In part the tool is inspired by LinqPad, but instead it focuses on interactively running your code on remote (mobile) devices or simulators.

Main features of Protopad (as of now):

  • Real-time interactive development / prototyping with full access to the entire c# language and .Net/Mono framework on mobile devices, including iPhone/iPad (simulator)!
  • Ability to fully interact with running apps on a code-level, inspect their state directly without a debugger, without having to open Visual Studio or Xamarin Studio, and change their operation by mixing in new code on the fly. All without building, deploying, relaunching etc.. it’s immediate.
  • Advanced code editor with full IntelliPrompt etc support for .Net/Xamarin.iOS/Xamarin.Android/etc frameworks (automatically deduced from the device you connect to)
  • Friendly indication of compile- and runtime-errors:

  • Ability to inspect any object/value inline by using a “.Dump()” extension method – the result of which is presented as an interactive, collapsible nested data view that includes optimized displays for collections, objects and value types.

  • Ability to Dump a Bitmap (or UIImage) and see this in ProtoPad’s interactive result view – very useful for image processing.
  • Ability to send any (device framework compatible) assembly to the device, and have it be accessible from code you send immediately
  • Auto-discovers running “Protopad-enabled” apps on devices/simulators on your local network (through network multicast functionality), and allows you to select and connect to them
  • A simple, light-weight assembly that you can use to add Protopad functionality to any of your existing .Net (iOS/Android/etc) apps, so that you can easily deep-inspect that app without breakpoints/pausing etc, and even modify it on the fly to rapidly prototype changes.
  • Friendly statusbar indicator of the local filesystem location of the connected app (when running on a simulator), so that you can find and access your live running app’s files easily (see screenshot 1, having the OS/X simulator files location mapped to a Windows share makes it really easy to prototype functionality that interacts with the iOS filesystem!)
  • Easily clear your app’s main view with one click (so you can do quick full interface make-overs)

In screenshot 1 you can plainly see how this setup works – on the left Protopad, with code that I just sent (with one click) to the running iOS simulator on the right (running on an old headless Mac Mini, connected through TeamViewer so that we can easily isolate the simulator window). The top half of ProtoPad is the code editor with a toolbar for letting this code interact with the app. The bottom half is the Result View – any Dumped value/object/image is displayed there in a friendly manner. Working like this feels like magic, especially in the restricted iOS space. You can discover the Cocoa/Xamarin.iOS frameworks through autocompletion easily, experiment directly with any type of code or snippet and see the result immediately (within milliseconds)

Planned functionality:

  • ProtoPad editor/client app for Mac OS/X (Windows only for now, sorry, working on it!)
  • Windows RT and Windows Phone compatibility
  • Ability to connect to an SQLite database used by the app, inspect and change its data and schema on the fly
  • Direct access to app files (useful for non-simulator sessions, or when you do not want to set up network shares for this)
  • Snippet repository and potentially integration with snippets on the Xamarin website?
  • Full integration with the larger framework that I am developing – which allows you to do MVVM style development with automatic binding+dependency tracking, with a view abstraction layer that allows you to achieve 100% code reuse if desired across all supported platforms (iOS/Android/Windows RT/Windows Phone/HTML5+Javascript offline/more TBA). It even allows you to generate fully offline HTML5/javascript applications from the exact same .Net codebase (no server necessary at all – the unique part I think). This framework is already fully functional and used internally, it just needs clean-up and adding lots of ready-to-use components, after which I will share it on GitHub. This framework will also allow you to use ProtoPad to quickly develop/prototype very complex applications. I will share a preview soon-ish. Please note that this project is very different in scope and approach compared to similar frameworks like MonoCross/iFactr and MvvmCross (both amazing projects!).
  • And more to come..

I will make ProtoPad (both client and server components) available for free and in open source form. Similar to LinqPad, I am considering a small fee for use of autocompletion functionality in the editor (and supporting this effort in general). Curious for feedback on what, if any, amount you would find reasonable for that.

«1

Posts

  • RobertSalitaRobertSalita USMember ✭✭

    I'm still searching for the missing links of mobile et al programming; one language to rule them all (C#), one IDE to rule them all (Visual Studio), one designer to ..., one MVVM to ...

    Here's to hoping you are the guy to do it!

  • StuartLodgeStuartLodge USBeta ✭✭✭

    Thanks for the teaser :)

    :)

    :)

    Curious for feedback on what, if any, amount you would find reasonable for that.

    As an indie dev, I've happily paid the LinqPad fee - so that's in the right 'ballpark' for me.

    Would love to see an addin API supported too - I want to add binding attributes for MvvmCross :)

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭
    edited April 2013

    Hey Stuart! Thanks for your feedback! :)

    It would be an honor to work with you on that.

    My thinking currently is that I will open up both projects (ProtoPad and Carnival, the tentative name for my Mvvm framework) completely, and I will welcome any and all useful contributions. And I definitely would love to collaborate with other projects in the Xamarin space.

    To clarify about the framework part: the main conceptual difference between Carnival and MvvmCross, besides the ability to generate offline HTML5 apps, is that Carnival is made for code-first view creation. This is what makes 90%-100% code reuse possible (you can still add any amount of platform-specific UI/code/etc of course). As such, it does not really fit with XIB etc centric workflows. MvvmCross's strength is in supporting normal platform-specific view creation, while keeping most other layers platform agnostic. So I see these frameworks fulfilling different niches.

    The idea for ProtoPad originated from my need to have a way of interactively designing an application with a code-built view. This is very easy with ProtoPad, and the cool thing is that you can even style applications using a simple CSS-like construct, also 'interactively'.
    Only after that did I realize how much fun it is to have a tool that enables you to code interactively for iOS, without going through lengthy compilation/build/deploy cycles. It really surprised me that this was even possible (and easy too, thanks to you awesome Xamarin folks!)

    If you like, shoot me a PM and we could sync up any time (preferably after this week, it's crazy busy). Cheers!

  • StuartLodgeStuartLodge USBeta ✭✭✭

    No need to clarify about carnival - I'm going out of my way to get more frameworks onto cross-platform - it's much more important to work on co-operation rather than competition :)

    On the designer - mvvm integration I'm also happy to talk in public too :)

    My idea/request for the Xam designer was along the lines of:

    Can the XIB integration somehow have 'custom attribute' fields added - ideally my outlet references could be generated like

    >

     [Outlet]
      [Bind("Text Customer.Name")]
      public UILabel CustomerLabel { get;set; }
    

    >

    or maybe easier to implement as:

    >

     [Outlet]
     [Custom("Bind: Text Customer.Name")]
     public UILabel CustomerLabel { get;set; }
    

    >

    This is obviously useful for Mvx - but might be useful for other libraries like MT.D too

    If you can provide some form of attribute and/or code injection with each UI field, then I'm sure we can work out a way to bind to it :) Cross-platform it might be harder to do this - but it'll probably be simple enough for simple UI fields - label, textbox, imageview, etc.

    we could sync up any time (preferably after this week, it's crazy busy)

    Preferably week after next :)

    Stuart

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭

    @StuartLodge - of course, you must be really busy with Evolve coming up! I really wish I could attend :-(

    Agreed on keeping the discussion public, good idea.

    Regarding designer/bindings: it might be better for me to show the code and principles first - the point being that bindings in Carnival are generated dynamically from code, as are all controls. ProtoPad will not include a graphic designer, because it does not really make sense within this framework. I thought about having a XAML-based cross-platform UI designer initially, but since most platforms have very different UI metaphors, its application would be extremely limited.
    Instead, I intend to make it really easy to 'design from code'. You set up an abstract view structure, which is platform agnostic, using abstract view components that in turn render into platform-specific components consisting of native controls. Then you style those at cross-platform and/or platform-specific levels using a mini-CSS-like DSL, and finetune/test/restyle interactively using ProtoPad. Or you can develop from ProtoPad entirely, on the fly.

    This is kind of similar to how you might throw up a basic HTML/CSS site structure from TextMate or what have you, and then finetune using Webinspector/Firebug. Carnival and Protopad together should enable the same kind of rapid workflow for developing cross-platform apps.

  • softlionsoftlion FRBeta ✭✭✭

    And you really have a fully working app using your framework ?
    Is it working with custom controls ? And fragments ? And action bars ?
    I could make a tool to convert existing axml files !

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭

    The framework was/is constructed as the underpinning of a very large, complex and feature rich ultra-crossplatform app that I am building. Currently this is an HTML5 app (in beta at http://www.omnidu.nl, sorry Dutch only for now), usable online from any browser, but also being published to the Apple App store as a hybrid app shortly. But because of severely lacking/fragmented advanced HTML5/CSS3 support in Android and Windows Phone/RT, I found the need to create a framework that would allow me to share one codebase with HTML5 AND native controls support, if only for Android etc. I also wanted this codebase to be C#. Additionally, it was important that even view layers would be derived from one central codebase as much as possible, simply because I have so many relatively complex views, that also change a lot because features/fields etc will be added all the time. Because of all this, none of the frameworks on offer really worked for me.

    Short answer: yes, I have fully working apps using the framework. Yes, it works with whatever custom control you like (in fact, it is DESIGNED to make it easy to have your own controls), including action bars etc of course.
    Conversion from XAML files could be a cool idea, and one that I have toyed with myself, just have to think it through. The part of the framework that really needs more work right now is the cross-platform+platform-specific component styling. I am using a simple CSS-like construct for this, but am struggling with responsive layouts versus intentional fixed positioning. Which is kind of a historical struggle for GUI designers in general of course, and certainly not something that I will have a definitive solution for, but I want I would like to get a good compromise on ease of use versus flexibility there.

  • StuartLodgeStuartLodge USBeta ✭✭✭

    @ChrisHonselaar I'm starting to get clear of stuff now :)

    When can we get a drop to experiment with? I like (love?) the idea of rapid UI layout iteration - and there are lots of us who've got plenty of experience (good and bad) with 'cross-platform+platform-specific' stuff.

    Let us know how we can help

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭

    @StuartLodge cool!
    I wish I could accelerate a bit on my part. But am finding myself really bogged down with deadlines right now. I will still drop the code ASAP, without necessarily adding everything I wanted, or doing all the cleanup. Just so I can get all of your eyeballs on this sooner, and get more early criticism in that may help me with direction. I expect to drop Protopad on Github over the weekend, and Carnival within two weeks. I will share some code examples to illustrate the concepts behind Carnival over this weekend.

  • irombeachirombeach ITMember

    Nice project! compliments

  • Bewolf2Bewolf2 KHMember, Beta

    Cant wait to try it out!
    For code only ui, it's painful to have to re-compile whole app just to check if one button is in right position. A "Real-time interactive development / prototyping" tool? That sounds like dream come true :)

  • StuartLodgeStuartLodge USBeta ✭✭✭

    almost there... having problems with IndicatorClassificationTaggerBase and IIndicatorTag - which could be because my license for Actipro is quite old now

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭

    Ha! You got me ;) Thanks for the enthusiasm :)

    Please do not use that drop yet! It was just me experimenting with some new Git tooling. I am pretty sure that this 'commit' does not even build much less run. I have been making a lot of changes and adding things like automatically configuring port forwarding on AVDs, pseudo-debugging, some basic documentation, etc.
    I had double dad duty this weekend and still struggling with some flulike thing, am trying to get ProtoPad ready for you all tonight. Thanks for the patience all!

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭

    Still working on it!
    I hit a bit of a snag on further testing with the Android side of things. I encountered a weird Xamarin.Android bug that had me puzzled for a while (https://bugzilla.xamarin.com/show_bug.cgi?id=11950), and inconsistencies with DataContractJsonSerializer (I removed dependencies on external JSON libraries), among other things.

    But overall things are looking good again now.
    You may also be glad to hear that I am making all parts available free of charge, and open sourcing all of it!
    Now to get the last bits ready.. (I am pretty much an OSS publishing virgin, so please bear with me! This stuff takes huge chunks of time)

  • Bewolf2Bewolf2 KHMember, Beta

    Will ProtoPad supports VS 2010?

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭
    edited April 2013

    ProtoPad functions independently from Visual Studio, you do not need to have any version of VS installed. This is what makes it such a quick tool to try things out :)
    Look at it as (a basic) Linqpad with the ability to send and run code on iOS and Android in real time, and inspect the running state of your app.

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭

    Finally:
    https://github.com/chrishonselaar/ProtoPad

    More details tomorrow.

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭
    edited April 2013

    So yes, sorry about the delay - real life got in the way and some details that needed to be ironed out after further Android and iOS testing turned out to be not as trivial as I hoped.
    But ProtoPad is available now!

    It is a pretty early release, but at a stage where I feel it is ready for testing more broadly and getting a feel for how you guys/girls like the concept behind ProtoPad, and what direction it should take. There are instructions and everything should be good to go. I have been using ProtoPad myself for quite some time now (quickly hacking out interface concepts etc).

    ProtoPad is intended as a VERY open project - anyone should feel welcome to work on any of the items in the 'planned features' list if they want. Might be good to drop me a quick message so that we can avoid duplicating work.
    I am also fairly new to sharing Open Source projects. If you have constructive criticism regarding structuring, GitHub procedure, etc, let me know, I would be grateful.

    The GitHub README should contain everything you need to get started. In case you are in doubt, contact me, or indeed consult the code. It's not hugely complicated and the amount of code is actually pretty small. I am working on further expanding the instructions.

    Ready-to-use binaries are provided in the Builds directory. These come with everything you need included (including DLL's that you can include in your mobile apps)

    If you want to build and work with the code itself, the only real external dependency right now is the ActiPro SyntaxEditor component. The same component that the LinqPad editor is based on. You can download an evaluation version of it (pick the WPF version). Make sure you upgrade to the latest version if you already have it installed.

    It would be fairly easy to create a version of ProtoPad that does not rely on this component (you could use a plain text field or something like Scintilla.Net). But you would lose the very nice advanced Visual-Studio like editing features (autocompletion, highlighting, collapsible sections, hints, etc) that the SyntaxEditor provides. And that is kind of key to the 'interactie development' experience with ProtoPad. You can discover API's on the fly, and immediately try them out.
    Unfortunately there seems to be no open source editor component that comes close to it (potentially SharpDevelop could be integrated somehow, but this would be extremely non-trivial and add a sizeable binary payload I think).

    Please try it out, have fun (I know I do!) and share your feedback.

    @StuartLodge - currently working hard to get 'Carnival' in a fit state to publish as well. Let me know if you see ways of integrating ProtoPad with MvvmCross too. Would be glad to think along there.

  • Bewolf2Bewolf2 KHMember, Beta

    Awesome news! Congratulation for the first release!

    One issue found: in EditorHelpers class, there're hardcoded path of "C:\Program Files (x86)\", which only exist on x64 win.

    If you are still using 32 bit windows, you can workaround this by make a symbolic link:
    mklink /D "Program Files (x86)" "Program Files"

    But I always get "Exception has been thrown by the target of an invocation." after connected to running iOS simulator. Guess I might have to download the evaluation version of systaxeditor and start debugging.

  • Bewolf2Bewolf2 KHMember, Beta

    Well, I found why I get "Exception has been thrown by the target of an invocation."
    I have several versions of MonoTouch dlls under "Reference Assemblies\Microsoft\Framework\MonoTouch", after clean up this folder (only leave newest v4.0 folder there), the exception goes away!

    Still playing around, very exciting to start using xibfree with protopad. And can live testing full ios/monotouch api, it's stunning! Thanks again for such a great tool!

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭

    @Bewolf2 - Glad to hear you like it and thanks for the kind feedback!!

    These issues had to do with a ill-advised shortcut I took in resolving Xamarin assembly paths. I have pushed new updates where it's done in what I think is the 'proper' way - by leveraging the assembly resolving process in MSBuild - this should always be the most accurate way, even when several Xamarin/Monotouch/Monodroid installations exist.

    I have fixed a bunch of other issues as well - speed is greatly increased (any typing lag should be gone now), and switching between iOS/Android and 'Local' modes now works better.

    Most exciting of all I think is the new Pixate integration that was added!!
    Pixate is a really nifty framework that allows you to use fancy CSS styling on native iOS controls. In real time! This was such a great fit for ProtoPad that I could not let this rest.
    Check the Pixate Sample project - when you start that and connect to it from the new ProtoPad client, it will allow you to edit the Pixate CSS file, and update it directly! This will immediately reflect in your interface. Of course you can use ProtoPad as usual to add and manipulate controls on the fly - and these controls will also obey to the Pixate CSS!
    When connected to a Pixate-enabled app, ProtoPad adds .SetStyleId, .SetStyleClass and .SetStyleCSS extension methods to your native controls.

    Check here for more details on how this works:
    http://pixate.github.io/MonoTouch-Pixate/

  • Bewolf2Bewolf2 KHMember, Beta

    The newest updated did fixed the assembly paths problem. Now I can continue use old MonoDevAssit without worrying about MonoTouch versions.

    And I like the Pixate integration. Though I'm not using Pixate, but now I can plugin in NUI (https://github.com/tombenner/nui) as replacement of Pixate without change one line of code of ProtoPad Client. Live tunning CSS with ProtoPad Client is fun!

  • Bewolf2Bewolf2 KHMember, Beta

    Got one question: How to use "Using" keyword in ProtoPad Client?
    When I referenced an external assembly, I have to use full namespace like:
    var a = new NameSpace1.SubNameSpace2.ClassName();

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭

    Editing Using statements is on the todo-list, although I have already made some preparations for it as you'll see in te source. Please feel free to jump in there and add it! I would be very grateful and this is the way I would like this project to grow. Basically all you need is a popup window with a textbox where you can update Usings, and plug that into the GetWrapText() method in EditorHelpers

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭

    By the way, nice going with XibFree! It actually has some parallels with view construction in Carnival. Hope we can cross-pollinate there a bit :)

  • Bewolf2Bewolf2 KHMember, Beta

    I added "Using" support on my fork here https://github.com/Bewolf2/ProtoPad/tree/UsingAndSources

    And added "C# Source" mode to unhoad the magic of ProtoPad, to make it easy to add custom class. Also can select extra source files to compile togeter. (But I can't figure out how to setup SyntaxEditor to recognize additional source files to support IntelliPrompt)

    Btw, I'm wondering if there's any decent open source alternative to SyntaxEditor? Not to say SyntaxEditor is not a great product (it's indeed), but since there's no Non-Commercial edition , just don't know how to continue working on ProtoPad source after evaluation period). Of course there's always option to purchase copy of SyntaxEditor, but It's a little expensive for me :(

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭

    @Bewolf2 - that is great!! You are really fast. Thank you so much!

    Few comments (just thinking out loud): I think we should consider moving the Usings tab to a popup window, same as LinqPad. It saves screenspace and makes the interface less cluttered and less potentially daunting to newcomers. I think those are the reasons that LinqPad has it in a popup window anyway. What do you think? Also might be good to simply combine the DefaultUsings and ExtraUsings windows - just let users simply change the whole thing at once, same as LinqPad.

    Regarding Extra Source Files - great idea, and something I do kind of wish was actually part of LinqPad, since it allows you to work with more complex project types. I would however also move that to the popup window, same as Using..? Hope I don't come over as overly picky ;)
    I absolutely love these changes and cannot wait to merge them in.

    Setting up SyntaxEditor to support auto-completion for external source files: I guess what you could do is do a quick pre-run of MainWindow.CompileSource() after changes to the 'Extra Source Files', and add the resulting assembly as a reference in MainWindow.LoadEditorReferences(). This should yield full intellisense for all extra source files.

    About alternatives to SyntaxEditor - agreed, this is an important point. And yes, there are a few open-source editors. I did quite a bit of research before selecting ActiPro, because I really would have preferred to use an open source component. Unfortunately none of the available options come close in terms of functionality and ease of use. The main contenders are Avalon (the editor component of SharpDevelop) and Scintilla.Net. Avalon seems more powerful but less easy to use and slower than Scintilla. But that is based on hearsay, not actual experience on my part. What I would like to do is create a branch of ProtoPad, or a mirror project, that uses either Scintilla or Avalon as the editor instead of ActiPro. Other than that all of the ProtoPad source code would be shared. This way other developers who do not have an ActiPro license could easily work on ProtoPad, and their work could still be merged into the ActiPro version as well. I do want to keep an ActiPro version around, because it's just so powerful and enables great functionality like the document fragments (which is what ProtoPad uses to hide all of the extraneous (Usings etc) code and just focus on the snippet itself).

    What I am working on myself right now is a web-based version of ProtoPad, which will run on Mac OS/X machines as well (or even Linux). I was planning to tackle the alternative Avalon/Scintilla version after that, but that may take a few weeks. But ff you feel like working on that, be my guest!! Again, would be extremely appreciated. I do not really see ProtoPad as 'mine' but more of a cool concept that anyone could have come up with, and that is essentially owned by the community as far as I'm concerned ;)
    I will send you a quick PM with some contact details, should you want to have a real-time quick chat anytime.

    Again, cheers and thanks!!

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭
    edited May 2013

    @Bewolf2, thanks for sending your email as well.

    I did have a further look into Avalon and Scintilla.Net as open source alternatives. But even something so basic as proper auto-completion would seem difficult with those components, without making a project out of that in and of itself. While it’s true that they both have extension options for basic auto-completion, this is just really primitive keyword-based dropdowns. You need a parser, resolver and a lot more to do proper IntelliSense.

    I did stumble across this project:

    https://github.com/lukebuehler/NRefactory-Completion-Sample

    This actually seems to get quite close to the goal of having IntelliSense-like autocompletion with the Avalon editor! Very cool. I think I could be happy with this in an alternative branch of ProtoPad, as long as the bugs are not too bad and we can somehow get the document fragment editing magic to work with it as well (like we have with ActiPro).

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭

    Quick update from the guys from Pixate: they like ProtoPad and will feature it on their site :)

  • Bewolf2Bewolf2 KHMember, Beta

    Here's simple demo of what you can do combing ProtoPad with XibFree:

    On Mac, start the XibFree base app in emulator:

    That's the UI for tunning:

    Then fire up ProtoPad on PC, modify your UI code, press run:

    You get new UI in emulator:

    That's fun!

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭

    That is very cool. Rebuilding entire interfaces on the fly by injecting code.. Thanks for sharing a nice showcase of what can be done with the ProtoPad concept!

  • J.P.ParkJ.P.Park KRMember

    Thank you for your great job! I believe ProtoPad can create more spare-time for everyone!

  • StuartLodgeStuartLodge USBeta ✭✭✭

    I reckon we should somehow prioritise getting the final step of the 'getting started' written.

    You've improved a lot now so that you can download the prebuilt-exes and the sample projects... but I think you still need:

    • here's a first Android script to run
    • here's a first iOS script to run

    A screencast of this would also help...

    ... but a screencast plus an article of some type would really help...

    If this already exists somewhere... then please just make it more obvious - the readme currently just leaves it empty.

    This is all just my opinion - and it partly comes from me being too busy for playing right now - I just need simple steps to follow :) Sorry... I just ran out of time - so won't get this ready to demo tomorrow now - sorry!

    If you guys don't get on it before then, then I'll try to write something late this week (Thursday or Friday)

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭

    @Slodge - I want to do a screencast+article, but am prioritising the little time I have right now on the web-based version, so that Mac OS X users can use ProtoPad as well.

    But to get started, the steps in te readme.md should be all you need right now. Unless you are running into issues?
    Sample scripts ARE in fact included - as soon as you connect to an iOS or Android app, the editor will show sample code that you can simply uncomment and run. These sample scripts demonstrate a lot of the features - such as object inspection, image dumps, adding new controls dynamically, etc.

    If you're still getting stuck with the readme.md info and sample scripts, could you give a bit more info?

    I lost track of the calendar (aarg busy busy busy) but I think you're organizing the MvvmCross event tomorrow, right? Wishing you a lot of fun!! Hope it is a huge success. :-D So great that you're doing this. I have been talking to Xamarin and I would like to do something similar in the Netherlands perhaps, would be great to hear your experience.

    It would have been great if you could do a short demo of ProtoPad, but I can hardly ask you to invest time in that. BUT - if there is ANYTHING I can do to help you, let me know. I could give you a really short demo over TeamViewer or Skype. Will PM you with private info.

  • J.P.ParkJ.P.Park KRMember

    Do you think about plugin? If ProtoPad has plugin shape, it will not need specific editing library such as actipro WPF. If that is, of course we can use full-featured visual studio or xamarin studio editing. Now I'm going to make visual studio plugin. If you like this, I can commit it when It had done.

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭
    edited May 2013

    @mono.developer.kr - yes, good thinking, and in fact I did already put in quite some time in researching this option. It's definitely worthwhile, and a promising alternative for developers who feel most comfortable staying within Visual-Studio/Resharper. VS should be able to supply everything necessary for this scenario.

    The one thing that I really struggled with during my research, was how to set up a 'Document Fragment' editing mode like we have with ActiPro (this is how we can show only the contents of a method in the editor, while still retaining full autocompletion etc.). To set this up in Visual Studio, your only real options seems to be to implement Projection Buffers:

    http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/e536bce3-30f9-4e7f-b322-b3835a487bb0

    Unfortunately, this is pretty badly documented and quite complex. That is essentially what stopped me :) If you feel more comfortable with this, or would like to try it out without document fragment editing even, please be my guest. As I said, I welcome all contributions! ProtoPad is just a tool and you should feel free to modify it any way that suits you, and even better if you share that with others.

    For the way I work personally, I like having a lightweight application around like ProtoPad in its current form, that you can just run and start using immediately. It's the same idea as with the awesome LinqPad.
    But I totally do see a lot of value in a Visual Studio Plugin version as well - especially for projects that get a bit larger.

  • ChrisHonselaarChrisHonselaar NLBeta ✭✭✭

    Should you want to look into Projection Buffers - I did eventually find an open source project leveraging them - the REPL window in pytools VS. You can see the code in action here:
    http://pytools.codeplex.com/SourceControl/latest#Release/Product/Python/ReplWindow/Repl/ReplWindow.cs

    Even after hours of frantic searching, I never managed to find any other code sample that actually utilized the IProjectionBuffer interface.

  • AttilaHAttilaH HUMember

    Chris, what's up with ProtoPad? it was not updated in 11 months ;-(

  • CheesebaronCheesebaron DKInsider, University mod

    @AttilaH‌ I think he wrote in another post that he ran into some personal issues, so that might be what is up.

Sign In or Register to comment.